一、MFC 类别阶层架构
二、CWnd类
CWnd是MFC的一个窗口类,这个类里几乎封装了所有关于窗口操作的API函数。
在Windows系统里,一个窗口的属性分两个地方存放:一部分放在“窗口类”里头,如上所述的在注册窗口时指定;另一部分放在Windows Object本身,如:窗口的尺寸,窗口的位置(X,Y轴),窗口的Z轴顺序,窗口的状态(ACTIVE,MINIMIZED,MAXMIZED,RESTORED…),和其他窗口的关系(父窗口,子窗口…),窗口是否可以接收键盘或鼠标消息,等等。
为了表达所有这些窗口的共性,MFC设计了一个窗口基类CWnd。有一点非常重要,那就是CWnd提供了一个标准而通用的MFC窗口过程,MFC下所有的窗口都使用这个窗口过程。至于通用的窗口过程却能为各个窗口实现不同的操作,那就是MFC消息映射机制的奥秘和作用了。
CWnd类和消息映射机制隐藏了WndProc函数。接收到的Windows通知消息通过消息映射被自动发送到适当的CWnd OnMessage成员函数。你可以在派生类中重载OnMessage成员函数以处理成员的特定消息。
CWnd类同时还使你能够为应用程序创建Windows的子窗口。先从CWnd继承一个类,然后在派生类中加入成员变量以保存与你的应用程序有关的数据。在派生类中实现消息处理成员函数和消息映射,以指定当消息被发送到窗口时应该如何动作。
你可以经过两个步骤来创建一个子窗口。首先,调用构造函数CWnd以创建一个CWnd对象,然后调用Create成员函数以创建子窗口并将它连接到CWnd对象。当用户关闭你的子窗口时,应销毁CWnd对象,或者调用DestroyWindow成员函数以清除窗口并销毁它的数据结构。
CWnd类的成员
初始化 |
对话框项函数 |
初始化消息处理函数 |
窗口状态函数 |
数据绑定函数 |
系统消息处理函数 |
窗口大小和位置 |
菜单函数 |
一般消息处理函数 |
窗口访问函数 |
工具提示函数 |
控件消息处理函数 |
更新/绘图函数 |
定时器函数 |
输入消息处理函数 |
坐标映射函数 |
警告函数 |
非客户区消息处理函数 |
窗口文本函数 |
窗口消息函数 |
MDI消息处理函数 |
滚动函数 |
剪贴板函数 |
剪贴板消息处理函数 |
拖放函数 |
OLE控件 |
菜单循环通知 |
插字符号函数 |
可重载函数 |
下面提供CWnd的函数,以供参考和查阅。
1. 数据成员
m_hWnd |
指明与这个CWnd对象相关联的HWND句柄 |
注:CWnd与HWND的区别与转换
一、区别
HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.
HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。
CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。
二、如何得到窗口对象指针CWnd * pCWnd
1,在窗体里,直接用 this->,//this就是本窗体的窗口对象指针
2,主窗体的类对象指针:AfxGetApp()->m_pMainWnd->, //AfxGetApp()->m_pMainWnd就是主窗体的窗口对象指针
3,pCWnd=GetDlgItem(ID_EDIT_NAME);//GetDlgItem 函数可以得到某个控件的窗口对象指针
三、如何得到窗口句柄 HWND Handle
1,Handle=this->m_hWnd
2,GetDlgItem(ID_EDIT_NAME);
3,Handle=::GetDlgItem(this,IDC_STATIC_MODE); //得到本窗体内某个控件的句柄
四、转换
CWnd * pCWnd;
HWND Handle;
pCWnd=FromHandle(Handle);
Handle=GetSafeHwnd(pCWnd);
2.构造和析构
CWnd |
构造一个CWnd对象 |
DestroyWindow |
销毁相关联的Windows窗口 |
3.初始化
Create |
创建并初始化与CWnd对象相关联的子窗口 |
PreCreateWindow |
在与CWnd对象相关联的窗口被创建之前调用 |
CalcWindowRect |
调用这个函数以计算窗口客户区的矩形 |
GetStyle |
返回当前的窗口风格 |
GetExStyle |
返回窗口的扩展风格 |
Attach |
将Windows句柄与CWnd对象相连接 |
Detach |
将一个Windows句柄从CWnd对象上分离并返回这个句柄 |
PreSubclassWindow |
在调用SubclassWindow之前,允许其它必要的子类化工作 |
SubclassWindow |
将窗口与CWnd对象相连接,并使它通过CWnd的消息映射转发消息 |
UnsubclassWindow |
将窗口与CWnd对象分离 |
FromHandle |
当给定一个窗口的句柄时,返回CWnd对象的指针。如果没有CWnd对象与这个句柄相连接,则创建一个临时的CWnd对象并与之相连接 |
FromHandlePermanent |
当给定一个窗口的句柄时,返回CWnd对象的指针。如果没有CWnd 对象与这个句柄相连接,则返回NULL |
DeleteTempMap |
CWinApp的空闲处理函数自动调用这个函数,清除由FromHandle创建的任何临时CWnd对象 |
GetSafeHwnd |
返回m_hWnd,如果该指针为NULL,则返回NULL |
CreateEx |
创建一个Windows的可重叠窗口、弹出窗口或子窗口,并把它连接到一个CWnd对象上 |
CreateControl |
创建一个OLE控件,该控件在MFC程序中由一个CWnd对象代表 |
4.窗口状态函数
IsWindowEnabled |
确定一个窗口是否允许鼠标和键盘输入 |
EnableWindow |
允许或禁止鼠标和键盘输入 |
GetActiveWindow |
获得激活的窗口 |
SetActiveWindow |
激活窗口 |
GetCapture |
获得捕获鼠标的CWnd |
SetCapture |
使随后的鼠标输入都被发送到这个CWnd |
GetFocus |
获得当前具有输入焦点的CWnd |
SetFocus |
要求输入焦点 |
GetDesktopWindow |
获得Windows的桌面窗口 |
GetForegroundWindow |
返回前台窗口的指针(顶层窗口,用户正在其中工作) |
SetForegroundWindow |
使创建窗口的线程变为前台并激活窗口 |
GetIcon |
获得图标的句柄 |
SetIcon |
设置指定图标的句柄 |
GetWindowContextHelpId |
获得帮助上下文的标识符 |
SetWindowContextHelpId |
设置帮助上下文的标识符 |
ModifyStyle |
修改当前的窗口风格 |
ModifyStyleEx |
修改窗口的扩展风格 |
5.窗口大小和位置
GetWindowPlacement |
获得窗口的显示状态以及正常(还原)的、最大化和最小化的位置 |
SetWindowPlacement |
设置窗口的显示状态以及正常(还原)的、最大化和最小化的位置 |
GetWindowRgn |
获得窗口的窗口区域的一个拷贝 |
SetWindowRgn |
设置窗口的区域 |
IsIconic |
确定CWnd是否被最小化(图标化) |
IsZoomed |
确定CWnd是否被最大化 |
MoveWindow |
改变CWnd的位置和大小 |
SetWindowPos |
改变子窗口、弹出窗口和顶层窗口的大小、位置以及顺序 |
ArrangeIconicWindows |
排列所有最小化(图标化)的子窗口 |
BringWindowToTop |
使CWnd到达重叠窗口堆栈的顶部 |
GetWindowRect |
获得CWnd的屏幕坐标 |
GetClientRect |
获得CWnd客户区域的大小 |
6.窗口访问函数
ChildWindowFromPoint |
确定哪个子窗口包含指定的点,如果有的话 |
FindWindow |
返回由窗口名或窗口类标识的窗口的句柄 |
GetNextWindow |
返回窗口管理器列表中的下一个(或前一个)窗口 |
GetOwner |
获得CWnd的拥有者的指针 |
SetOwner |
改变CWnd的拥有者 |
GetTopWindow |
返回CWnd所属的第一个子窗口 |
GetWindow |
返回与窗口有特定关系的窗口 |
GetLastActivePopup |
确定CWnd拥有的弹出窗口是否最近被激活 |
IsChild |
指明CWnd是指定窗口的一个子窗口还是其它子对象 |
GetParent |
获得CWnd的父窗口(如果有) |
GetSafeOwner |
获得给定窗口的安全拥有者 |
SetParent |
改变父窗口 |
WindowFromPoint |
标明包含给定点的窗口 |
GetDlgItem |
获得指定的对话框中具有指定ID的控件 |
GetDlgCtrlID |
如果CWnd是一个子窗口,则用这个函数来返回它的ID值 |
SetDlgCtrlID |
为窗口(可以是任意子窗口,不仅是对话框中的控件)设置窗口ID或控件ID |
GetDescendantWindow |
搜索所有子窗口并返回具有指定ID的窗口 |
GetParentFrame |
获得CWnd对象的父框架窗口 |
SendMessageToDescendants |
将消息发送给窗口的所有子窗口 |
GetTopLevelParent |
获得窗口的顶层父窗口 |
GetTopLevelOwner |
获得顶层窗口 |
GetParentOwner |
返回子窗口的父窗口的指针 |
GetTopLevelFrame |
获得窗口的顶层框架窗口 |
UpdateDialogControls |
调用这个函数以更新对话框按钮和其它控件的状态 |
UpdateData |
初始化对话框或获得对话框中的数据 |
CenterWindow |
将窗口设置到父窗口的中央 |
7.更新/绘图函数
BeginPaint |
为绘图准备CWnd |
EndPaint |
标志着绘图结束 |
在指定的设备环境中画出当前窗口 |
|
PrintClient |
在指定的设备环境(通常是打印机设备环境)中画出任何窗口 |
LockWindowUpdate |
禁止或恢复在给定窗口中的绘图 |
UnlockWindowUpdate |
解锁用CWnd::LockWindowUpdate锁定的窗口 |
GetDC |
获得客户区的设备环境 |
GetDCEx |
获得客户区的显示设备环境,允许在绘图的时候进行剪裁 |
RedrawWindow |
更新客户区中的指定矩形或区域 |
GetWindowDC |
获得整个窗口的显示环境,包括标题条、菜单和滚动条 |
ReleaseDC |
是否客户和窗口设备环境,使其它应用程序能够使用它们 |
UpdateWindow |
更新客户区 |
SetRedraw |
使CWnd的变化能够被重画,或者禁止重画发生的变化 |
GetUpdateRect |
获得完全封闭了CWnd中更新区域的最小矩形的坐标 |
GetUpdateRgn |
获得CWnd的更新区域 |
Invalidate |
使整个客户区无效 |
InvalidateRect |
在当前的更新区域中加入给定的矩形,使客户区的给定矩形无效 |
InvalidateRgn |
在当前的更新区域中加入给定的区域,使客户区的给定区域无效 |
ValidateRect |
在当前的更新区域中删除给定的矩形,使客户区的给定矩形有效 |
ValidateRgn |
在当前的更新区域中删除给定的区域,使客户区的给定区域有效 |
ShowWindow |
显示或隐藏窗口 |
IsWindowVisible |
确定窗口是否可见 |
ShowOwnedPopups |
显示或隐藏该窗口拥有的所有弹出窗口 |
EnableScrollBar |
允许或禁止滚动条的一个或两个箭头 |
8.坐标映射函数
MapWindowPoints |
将一些坐标从CWnd的坐标空间转换(映射)到其它窗口的坐标空间 |
ClientToScreen |
将给定点或显示器上矩形的客户区坐标转换为屏幕坐标 |
ScreenToClient |
将给定点或显示器上矩形的屏幕坐标转换为客户坐标 |
9.窗口文本函数
SetWindowText |
将窗口的文本或标题文字(如果有)设为指定的文本 |
GetWindowText |
返回窗口的文本或标题文字(如果有) |
GetWindowTextLength |
返回窗口文本或标题文字的长度 |
SetFont |
设置当前字体 |
GetFont |
获得当前字体 |
10.滚动函数
GetScrollPos |
获得滚动块的当前位置 |
GetScrollRange |
复制指定滚动条的最大和最小滚动条位置 |
ScrollWindow |
滚动客户区的内容 |
ScrollWindowEx |
滚动客户区的内容,与ScrollWindow类似,还有其它功能 |
GetScrollInfo |
获得SCROLLINFO结构维护的滚动条信息 |
GetScrollLimit |
获得滚动条的限制 |
SetScrollInfo |
设置滚动条信息 |
SetScrollPos |
设置滚动块的当前位置,如果指定,并重画滚动条以反映新的位置 |
SetScrollRange |
设置指定滚动条的最小和最大位置值 |
ShowScrollBar |
显示或隐藏滚动条 |
EnableScrollBarCtrl |
允许或禁止一个滚动条控件 |
GetScrollBarCtrl |
返回滚动条控件 |
RepositionBars |
重新设定客户区中控制条的位置 |
11.拖放函数
DragAcceptFiles |
指明该窗口将接收拖来的文件 |
12.插字符号函数
CreateCaret |
为系统插字符创建一个新的形状并获得它的所有权 |
CreateSolidCaret |
为系统插字符创建一个实心块并获得它的所有权 |
CreateGrayCaret |
为系统插字符创建一个灰色块并获得它的所有权 |
GetCaretPos |
获得插字符当前位置的客户区坐标 |
SetCaretPos |
将插字符移动到指定的位置 |
HideCaret |
通过将插字符移出显示屏幕而隐藏它 |
ShowCaret |
在插字符的当前位置显示插字符。一旦被显示,插字符就会自动闪烁 |
13.对话框项函数
CheckDlgButton |
在按钮控件旁放置或者清除检查标记 |
CheckRadioButton |
选中指定的单项按钮并清除指定的按钮组中其它所有单项按钮的检查标记 |
GetCheckedRadioButton |
返回一组按钮中当前选中的单项按钮的ID |
DlgDirList |
用文件或目录列表填充一个列表框 |
DlgDirListComboBox |
用文件或目录列表填充一个组合框中的列表框 |
DlgDirSelect |
获得列表框的当前选择 |
DlgDirSelectComboBox |
获得组合框中列表框的当前选择 |
GetDlgItemInt |
将给定对话框中控件的文本转换为整数 |
GetDlgItemText |
获得与控件相关的标题或文本 |
GetNextDlgGroupItem |
在一组控件内搜索下一个(或上一个)控件 |
GetNextDlgTabItem |
获得指定的控件之后(或之前)具有WS_TABSTOP风格的第一个控件 |
IsDlgButtonChecked |
确定按钮控件是否有检查标记 |
IsDialogMessage |
确定给定的消息是否是送往无模式对话框的,如果是,则处理它 |
SendDlgItemMessage |
向指定的控件发送一条消息 |
SetDlgItemInt |
将控件的文本设为代表一个整数的字符串 |
SetDlgItemText |
设置指定的对话框中的控件的标题或文本 |
SubclassDlgItem |
将一个Windows控件与CWnd对象连接,然后使它通过CWnd的消息映射转发消息 |
ExecuteDlgInit |
初始化对话框资源 |
RunModalLoop |
获得、转换或分派来自模式窗口的消息 |
ContinueModal |
继续一个窗口的模式状态 |
EndModalLoop |
结束一个窗口的模式状态 |
14.数据绑定函数
BindDefaultProperty |
像类型库中标记的那样,将调用对象的缺省的简单移动属性和与数据源控件相关的游标绑定在一起 |
BindProperty |
将一个游标移动属性与数据移动控件绑定在一起,然后在MFC的绑定管理器中注册这种联系 |
GetDSCCursor |
获得游标的指针,该游标是通过数据源控件的DataSource、UserName、Password和SQL属性定义的 |
15.菜单函数
GetMenu |
获得指定菜单的指针 |
SetMenu |
将菜单设为指定的菜单 |
DrawMenuBar |
重画菜单条 |
GetSystemMenu |
允许应用程序访问控制菜单,用于拷贝和修改 |
HiliteMenuItem |
加亮显示一个顶层(菜单条)菜单项,或者取消加亮显示 |
16.工具提示函数
EnableToolTips |
允许工具提示控件 |
CancelToolTips |
禁止工具提示控件 |
FilterToolTipMessage |
获得与对话框中控件相关的标题和文本 |
OnToolHitTest |
确定一个点是否位于指定工具的边界矩形之中并获得工具的信息 |
17.定时器函数
SetTimer |
安装一个系统定时器,当它被激活时,发送一个WM_TIMER消息 |
KillTimer |
销毁一个系统定时器 |
18.警告函数
FlashWindow |
使窗口闪烁一次 |
MessageBox |
创建并显示一个窗口,其中包含了应用程序提供的消息和标题 |
19.窗口消息函数
GetCurrentMessage |
返回这个窗口当前处理的消息的指针。只应该在OnMessage消息处理函数内部调用 |
Default |
调用缺省的窗口过程,它提供了对应用程序没有处理的任何窗口消息的缺省处理 |
PreTranslateMessage |
在消息被发送到Windows函数TranslateMessage和DispatchMessage之前,CWinApp使用这个函数来过滤窗口消息 |
SendMessage |
向CWnd对象发送一个消息,直到这条消息被处理之后才返回 |
PostMessage |
将一条消息放入应用程序的消息队列,然后不等窗口处理这条消息直接返回 |
SendNotifyMessage |
将一条消息发送到窗口并尽快返回,返回的速度取决于该窗口是否是由调用线程所创建 |
20.剪贴板函数
ChangeClipboardChain |
将CWnd从剪贴板观察器的链中清除 |
SetClipboardViewer |
将CWnd加入一个窗口链,每当剪贴板的内容发生变化时,就会通知这些窗口 |
OpenClipboard |
打开剪贴板。其它应用程序将不能修改剪贴板,直到调用Windows的CloseClipboard函数 |
GetClipboardOwner |
获得指向剪贴板的当前拥有者的指针 |
GetOpenClipboardWindow |
获得当前打开剪贴板的窗口的指针 |
GetClipboardViewer |
获得剪贴板观察器链中的第一个窗口的指针 |
21.OLE控件
SetProperty |
设置OLE控件的属性 |
OnAmbientProperty |
实现周围属性值 |
GetControlUnknown |
获得指向未知OLE控件的指针 |
GetProperty |
获得OLE控件的属性 |
InvokeHelper |
激活OLE控件的方法或属性 |
22.可 重载函数
WindowProc |
为CWnd对象提供了窗口过程。缺省的窗口过程通过消息映射分派消息 |
DefWindowProc |
调用缺省的窗口过程,它提供了对应用程序没有处理的任何窗口消息的缺省处理 |
PostNcDestroy |
这个虚拟函数在窗口被销毁以后被缺省的OnNcDestroy函数所调用 |
OnNotify |
框架调用这个函数以通知父窗口,在它的一个控件发生了一个事件,或该控件需要消息 |
OnChildNotify |
父窗口调用这个函数,给被通知的控件一个响应控件通知消息的机会 |
DoDataExchange |
用于对话框数据交换和校验。由UpdateData调用 |
23.初始化消息处理函数
OnInitMenu |
当菜单要被激活时调用这个函数 |
OnInitMenuPopup |
当弹出菜单要被激活时调用这个函数 |
24. 系统消息处理函数
OnSysChar |
当一次击键被转换为系统字符消息时调用这个函数 |
OnSysCommand |
当用户从控制菜单中选择命令,或者当用户选择了最大化或最小化按钮时,调用这个函数 |
OnSysDeadChar |
当一次击键被转换为系统死键(例如重音字符)消息时调用这个函数 |
OnSysKeyDown |
当用户按住ALT键并按下其它键时调用这个函数 |
OnSysKeyUp |
当用户放开一个键,而此时ALT键被按下,则调用这个函数 |
OnCompacting |
当Windows检测到系统内存很少时,就调用这个函数 |
OnDevModeChange |
当用户改变了设备模式设置时,就为顶层窗口调用这个函数 |
OnFontChange |
当字体资源池发生变化时调用这个函数 |
OnPaletteIsChanging |
当应用程序将要实现其逻辑调色板时通知其它应用程序 |
OnPaletteChanged |
调用这个函数时使用调色板的所有窗口能够实现它们的逻辑调色板并更新它们的客户区 |
OnSysColorChange |
当系统颜色设置发生改变时为所有的顶层窗口调用这个函数 |
OnWindowPosChanging |
由于调用了SetWindowPos函数或其它的窗口管理函数,因而窗口的大小、位置和次序将要发生变化时,就调用这个函数 |
OnWindowPosChanged |
由于调用了SetWindowPos函数或其它的窗口管理函数,因而当窗口的大小、位置和次序发生了变化时,就调用这个函数 |
OnDropFiles |
当用户在注册为可以接收拖放文件的窗口上方释放鼠标左键时,这个函数就被调用 |
OnSpoolerStatus |
每当一个作业被加入或移出打印管理器的队列时,打印管理器就调用这个函数 |
OnTimeChange |
在系统时间改变之后,为所有的顶层窗口调用这个函数 |
OnWinIniChange |
在Windows的初始化文件WIN.INI改变之后为所有的顶层窗口调用这个函数 |
25.一般消息处理函数
OnCommand |
当用户选择了一个命令时调用这个函数 |
OnActivate |
当CWnd要被激活或退出激活状态时调用这个函数 |
OnActivateApp |
当应用程序要被激活或退出激活状态时调用这个函数 |
26.一般消息处理函数
OnCancelMode |
调用这个函数以允许CWnd取消任何内部模式,比如鼠标捕获状态 |
OnChildActivate |
当CWnd的大小和位置发生变化或者CWnd被激活时,就为多文档界面(MDI)的子窗口调用这个函数 |
OnClose |
调用这个函数,作为关闭CWnd的信号 |
OnCopyData |
从一个应用程序复制数据到另一个应用程序 |
OnCreate |
作为窗口创建过程的一部分来调用 |
OnCtlColor |
如果CWnd是一个控件的父窗口,当控件要被重画时就调用这个函数 |
OnDestroy |
当CWnd要被销毁时就调用这个函数 |
OnEnable |
当CWnd被允许或禁止时调用这个函数 |
OnEndSession |
当会话将要结束时调用这个函数 |
OnEnterIdle |
调用这个函数以通知应用程序的主窗口过程,模式对话框或菜单正在进入空闲状态 |
OnEraseBkgnd |
当需要擦除窗口的背景时调用这个函数 |
OnGetMinMaxInfo |
每当Windows需要知道最大化的位置和大小,或者最小或最大跟踪尺寸时,就调用这个函数 |
OnIconEraseBkgnd |
当CWnd被最小化(图标化),并且在画出图标之前,必须填充图标的背景时调用这个函数 |
OnKillFocus |
当CWnd失去输入焦点时立即调用这个函数 |
OnMenuChar |
当用户按下一个菜单助记字符,但是不能与当前菜单中任何预定义的助记符相匹配时,就调用这个函数 |
OnMenuSelect |
当用户选择了一个菜单项时就调用这个函数 |
OnMove |
当CWnd的位置发生变化时调用这个函数 |
OnMoving |
指明用户正在移动CWnd对象 |
OnDeviceChange |
通知应用程序或设备驱动程序,设备或计算机的硬件配置发生了变化 |
OnStyleChanged |
指明Windows的::SetWindowLong函数已经改变了一个或多个窗口风格 |
OnStyleChanging |
指明Windows的::SetWindowLong函数将要改变一个或多个窗口风格 |
OnPaint |
调用这个函数以重画窗口的一部分 |
OnParentNotify |
当创建或销毁一个子窗口,或者当用户在子窗口上方点击了鼠标键时调用这个函数 |
OnQueryDragIcon |
当一个最小化(图标化)的CWnd要被用户拖拉时就调用这个函数 |
OnQueryEndSession |
当用户选择结束Windows会话时就调用这个函数 |
OnQueryNewPalette |
通知CWnd它将接收输入焦点 |
OnQueryOpen |
当CWnd是一个图标并且用户请求打开这个图标时就调用这个函数 |
27.一般消息处理函数
OnSetFocus |
当CWnd获得输入焦点时调用这个函数 |
OnShowWindow |
当CWnd被隐藏或显示时调用这个函数 |
OnSize |
当CWnd的大小被改变以后调用这个函数 |
OnSizing |
指明用户正在改变矩形的大小 |
OnStyleChanged |
指明窗口的一个或多个风格已经被改变 |
OnStyleChanging |
指明窗口的一个或多个风格将被改变 |
28.控件消息处理函数
OnCharToItem |
这个函数被具有LBS_WANTKEYBOARDINPUT风格的子列表框调用,用以响应WM_CHAR消息 |
OnCompareItem |
调用这个函数以确定排序的自画组合框或列表框中新项的相对位置 |
OnDeleteItem |
当一个自画子列表框或组合框中将被销毁时,或者从控件中删除项时调用这个函数 |
OnDrawItem |
当自画子按钮控件、组合框控件、列表框控件或菜单的可视部分需要被画出时调用这个函数 |
OnDSCNotify |
在响应数据源控件引发的事件时调用,该事件是当与数据源控件绑定的控件修改或将要修改游标时产生的 |
OnGetDlgCode |
为控件调用这个函数,使控件能够自己处理输入的箭头键和TAB键 |
OnMeasureItem |
当控件被创建时为自画子组合框,列表框或菜单项调用这个函数。CWnd通知Windows该控件的大小 |
SendChildNotifyLastMsg |
提供了从父窗口到子窗口的通知消息,使子窗口能够处理一个任务 |
ReflectChildNotify |
将消息向它的来源反映的帮助函数 |
OnWndMsg |
指明一个窗口消息是否已被处理 |
ReflectLastMsg |
将上一个消息反映到子窗口 |
OnVKeyToItem |
由CWnd所拥有的列表框调用,用于响应WM_KEYDOWN消息 |
29.输入消息处理函数
OnChar |
当一次击键被转换为非系统字符时调用这个函数 |
OnDeadChar |
当一次击键被转换为非系统死键(例如重音字符)时调用这个函数 |
OnHScroll |
当用户点击了CWnd的水平滚动条时调用这个函数 |
OnKeyDown |
当按下了一个非系统键时调用这个函数 |
OnKeyUp |
当放开一个非系统键时调用这个函数 |
OnLButtonDblClk |
当用户双击鼠标左键时调用这个函数 |
30.输入消息处理函数
OnLButtonDown |
当用户按下鼠标左键时调用这个函数 |
OnLButtonUp |
当用户放开鼠标左键时调用这个函数 |
OnMButtonDblClk |
当用户双击鼠标中键时调用这个函数 |
OnMButtonDown |
当用户按下鼠标中键时调用这个函数 |
OnMButtonUp |
当用户放开鼠标中键时调用这个函数 |
OnMouseActivate |
当鼠标位于非活动窗口,并且用户按下鼠标键时调用这个函数 |
OnMouseMove |
当鼠标光标移动时调用这个函数 |
OnMouseWheel |
当用户旋转鼠标轮时调用这个函数。使用WindowsNT4.0的消息处理 |
OnRegisteredMouseWheel |
当用户旋转鼠标轮的时候调用这个函数。使用Windows 95和Windows NT 3.51的消息处理 |
OnRButtonDblClk |
当用户双击鼠标右键时调用这个函数 |
OnRButtonDown |
当用户按下鼠标右键时调用这个函数 |
OnRButtonUp |
当用户放开鼠标右键时调用这个函数 |
OnSetCursor |
如果没有捕获鼠标输入并且鼠标导致光标在窗口内移动时,就调用这个函数 |
OnTimer |
当达到SetTimer指定的时间间隔时调用这个函数 |
OnVScroll |
当用户点击窗口的垂直滚动条时调用这个函数 |
OnCaptureChanged |
向失去鼠标捕获的窗口发送一条消息 |
31.非客户区消息处理函数
OnNcActivate |
当需要改变非客户区以指明活动或非活动状态时调用这个函数 |
OnNcCalcSize |
当需要计算非客户区的大小和位置时调用这个函数 |
OnNcCreate |
在OnCreate之前,当要创建非客户区时调用这个函数 |
OnNcDestroy |
当非客户区要被销毁的时候调用这个函数 |
OnNcHitTest |
如果CWnd中包含了光标,或者用SetCapture捕获了鼠标输入时,每当鼠标移动时,Windows调用这个函数 |
OnNcLButtonDblClk |
当光标位于CWnd的非客户区,用户双击鼠标左键时,就调用这个函数 |
OnNcLButtonDown |
当光标位于CWnd的非客户区,用户按下鼠标左键时,就调用这个函数 |
OnNcLButtonUp |
当光标位于CWnd的非客户区,用户放开鼠标左键时,就调用这个函数 |
OnNcMButtonDblClk |
当光标位于CWnd的非客户区,用户双击鼠标中键时,就调用这个函数 |
OnNcMButtonDown |
当光标位于CWnd的非客户区,用户按下鼠标中键时,就调用这个函数 |
OnNcMButtonUp |
当光标位于CWnd的非客户区,用户放开鼠标中键时,就调用这个函数 |
32.非客户区消息处理函数
OnNcMouseMove |
当光标在CWnd的非客户区中移动时就调用这个函数 |
OnNcPaint |
当非客户区需要重画时调用这个函数 |
OnNcRButtonDblClk |
当光标位于CWnd的非客户区,用户双击鼠标右键时,就调用这个函数 |
OnNcRButtonDown |
当光标位于CWnd的非客户区,用户按下鼠标右键时,就调用这个函数 |
OnNcRButtonUp |
当光标位于CWnd的非客户区,用户放开鼠标右键时,就调用这个函数 |
33.MDI消息处理函数
OnMDIActivate |
当MDI子窗口被激活或失去活动状态时调用这个函数 |
34.剪贴板消息处理函数
OnAskCbFormatName |
当剪贴板的拥有者将显示剪贴板内容时,剪贴板观察程序就调用这个函数 |
OnChangeCbChain |
通知指定的窗口将从链中删除 |
OnDestroyClipboard |
当通过Windows的EmptyClipboard函数清空剪贴板时调用这个函数 |
OnDrawClipboard |
当内容变化时调用这个函数 |
OnHScrollClipboard |
当剪贴板的拥有者要滚动剪贴板的图像、使适当的部分无效以及更新滚动条值的时候调用这个函数 |
OnPaintClipboard |
当剪贴板观察器的客户区需要重画的时候调用这个函数 |
OnRenderAllFormats |
当拥有者应用程序将被销毁且需要提交它的所有格式时调用这个函数 |
OnRenderFormat |
当一种延迟提交的格式需要被提交时为剪贴板拥有者调用这个函数 |
OnSizeClipboard |
当剪贴板观察器窗口的客户区大小发生变化时调用这个函数 |
OnVScrollClipboard |
当拥有者要滚动剪贴板的图像、使适当的部分无效以及更新滚动条值的时候调用这个函数 |
35.菜单循环通知
OnEnterMenuLoop |
进入一个菜单模式的循环时调用该函数 |
OnExitMenuLoop |
当退出一个菜单模式的循环时调用该函数 |