现在的位置: 首页 > 综合 > 正文

MFC 凌乱的一地

2013年11月26日 ⁄ 综合 ⁄ 共 5474字 ⁄ 字号 评论关闭

UpdateData

UpdateData() 是MFC的窗口函数,用来刷新数据的
UpdateData()参数只有一个,默认为TRUE。  UpdateData(TRUE)
  ——刷新控件的值到对应的变量。(外部输入值交给内部变量)  即:控件的值—>变量。  UpdateData(FALSE)
  —— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)  即:变量值—>控件显示。
  例如,窗口中用 DDX_Text(pDX,
IDC_EDIT1, m_usercode);

  将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);

  简单地说,如果Updatedata(TRUE) == 将控件的值赋值给成员变量,即从窗口编辑框中读入数据;Updatedata(FALSE) == 将成员变量的值赋值给控件,将数据从窗口显示。


CEdit::GetSel

DWORD GetSel( ) const;

void GetSel( int& nStartChar, int& nEndChar ) const;

返回值

The version that returns a DWORD returns a value that contains the starting position in the low-order word and the position of the first nonselected character after the end of the selection in the high-order word.

此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。

参数说明

nStartChar

Reference to an integer that will receive the position of the first character in the current selection.

指向当前选中部分的第一个字符位置,用整数表示

nEndChar

Reference to an integer that will receive the position of the first nonselected character past the end of the current selection.

指向第一个未被选中的字符的位置,用整数表示。

备注

Call this function to get the starting and ending character positions of the current selection (if any) in an edit control, using either the return value or the parameters.

调用此成员函数获取一个编辑控件中当前被选中部分(如果有)的起始和结束位置,可用参数也可用返回值。

For more information, see EM_GETSEL in the Win32 documentation.

要了解更多信息,请参阅Win32文档中的EM_GETSEL

Set_Sel


 参数:
nStartChar 选择中的第一个字符的从零开始的索引。

  nEndChar 选择中的最后一个字符的从零开始的索引。

  cr 一个CHARRANGE结构,包含了当前选择的界线。

  说明:

  此成员函数用来设置这个CRichEditCtrl对象中的选择。

  这个函数的两种形式都用来设置选择的界线,它们可以相互替换。有关这两种形式的简短描述如下所示: · SetSel( cr ) 这种形式用CHARRANGE结构的cpMin和cpMax成员来设置界线。

  · SetSel( nStarChar, nEndChar ) 这种形式用参数nStartChar和nEndChar来设置界线。

  脱字符号被放置在由开始(cpMin或nStartChar)和结束(cpMax或nEndChar)索引中的较大者所指定的选择的结尾处。此函数不滚动CRichEditCtrl的内容,以使脱字符号是可见的。

  要选择此CRichEditCtrl对象中的索引文本,可以用一个为0的开始索引和一个为-1的结束索引来调用SetSel。

  更多的信息,参见Win32文档中的EM_EXSETSET消息和CHARRANGE结构。

  请参阅:

  CRichEditCtrl::GetSel, CRichEditCtrl::GetSelectionType

  

  int
SetSel( int nIndex, BOOL bSelect = TRUE );

  返回值:如果出错,则为LB_ERR。

  参数: nIndex 包含设置的字符串的基于零的索引。如果为-1,选择从所有字符串添加或删除,取决于bSelect值。

  bSelect 指定如何设置选择。如果bSelect为TRUE,字符串被选择并高亮显示;如果为FALSE,高亮显示被去掉且字符串不再被选择。缺省时,指定的字符串被选择并高亮显示。

  说明:

  在多选列表框中选择一个字符串。

  只能对多选列表框使用此成员函数。

  请参阅:CListBox::GetSel, LB_SETSEL

  

  

  void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);

  void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = False);

  参数: dwSelection 低位字指定起始位置,高位字为结束位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定内容被去掉选定状态。

  bNoScroll 指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。

  nStartChar 指出当前选中部分的开始位置。如果nStartChar=0且nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定内容被去掉选定状态。

  nEndChar 指出结束位置。

  说明:

  调用此成员函数在一个编辑控件中选择一定范围的字符。

  要了解更多信息,请参阅Win32文档中的EM_SETSEL。

  请参阅:CEdit::GetSel, CEdit::ReplaceSel


SetFocus

函数功能:该函数对指定的窗口设置键盘焦点。该窗口必须与调用线程的消息队列相关。

  函数原型:HWND SetFocus(HWND hWnd)。

