版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、附录使用MFC和Windows API框被创建时由 Windows API创建;或者可以使用控件类,如CButton类,自己动手创建控件窗口。若MFC没有在类中可以使用CWnd类和通用控件窗口类名创建控件。附录使用MFC和Windows API框被创建时由 Windows API创建;或者可以使用控件类,如CButton类,自己动手创建控件窗口。若MFC没有在类中可以使用CWnd类和通用控件窗口类名创建控件。 A.1.1 用Windows APIHWNDCreateWindowEx(dwExStyle,BUTTON,Text, WS_CHILD|WS_VISIBLE|dwStyle x, y,
2、 width, height, 用MFC创建按钮控 )id,hInstance,/ usually embedded in parent Text, WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, id);可视风格(见图A-具有输入焦点时才会发生。在父窗口中,一次只能有一个按钮有该风格当父窗口必须绘制该当在按钮表面绘制一个位图,该位图必须在其他步骤中指E 图A-1 按钮控件风录 然后,忽略任何输入。这种在同一控件中非近似特征的堆积,可能是由于当时只有七个通用控件而没有增添的余地。其他按钮效果,通过使用A.4节“普通窗口风格”的边框风格获得A.1.2
3、 Windows API创建静态文本控件ic 然后,忽略任何输入。这种在同一控件中非近似特征的堆积,可能是由于当时只有七个通用控件而没有增添的余地。其他按钮效果,通过使用A.4节“普通窗口风格”的边框风格获得A.1.2 Windows API创建静态文本控件ic HWND CreateWindowEx(dwExStyle, SWS_CHILD|WS_VISIBLE|dwStyle x, y, hWndParent, ) id, hInstance, 使用MFC创建静态文本控CS icm_s ic; parent classm_s / usually embedded &Text,WS_VISI
4、BLE|WS_CHILD|dwStyle, rect, pParentWnd, id);可视风格(见图A-图A-2 静态文本控件风父窗口绘制控把位图绘制在控件上,位图在另一步中设把一个加强的元文件绘制在控件上,该元文件在另一步中设若静态文本控件显示的是图标、位图或元文件,该风格强迫其位于控件中 若用户在静态文本中某一字母前指定了&Tab次序紧随其后的控件将获得输入焦点。 Tab次序是拥有SS_ETCHEDVERT或SS_ETCHEDHORZ风格的静态文本控件,为用户绘制一不符合,其实,例69法。文本等同效果(文本字符看起来像蚀刻进窗口中使用CDC:DrawS e ( ) 和禁用选项可以获得。D
5、rawS e ( ) A.1.3 用Windows API创建编辑控件(Edit 附录A 控件窗口风 HWND CreateWindowEx(dwExStyle, EDIT, WS_CHILD|WS_VISIBLE|dwStylex,y,width, 用MFC创建编辑控CEdit m_edit; 附录A 控件窗口风 HWND CreateWindowEx(dwExStyle, EDIT, WS_CHILD|WS_VISIBLE|dwStylex,y,width, 用MFC创建编辑控CEdit m_edit; )id,hInstance,/ usually embedded in parent
6、可视风格(见图A-rect, pParentWnd, 图A-3 编辑控件风 当新文本输入时,引起文本左滚对于一个多行控件,允许回车键经过控件,而不是像单击父窗口中的缺省按钮一编辑框中的所有文本具有相同的字体 (可以用SetFont ( ) 设置)线或使某些文本显示黑体,应该用Rich Edit ControlA.1.4 用Windows API创建一个列表框控件 (List Box HWND CreateWindowEx(dwExStyle, LISTBOX, , WS_CHILD|WS_VISIBLE|dwStylex,y,width,height, )id,hInstance,用MFC创建
7、列表框控CListBox / usually embedded in WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 图A-4 列表框控件风 m_listbox.ResetContent ( m_listbox.AddString 当设置LBS_MULTICOLUMN风格时,要设每 m_listbox.ResetContent ( m_listbox.AddString 当设置LBS_MULTICOLUMN风格时,要设每列的宽度,m_listbox.SetColumnWidth 当设置LBS_USETABSTOPS时,要设置制表位, 使父窗口必须绘
8、制该控件,并且每项的垂直大小使父窗口必须绘制该控件,并且每项的垂直大小可使对于自绘制的控件,该控件件字符字符串,以便还能设置或获得户只需单击一WS_HSCROLLLBS_MULTICOLUMNWS_VSCROLL不起作用后一行;要关掉该功能,使用ERGRALHEIGHT风格A.1.5 用Windows APIHWNDCreateWindowEx(dwExStyle,SCROLLBAR, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, hWndParent, (H) id, hInstance, NULL);用MFC创建滚动CScrollBarm
9、_scrollbar; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-5 滚动条控件风附录A 控件窗口风 一些完整的子窗口。一个父窗口可以有它自己的滚动条和任意数量的滚动条控件窗口;但是,非客户区滚动条和控件窗口滚动条都用 WM_HSCROLL和WM_VS附录A 控件窗口风 一些完整的子窗口。一个父窗口可以有它自己的滚动条和任意数量的滚动条控件窗口;但是,非客户区滚动条和控件窗口滚动条都用 WM_HSCROLL和WM_VSCROLL窗口消息回传到父窗口;要在父窗口
10、中区别它们,需要在消息的 lParam中查看滚动条 MFC把该滚动条句柄封装到一个CScrollBar类中。当单独设置SBS_HORZ和SBS_VET时,滚动条的宽度和高度可以是任意值;当单独设置SBS_OPALIGN,SBS_BOTOMALIGN等,滚动条设置一个标准宽度,这可以在图A-创建具有SBS_SIZEGRIP风格的滚动条控件,允许用户拖动控件所在的窗口改变A.1.6 用Windows APIHWNDCreateWindowEx(dwExStyle,COMBO- BOX, ,WS_CHILD|WS_VISIBLE|dwStyle x, width,hWndParent, (H) id
11、, hInstance,用MFC创建组合CComboBox embeddedinparentclassbobox;/ usually图A-6 组合框控件风WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A- 父窗口绘制该控件,但每项具有不同的高即使该控件是由父窗口绘制的,但它仍然为每个项保持一个字符如果编辑框有效,当输入文本超出窗口边界时,输入文本列表按字母顺序排左滚组合框实际上控制两个完全属于它自己的控件窗口:一个编辑框的编辑控件和一个列表框的ComboLBox控件。因为一些窗口消息,如鼠标单击,只传递到这两个控件之一,而不进入组合
12、框,因此,有时需要直接子分类它们,这只要通过搜索该组合框之下的子窗口即可。 A.2.1 用Windows APIHWND CreateWindowEx(dwExStyle, RICHEDIT, , WS_CHILD|WS_VISIBLE|dwStylex,y,width,height, A.2.1 用Windows APIHWND CreateWindowEx(dwExStyle, RICHEDIT, , WS_CHILD|WS_VISIBLE|dwStylex,y,width,height, )id,hInstance,用MFC创建多信息编辑CRichEditCtrl / usually e
13、mbedded / parent WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 多信息编辑框使用大部分与编辑框相同的窗口风格;它们之间的主要不同在于多信息编辑框可以处理多信息文本格式文件,允许文本一行中有多种颜色、风格和字体大小。然而,要使用该功能,不能用SetWindowext ( ) 或GetWindowext ( ) 输入文本到窗口中,而需要用成员函数StreamIn()和StreamOut()。事实上,还是可以使用 SetWindowText()和GetWindowText ( )但是,RTFA.2.2 用Windows APICreat
14、eW indowEx(dwExStyle, SysListView32, ,WS_CHILD|WS_VISIBLE|dwStyle x,width,hWndParent, (H) id, hInstance,用MFC创建列表控CListCtrlm_listctrl; in parent class/ usually WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-m_listctrl.InsertColumn(0,Column 1,LVCFMT_LEFT,width,0); m_listctrl.InsertColumn(1,Co
15、lumn1,LVCFMT_RIGHT,width,1);m_listctrl.SetImageList(&m_imageLarge,LVSIL_NORMAL); m_listctrl.SetImageList(&m_imageSmall, LVSIL_SMALL);m_listctrl.SetImageList(&m_imageS 图A-7 列表控件风附录A 控件窗口风 LV_ITEM lvi.mask=LVIF_TEXT|LVIF_IMAGE; lvi.iItem = 0;lvi.iSubItem = 0; lvi.pszText=Item1; lvi.iImage = 1;m_listct
16、rl.SetItemText(inx,1附录A 控件窗口风 LV_ITEM lvi.mask=LVIF_TEXT|LVIF_IMAGE; lvi.iItem = 0;lvi.iSubItem = 0; lvi.pszText=Item1; lvi.iImage = 1;m_listctrl.SetItemText(inx,1,Sub Item m_listctrl.SetItemS e(inx,要设置扩展风格,如LVS_EX_GRIDLINES,用 一一次只允许选中一一按降序排一允许列表项在适当位置被编辑;当用户做完编辑时,父窗口将会收到一LVN_ENDLABELEDIT一禁用滚一父窗口负责绘
17、制一CDC* dc = TEXTMETRIC 这时,当指定列宽时,可以用*tm.tmAveCharWidth字符数生任何错误一样工作。保持图像列表可用的最佳方法是把图像列表窗口类中。class : : CImageList 到该控件的父A.2.3 用Windows API HWND CreateWindowEx(dwExStyle, ComboBoxEx32, WS_CHILD|WS_VISIBLE|dwStylex,y,width, )id,hInstance,用MFC创建扩 HWND CreateWindowEx(dwExStyle, ComboBoxEx32, WS_CHILD|WS_V
18、ISIBLE|dwStylex,y,width, )id,hInstance,用MFC创建扩展组合boex; /usuallyembeddedinparentWS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-8 扩展组合框控件风COMBOBOXEXITEM cbei.mask = CBEIF_INDENT | CBEIF_TEXT = = = = = = /IMAGE TO /IMAGE TO DISPLAY WHEN /# OF PIXELS TO 扩展组合框使用大部分与一般组合框相同的风格,但可以在它的项的边上指定一个图像
19、,并且项可以缩进一个像素。MFCWindows API不显示。但不会从MFC或Windows发送错误消息A.2.4 用Windows APIHWNDCreateWindowEx(dwExStyle,SysAnimate32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, 用MFC创建动画控)id,hInstance,CAnimateCtrlm_animate; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 附录A 控件窗口风 把.avi
20、图像置于控件中附录A 控件窗口风 把.avi图像置于控件中通常,.avi文件被另一个线程回放;该风格使回放不需要线-/ from frame / to frame (-/ number of replays (-停止并关闭一个.avi参见例9和例57A.2.5 用Windows APIHWNDCreateWindowEx(dwExStyle,msctls_trackbar32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, 用MFC创建滑块控)id,hInstance,/ usually embedded in parent WS_VISIB
21、LE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-9 滑块控件风为控件范围内的每一个增量都创建刻度当鼠标压住该控件时,弹出一个弹出窗口,显示滑块的当前位滑块条)控件使用的WM_VSCROLL和WM_HSCROLL消息回传到父窗口,这与动条控件窗口相同。OnHScroll ( )和OnVScroll ( ) 消息处理函数把该控件封装到CScrollBar中,但它真正封装的是一个滑块控件,还需使该类嵌CSliderCtrl类中A.2.6 用Windows APIHWND CreateWindowEx(dwExStyle, SysTreeView3
22、2, WS_CHILD|WS_VISIBLE|dwStylex,y,width,height,)id,hInstance,用MFC创建树式视图控CTreeCtrlm_treectrl; /usuallyembedded WS_CHILD|WS_VISIBLE|dwStylex,y,width,height,)id,hInstance,用MFC创建树式视图控CTreeCtrlm_treectrl; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-10 树式控件风要添加
23、一个可以在该控件中显示的图像列(图A-10中看到的方块是图像,星形是E图像)m_treectrl.SetImageList(&m_imageSmall, m_treectrl.SetImageList(&m_imageS e,tvi.item.mask = TVIF_IMAGE | TVIF_TEXT tvi.hParent = TVI_ROOT; tvi.hInsertAfter=TVI_LAST;tvi.item.iImage=tvi.item.iSelectedImage=0; tvi.item.pszText = pszItem1;tvi.item.s eMask=tvi.item.s
24、 e=HTREEITEM hTreeRoot = 使选项保持被选中状态,即使该控件失去焦点时也保当鼠标移到控件上时,使控件作出可视反附录A 控件窗口风 A.2.7 用Windows APIHWND CreateWindowEx(dwExStyle, msctls_updown32, Text, WS_CHILD|WS_VISIBLE|dwStylex,y,width,height,hWndParent,)id,hInstance,用MFC创建微附录A 控件窗口风 A.2.7 用Windows APIHWND CreateWindowEx(dwExStyle, msctls_updown32,
25、Text, WS_CHILD|WS_VISIBLE|dwStylex,y,width,height,hWndParent,)id,hInstance,用MFC创建微调按钮控CSpinButtonCtrlm_spin; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-11 微调控件风在在调整值大于控件范围的尾值或小于初始值时,使该“伙伴”窗口值设为初始值或尾值 在在初始化该值时,不在千位之逗号在自动选择父窗口中的前一个窗口作为它的“伙伴”窗口;否则,必须使用 Butt
26、onCtrl的SetBuddy ( ) 函数。微调控件在该伙伴窗口中增加或减少该值 在使箭头键可以增加或减少该控在当鼠标移到该控件时,使该控件作出可视反微调(Spin)或上/下(Up/Down)按钮控件主要用来增加一个编辑控件。在这种情况下HORZ风格,可以设置如图A-11所示的任意大小A.2.8 用Windows APIHWND CreateWindowEx(dwExStyle, msctls_progress32, Text, WS_CHILD|WS_VISIBLE|dwStylex,y,width,height,hWndParent,)id,hInstance,用MFC创建进度指示控件C
27、ProgressCtrl m_progress; / usually embedded in parent class WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-12 进度指示控件风 动实现该功能的窗口风格,但只要创建一个普通窗口,然后重载Rectangle ( )绘制条,以及用TextOut ( )WM_PAA.2.9 用Windows APIHWNDCreateWindowEx(dwExStyle,SysHeader32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, heigh
28、t, )id,hInstance,用MFC创 动实现该功能的窗口风格,但只要创建一个普通窗口,然后重载Rectangle ( )绘制条,以及用TextOut ( )WM_PAA.2.9 用Windows APIHWNDCreateWindowEx(dwExStyle,SysHeader32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, )id,hInstance,用MFC创建标题控件风CHeaderCtrl m_header; / usually embedded in parent WS_VISIBLE|WS_CHILD|dwStyle,
29、 rect, pParentWnd, 可视风格(见图A-图A-13 标题控件风添加一个文本列标题(如图A-13所示的第1、2列),用HD_ITEM hdi; / column width in / h/ 0=column 添加一个位图标题(如图A-13所示的第3列),用hdi.mask=HDI_FORMAT|HDI_WIDTH|HDI_BITMAP; hdi.fmt = HDF_CENTER|HDF_BITMAP;hdi.cxy = hdi.hbm=HBITMAP(m_bitmap); /column width in 添加一个具有图标的文本列(如图A-13第4列所示),用hdi.mask=H
30、DI_IMAGE| HDI_FORMAT| HDI_TEXT; hdi.fmt=HDF_LEFT |HDF_IMAGE | HDF_STRING;/ hhdi.iImage= 1; / image number in image / column width in 附录A 控件窗口风 允许用户改变列附录A 控件窗口风 允许用户改变列单独一个标题控件并无多大意义,它的重要性在于报表模式为列表控件的表题。CListCtrl m_listctrl; CHeaderCtrl 一个 CHeaderCtrl然后用ModifyStyle ( ) GetHeaderCtrl ( ) 是CListCtrl的新成
31、员函数,早期的MFC版本可能没有;如果这样的话,还是可以找到标题控件的句柄,通过搜索列表控件的子窗口找到 SysHeader32窗口类,A.2.10 用Windows APIHWNDCreateWindowEx(dwExStyle,SysTabControl32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, )id,hInstance,用MFC创建选项卡控CTabCtrlm_tab; / usually embedded in parent WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风
32、格(见图A-图A-14 选项卡控件风 TC_ITEM tc; 用Ctrl键一次可以选取多个选项 TC_ITEM tc; 用Ctrl键一次可以选取多个选项卡;然而这只适用于 TCS_BUTTONS风使图标在选项卡的左边,但只适用于TCS_FIXEDWIDTH风使在选项卡左边,但只适用于TCS_FIXEDWIDTH允许父窗口绘制在鼠标移到该控件上面时,使控件作出可视反单独一个选项卡控件毫无意义就像一个标题控件没有列表控件一样。如果想要选项卡样式,最好用CPropertySheet创建一个属性表,然后用CPropertyPage类为它添加属性页;这样,如果想要改变属性表使用的选项卡控件风格,可以用
33、GetabControl()CPropertySheetps; CTabCtrl 然后,用ModifyStyle ( ) A.2.11 用Windows APIHWNDCreateWindowEx(dwExStyle,SysMonthCal32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, 用MFC创建月历控)id,hInstance,CMonthCalCtrlm_month; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(
34、见图A-Windows API保持大小不变附录A 控件窗口风 图A-15 日历控件风A.2.12 日期/用Windows API创建日期/HWND CreateWindowEx(dwExStyle, SysDateTimck32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width, height, )附录A 控件窗口风 图A-15 日历控件风A.2.12 日期/用Windows API创建日期/HWND CreateWindowEx(dwExStyle, SysDateTimck32, WS_CHILD|WS_VISIBLE|dwStyle x, y, width
35、, height, )id,hInstance,用MFC创建日期/时间控CDateTimeCtrlm_datetime; /usuallyembeddedinparentclass WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 可视风格(见图A-图A-16 日期/时间控件风除除非复选它,否则应用程序请求时不返回一个日除允许用户按F2键时编辑日期;用户编辑完后,控件发送一个除下拉时,月历控件与日期/时间控件是右对齐CDateTimeCtrl类是MFCAPI调用指定当一个日期/时间控件下拉时,实际上是打开一个月历控件;可以通过调用 Ctrl的GetM
36、onthCalCtrl ( ) 用Windows API:CreateDialogIndirect(hInst, pParentWnd-GetSafeHwnd(), 用MFC创 窗/ usually embedded in parent Text, WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 用用屏幕座标而不是客户窗口座标创框;换句话框是相对于整屏幕创建的,而不是相对于应 用Windows API:CreateDialogIndirect(hInst, pParentWnd-GetSafeHwnd(), 用MFC创 窗/ usually emb
37、edded in parent Text, WS_VISIBLE|WS_CHILD|dwStyle, rect, pParentWnd, 用用屏幕座标而不是客户窗口座标创框;换句话框是相对于整屏幕创建的,而不是相对于应用程序主用是有用框成为最顶端的窗口,直到它;这对于系统范围导用使CreateDialogIndirect ( )发送一个WM_FONT消息到由它创建的窗口,以定一个新字框空闲时发送一个 WM_ENTERIDLE消息到用通常,模框窗口;该风格使该功能 用景用使所有框创建的控件窗口具有 3-D外观,也使所有文本不用用系统默认字体为SYSTEM_FIXED_FONT而不是用框位于工作空
38、间,这可以是父窗口,如果DS_ABSALIGN被设定也可以是屏幕用创建时,鼠标光标框位用框的左上角放置一个问号。如果用户单击该问号,然后再单击一个控件该控件将接收到一个WM_HELP消DialogIndirect ( ) 只调用CreateWindowEx ( )所用Windows APIHWNDCreateWindowEx(dwExStyle,AfxWnd,Text, WS_CHILD|WS_VISIBLE|dwStylex,y,width, )id,hInstance,附录A 控件窗口风 用MFC创建一个普通窗附录A 控件窗口风 用MFC创建一个普通窗CWnd / usually embe
39、dded in parent dwExStyle,AfxWnd,Title,dwStyle, x, y, height, hwndParent, 可视风格( 见图A-, lpParam /*= 图A-17 普通窗口风可视风格2有趣的组合(见图A-图A-18 混合控件风 通通常,完全由父窗口绘制,并且在屏幕上完全包含在它的父窗口中(如通通常是应用程序的主 通通常,完全由父窗口绘制,并且在屏幕上完全包含在它的父窗口中(如通通常是应用程序的主窗口(如框架窗口通包含所有其他通常与一个框架窗口关联的风格 (如边框 通通常是一个信息或数据集合窗口(框和消息框通包含所有其他通常与一个弹出式窗口关联的风格 (
40、如边框通通父窗口绘制子窗子窗口绘制兄弟窗口(其他子窗口通与单选按钮一起使用,用来描绘一组控件:在一个单选按钮被单击时,窗口取消单击组中其他按钮;这只是标记组中第一个输入项丢失的输入项被定义为在下一个WS_GROUP风格发生前的输入项通不管为该窗口设置的宽和高为多少,创建该窗口时使它最大化为屏幕尺寸通使窗口创建时最小通初始创建一个窗口时,使它可见;默认情况下,该窗口是不可见的,直到调用Showindow (SW_SHOW)为止通灰化一个窗口,并把所有的鼠标单击传输给它的父窗通在拖放模式下,用鼠标时,具有该风格的窗口将接收一WM_DROPFILES窗口消通允许用户用Tab键在该窗口的子窗口中移动焦
41、点;但每个子窗口必须WS_TABSTOP通创建一个MDI子窗口。在一个MDI应用程序中,主窗口用NT口类创建的窗口填充它的客户区;然后,该窗创建在它口;该风格是那个窗口的一个标志,用以窗它必须它的哪个子通当一个子窗口被创建、被销毁或被单击时,通常发送一个NOTIFY消息到它的父窗口,该风格关闭这一特通该窗口成为一个最顶端的窗口,窗口管理两个列表:一个是常窗口的列表,另一个是最顶端的窗口列表。管理器总是使最顶端的窗口最后绘制,这可以保持它们在桌面的上端。但是在最顶端的窗口之间,它们还必须竞争最上端的位置通具有该风格的窗口不擦除它的背景和在它下面的任何窗口,因此允许透视任何一个在它下面的窗口。这也
42、可以通过在创建它的窗口类中不指定一种背景色来实现,然而移动该窗口将使背景与它一起移动。该风格为模式操作设计,通常在另一个窗口中绘制一个突出显示部位时使用。如框编辑器突出显示一个控件附录WM描述发lParam指向CREATESTRUCT,它包CreateWindow ( ) 参数;初始化成功时发发送此消息,告诉窗口初始化自发发送此消息,告框初始化自己发ram是接收初始焦点的控件窗口在WM_CREATE消息之后以及在所有对话框中的控件被创建后发送附录WM描述发lParam指向CREATESTRUCT,它包CreateWindow ( ) 参数;初始化成功时发发送此消息,告诉窗口初始化自发发送此消息
43、,告框初始化自己发ram是接收初始焦点的控件窗口在WM_CREATE消息之后以及在所有对话框中的控件被创建后发送发发送此消息,告诉一个窗口已被重调大句柄,lParam是被CreateDialogParam ( )传递的可选参发lParam指向一个AXINFO结构它允许窗口设置它的最小和最大发ram是一个标志,用以区分窗口最大化、最小化还是只是被重调大lParam告诉新窗口的大发发送此消息,告诉一个窗口擦除背发发ram是进行绘制的设备环ram和lParam未被使发lParam指向WM_CREATE使用的同的CREATESTRUCTram和lParam未被使发发ram拥有绘制区域的句柄,区域在第4
44、章中描发发送此消息,告诉窗口它的系统菜单主菜单将被打发发ram非0,则窗口被显ram非0,则窗口已被启发ram拥有菜单对象的句柄,lParam置,如果lParam的的信发 ram指示是否有键盘的Shift-Ctrl-Alt键被按下, lParam指示相对于客户区的发与WM_MOUSEMOVE发发送此消息告诉一个窗口F1键已被按发当鼠标移到它的客户区时被寄送到一发当鼠标左键在窗口的客户区被松开时被寄送到该窗发与WM_MOUSEMOVE (续WM描述没有CS_DBLCLKS窗口类风格的窗口发与WM_MOUSEMOVE相同,但发鼠标右发当鼠标左键在客户区被双击时,被寄到该窗 发与WM_LBUTTON
45、DBLCLK相同,但 (续WM描述没有CS_DBLCLKS窗口类风格的窗口发与WM_MOUSEMOVE相同,但发鼠标右发当鼠标左键在客户区被双击时,被寄到该窗 发与WM_LBUTTONDBLCLK相同,但发里是鼠标发当一个按键被按下时,被寄送到拥有发ram包含虚拟键控代码, lParam发含附加键发与WM_KEYDOWN相发当一个按键时,被寄送到拥有发在WM_KEYDOWN消息被翻译成一个键字符时,被寄送到该窗发ram包含该字符,lParam与DOWNB.2.1 发通所有被创建的没有通当一个控键或任何一个子窗口被创建或被销毁或被单击时,发送 _PARENTNOTIFY通知以告诉父窗通WM_CT
46、LCOLOR、WM_DRAWITEM、WM_MEASUREITEM、 WM_DELETEITEM、WM_CHARTOITEM、WM_VKEYTOITEM和PAREITEM通知被发送到父窗口,以告诉在哪里绘制通知是WM_HSCROLL、滚滚动发通通知包括STN_CLICKED、STN_DBLCLK、STN_ENABLE、静按通通知包括: BN_CLICKED、N_PUSHED、BN_UNPUSHEDBN_DBLCLK、BN_SETFOCUS、通通知包括: EN_SETFOCUS、EN_KILLFOCUS 、EN_CHANGE、EN_UPDATEEN_ERRSPACE、EN_MAXTEXT、EN_
47、HSCROLL、通通知包括: CBN_SELCHANGE、CBN_DBLCLK、CBN_SETFOCUS、CBN_KILLFOCUS、 CBN_EDITCHANGE、CBN_EDITUPDATE、CBN_DROPDOWN、CBN_CLOSEUP、CBN_SELENDOK、编列表组合附录B 消息、控件通知和消息映像B.2.3 WM_NOTIFY发只提供:NM_OUTOFMEMORY和NMHDR是指向NMUPDOWN结构的头只提供:。对于通知选项_SELCHANGETCN_S附录B 消息、控件通知和消息映像B.2.3 WM_NOTIFY发只提供:NM_OUTOFMEMORY和NMHDR是指向NMU
48、PDOWN结构的头只提供:。对于通知选项_SELCHANGETCN_SELCHANGING。当通知是 TCN_KEYDOWNNMHDRNMTCKEYDOWN结构提供: TVN_SELCHANGING TVN_SELCHANGED TVN_GETDISPINFO 树形视图控TVN_SETDISPINFO、TVN_ITEMEXPANDIN_ITEMEXPANDEDTVN_BEGINDRAGTVN_BEGINRDRAGTVN_DELETEITEMTVN_BEGINLABELEDIT、只还提供一般通知消息: NM_OUTOFMEMORY、NM_CLICK、NM_DBLCLK、 NM_RETURNNM_
49、RCLICKNM_RDBLCLK、NM_SETFOCUS、 , NMHDR结构可以是下面的结构之一: NMTVDISPINFO只根据发NMTVKEYDOWN、列表控只提供LVN_ITEMCHANGING 、LVN_ITEMCHANGED 、LVN_INSERTITEM LVN_DELETEITEM、LVN_DELETEALLITEMS、LVN_COLUMNCLIC KLVN_BEGINDRAG、LVN_BEGINRDRAGLVN_ODCACHE、LVN_ITEMACTIVATE 、LVN_ODSECHANGED 、LVN_ODFINDITEM LVN_BEGINLABELEDIT 、 LVN_
50、ENDLABELEDIT 、 LVN_GETDISPINFO LVN_SETDISPINFO、LVN_KEYDOWN、只根据发送 消NMHDR结构可以是下面的结构之一: NMLVDISPINFO ,B.2.4 发辑WM_NOTIFY控件通知:EN_MSGFILTEREN_REQUESTRESIZEEN_SELCHANGE、 EN_DROPFILES、EN_PROTECTED、EN_CORRECTTEXT、E N _ S TO P N O U N D O、 EN_ I M E C H A N G E E N _ S AV E C L I P B O A R D E N _ O L E O P F
51、A I L E D 多信息编ITIONS、EN_LINK、宏消息处理函数调用参 W M _是任何窗口消息值, 每一个标准窗口消息都有属于它自己的宏,它没有参数,并且它的名字和使用基于它的WM_ 设计LRESULndler ( ram,LPARAM lParam)On (message specific)( 因为参数是特定的消息,最好让 Class Wizard添 被宏说明消息处理函数调用参MAND(id, 该该宏MAND消息Void 向处理函数,这里的id是命令该除了允许消息处理 被宏说明消息处理函数调用参MAND(id, 该该宏MAND消息Void 向处理函数,这里的id是命令该除了允许消息
52、处理函数处idLast, Void 续范令ID外,与上面相宏消息处理函数调用参 ON_CONTROL_REFLECT( n 理W M _类型的控件通知,这里 被父窗口 到该控件窗口该宏允许控件窗口处MAND类型的而Handler是所选择的任除了消息处理函数返回一个布尔值外,与上面相同,如果布尔值为TRUE,则也允许父窗口处理该消息nCode是通知代码,而 Handler是所选择的任意除了处理函数返回一个TRUE,则允许父窗口处理该消HBRUSH Void VoidDeleteItem(LPDELETEITEMSTRUCT),UNIT) , UNIT) voidHScroll(U,U)void
53、, voidParentNotify(U,LPARAM) Void Handler ( )BOOL Handler ( Void Handler(NMHDR* pNotifyStruct, LRESULT* result)BOOL Handler(NMHDR* pNotifyStruct, LRESULT* result)附录B 消息、控件通知和消息映像(续宏说明消息处理函数调用参MAND_EX(id, FALSE,则允许OnCmdMsg ( )继续附录B 消息、控件通知和消息映像(续宏说明消息处理函数调用参MAND_EX(id, FALSE,则允许OnCmdMsg ( )继续该除了ID是一个
54、范围以外,与BOOL BOOL )ON_CONTROL(nCode, id, 该MAND控件Void 知指向消息处理ID是一个范围外,ON_CONTROL_RANGE(nCode, idLast, Void_X(id, Handler)ON_BN_DOUBLECLICKED(id,该每个控件通知有它自Void 特有的宏,它只是把 nCode传递给 ON_CONTROL ( )该除了允许控ID为一个范围外,该除了允许ID为一个范围外,与上面相ON_NOTIFY(nCode, id, VoidHandler(NMHDR*,LRESULTON_NOTIFY_RANGE(nCode,id, idLas
55、t,Handler)ON_NOTIFY_EX(nCode, id, VoidHandler(U LRESULT*)BOOL id,id,id, idLast, BOOL LRESULTid,附录从 该 类使用下面的函数可的 C ifif SDI: else if MDI:MDIGet Active()- GetActiveView()-orif附录从 该 类使用下面的函数可的 C ifif SDI: else if MDI:MDIGet Active()- GetActiveView()-orifMDIGetActive()-GetActiveView()-AfxGetApp()或 GetPa
56、rentFrame GetActiveView()-CViewP AfxGetApp()或 ifSDIAfxGetMainWnd()-其他ifSDI: else if MDI:AfxGetMainWnd()-GetActiveView()-ifMDIGet Active()- AfxGetMainWnd()-MDIGetActive()-GetActiveView()-除了使用CView类的() 另一个类,则应把该函数移到那个类中。参见例 1理这一组视图;可以作为 m_ViewList该列表, m_ViewList是个CPtrlist成员变量。若当前有效的视图,对于一个 SDI应用程序可附录C
57、 附录C GetAfxMainWnd()-而对于一个MDI应用程序,则调用GetAfxMainWnd()-MDIGetActive()-注意如果包含下面语句在应用程序类的包含文件中时,只能class CWzdApp:public extern 应用程序类然而,在一个封装的C+环境中,当可以用AfxGetApp ( 时,不赞成使用theApp附录,下面这些问题虽然与 VC+或MFC设置Developer Developer Studio调试器外,还可以调用框架、 DEVELOPER STUDIO,甚至MFC类函数以及第组织和建立工程 如果应用程序只是一个执行文件,而没有附加的 DLL。SPY.E
58、XE是附录,下面这些问题虽然与 VC+或MFC设置Developer Developer Studio调试器外,还可以调用框架、 DEVELOPER STUDIO,甚至MFC类函数以及第组织和建立工程 如果应用程序只是一个执行文件,而没有附加的 DLL。SPY.EXE是潜在的工具,它不仅可调试自身的应用程序,而且也作为一种“一个或多个打算在应用程序中用MFC VC+设置DeveloperD.1.1 Developer Studio可在ools菜单中添加定制菜单命令,在环境内运行其他应用程序,方法如下:单击Tools/Customize菜单命令,以打开Customize属性表选择Tools(De
59、veloper Studio应该已经在该菜单中预装了几个命令)。选中底部的空白焦点矩形,并输入需要在菜单中显示的名字;按回车键将打开三辑框,分别4) d、Arguments和Initial Directoryd中,输入要运行的执行文件的路径在Arguments中,输入传递给执行文件的参数在Initial Directory中,输入运行该命令前Developer Studio。令添加到ToolsExplorer命使Windows Explorers最初在工中打开。菜单名字输入到Explorer命令输入C:Windowsexplorer.exe或C:Winntexplorer.exe(根据操作系统
60、而定),参数输入(Initial Directory)DOS命令 打开一个初始在工下MS-DOS窗口。菜单命令输入MS-DOS,命令输附录D 开发中注意事C:WinntSystem32cmd.exe或d.exe(根据操作系统而定),没有参数,在中输入$(当入Editor,在命令中输入编辑器的路径,在参数中输入$ (FileName) $ (FileExt)中输入$ (WkspDir)。当执行任何一个这样的菜单命令时, Developer 附录D 开发中注意事C:WinntSystem32cmd.exe或d.exe(根据操作系统而定),没有参数,在中输入$(当入Editor,在命令中输入编辑器的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年家居AI智能控制协议
- 2026年电器安全培训内容核心要点
- 2026年工人雨季安全培训内容系统方法
- 2026年辐射安全培训自行培训内容实操流程
- 兴安盟扎赉特旗2025-2026学年第二学期五年级语文期中考试卷(部编版含答案)
- 唐山市丰南市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 西安市碑林区2025-2026学年第二学期二年级语文第五单元测试卷(部编版含答案)
- 眉山地区彭山县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 2026年寄宿学校安全培训内容知识体系
- 宜春市宜春市2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 小学信息技术四年级下册《制作校园生活短视频》教学设计
- 睿信咨询:2026年中国能源行业高质量发展白皮书
- 2026 婴幼儿发展引导员(中级四级)职业技能鉴定考试题库(完整版)
- 新疆喀什地区事业单位笔试真题2025年(附答案)
- 2024-2025学年度南京特殊教育师范学院单招《语文》测试卷(历年真题)附答案详解
- 理科综合-2026年新疆普通高考三月适应性检测试卷(含答案)
- 2025年宁波甬开产城运营管理有限公司招聘备考题库及答案详解(易错题)
- 2026年山东省初中信息技术学业水平考试试题库模拟题及答案解析
- 2026年杭州市余杭区闲林街道办事处招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年阿坝州面向社会公开招募新兴领域党建工作专员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 小学科学教育中虚拟现实人工智能资源交互设计对学生科学思维能力的培养教学研究课题报告
评论
0/150
提交评论