参数:

  hWnd:接收键盘输入的窗口指针。若该参数为NULL,则击键被忽略。

  返回值:若函数调用成功,则返回原先拥有键盘焦点的窗口句柄。若hWnd参数无效或窗口未与调用线程的消息队列相关,则返回值为NULL。若要获得更多错误信息,可以调用GetLastError函数。

  备注:SetFocus函数发送WM_KILLFOCUS消息到失去键盘焦点的窗口,并且发送WM_SETFOCUS消息到接受键盘焦点的窗口。它也激活接受键盘焦点的窗口或接受键盘焦点的窗口的父窗口。

  若一个窗口是活动的,但没有键盘焦点,则任何按键将会产生WM_SYSCHAR,WM_SYSKEYDOWN或WM_SYSKEYUP消息。若VK_MENU键也被按下,则消息的IParam参数将设置第30位。否则,所产生的消息将不设置此位。

  使用AttachThreadInput函数,一个线程可将输入处理连接到其他线程。这使得线程可以调用SetFocus函数为一个与其他线程的消息队列相关的窗口设置键盘焦点。

  Windows CE:不使用SetFocus函数为一个与其他线程的消息队列相关的窗口设置键盘焦点。但有一个例外。若一个线程的窗口是另一线程的子窗口,或这些窗口是具有同一父窗口的兄弟窗口,则与一个线程关联的窗口可以为其他窗口设置焦点,尽管该窗口属于一个不同的线程。在这种情况下,就不必先调用AttachThreadlnpUt函数。

  速查:Windows NT:3.1及以上版本;Windows:95及以上版本:Windows CE:1.0及以上版;头文件:winuser.h;库文件:user32.lib。



IsWindows


函数功能:该函数确定给定的函数窗口句柄是否表示一个已经存在的窗口。

函数原型:BOOL IsWindow(HWND hWnd)

hWnd:被测试窗口的句柄。

  返回值:如果窗口句柄标识了一个已存在的窗口,返回值为非零;如果窗口句柄未标识一个已存在窗口,返回值为零。

  此函数在WINUSER.H中定义,如下所示:WINUSERAPI

  BOOL

  WINAPI

  IsWindow(HWND hWnd);


GetWindowText

该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText不能接收其他应用程序中控件的文本。

  函数原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);

  hWnd:带文本的窗口或控件的句柄。

  IpString:指向接收文本的缓冲区的指针。

  nMaxCount:指定要保存在缓冲区内的字符的最大个数,其中包含NULL字符。如果文本超过界限,它就被截断。

1、函数定义

  如果目标窗口属于当前进程,GetWindowText函数给指定的窗口或控件发送WM_GETTEXT消息。如果目标窗口属于其他进程,并且有一个窗口标题,则GetWindowTeXt返回窗口的标题文本,如果窗口无标题,则函数返回空字符串。

题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。



AfxMessageBox的函数原型
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );
在第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名(如Hello)。在第二种形式中,nIDPrompt为要显示的文本字符串在字符串表中的ID。函数调用时会自动从字符串表中载入字符串并显示在消息框中。nType为消息框中显示的按钮风格和图标风格的组合,可以采用|(或)操作符组合各种风格。

按钮风格
MB_ABORTRETRYIGNORE   消息框中显示Abort、Retry、Ignore按钮
MB_OK   显示OK按钮
MB_OKCANCEL 显示OK、Cancel按钮
MB_RETRYCANCEL 显示Retry、Cancel按钮
MB_YESNO 显示Yes、No按钮
MB_YESNOCANCEL 示Yes、No、Cancel按钮
图标风格
MB_ICONINFORMATION 显示一个i图标,表示提示
MB_ICONEXCLAMATION 显示一个惊叹号,表示警告
MB_ICONSTOP 显示手形图标,表示警告或严重错误
MB_ICONQUESTION 显示问号图标,表示疑问

AfxMessageBox类似的函数MessageBox,它是CWnd的类成员函数:
int MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,UINT nType = MB_OK );

两个函数的区别:AfxMessageBox比 MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。

举例:
AfxMessageBox(“Are you sure?”,MB_YESNO|MB_ICONQUESTION);
int a = MessageBox(TEXT( "是否确认删除?" ), TEXT("Warning!!"),4);
if (a == 6)
AfxMessageBox("Yes");
else
AfxMessageBox("No");
(其中#define IDYES 6 #define IDNO 7)

VC中可调用的函数大致可分三类:

1.类自己的函数,只对类自己的数据成员有作用;

2.AFX小组在设计 Application Framworks 时设计的全局函数,多冠在Afx前缀,在包含了MFC库/框架的工程中可用;

3.Windows API的全局函数。对所有Windows平台下的程序设计都可以调用,如Vb,Vc,Dephi等等。你说的 MessageBox是属于 CWnd 类的成员函数,只能在 CWnd 和CWnd的派生类的对象中调用;AfxMessageBox则可在任何地方调用。另外对应的还有: ::MessageBox()这个windows API的全局函数。上述中1和3一般有一个区别,就是1要比3少一个参数,即窗口句柄。大家知道,这个句柄是通过 this 指针曲折转换得到的,不用程序员操心了。



抱歉!评论已关闭.