




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
mfc学习心得范文 Afx Messag eBox与Messag eBox的区别Afx Messag eBox的函数原型int Afx MessageBox(LPCTSTR lpszText,UI NTnType=MB_OK,UI NTnI DHelp=0);int AFXAPIAfxMessag eBox(UI NTnI DPrompt,UI NTnType=MB_OK,UI NTnI DHelp=(UI NT)1);在第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名(如Hello)。 在第二种形式中,nI DPrompt为要显示的文本字符串在字符串表中的I D。 函数调用时会自动从字符串表中载入字符串并显示在消息框中。 nType为消息框中显示的按钮风格和图标风格的组合,可以采用|(或)操作符组合各种风格。 按钮风格MB_ABORTRETRYI GNORE消息框中显示Abort、Retry、I gnore按钮MB_OK显示OK按钮MB_OKCANCEL显示OK、Cancel按钮MB_RETRYCANCEL显示Retry、Cancel按钮MB_YESNO显示Yes、No按钮MB_YESNOCANCEL示Yes、No、Cancel按钮图标风格MB_I CONINFORMATI ON显示一个i图标,表示提示MB_I CONEXCLAMATION显示一个惊叹号,表示警告MB_I CONSTOP显示手形图标,表示警告或严重错误MB_I CONQUESTION显示问号图标,表示疑问与AfxMessag eBox类似的函数MessageBox,它是CWnd的类成员函数:int MessageBox(LPCTSTR lpszText,LPCTSTR lpszCaption=NULL,UI NTnType=MB_OK);两个函数的区别Afx MessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。 举例Afx MessageBox(“Are yousure?”,MB_YESNO|MB_I CONQUESTION);int a=MessageBox(TEXT(是否确认删除?),TEXT(Warning!),4);if(a=6)AfxMessageBox(Yes);else AfxMessageBox(No);(其中#define IDYES6#define IDNO7)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指针曲折转换得到的,不用程序员操心了。 WM_INITDIALOG WM_INITDIALOG消息是对话框才能收到的消息,表明对话框及其所有子控件都创建完毕了。 这个状态肯定是调用显示对话框的函数之前。 LRESULT CALLBACKWindowProc(HWND hwnd,/handle towindow UINTuMsg,/WM_INITDIALOG WPARAMwParam,/handle tocontrol(HWND)L PARAMlParam/initialization parameter);wParam是将要设置的获取键盘焦点的控件句柄lParam是初始化参数见(msdn)WM_INITDIALOG与WM_CREATE的区别WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕.在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。 因此在此消息响应函数中无法对控件进行修改和初始化。 而WM_INITDIALOG消息响应函数是在程序运行时,当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息。 因此可以在WM_INITDIALOG消息响应函数中添加对框控件的初始化和修改。 EnableWindow函数功能该函数允许或禁止指定的窗口或控制接受鼠标输入或键盘输入。 当输入被禁止时窗口不能接收鼠标单击和按键等类输入;当输入允许时,窗口接受所有的输入。 函数原型BOOL EnableWindow(HWND hWnd,BOOL bEndble);参数hWnd允许或禁止的窗口句柄。 bEnable指定是允许还是禁止窗口。 如果这个参数为TRUE,窗口允许;如果参数为FALSE,则窗口被禁止。 返回值如果窗口此前曾被禁止,则返回值为非零;如果窗口此前未被禁止,则返回值为零。 若想获得更多错误信息,请调用GetLastError函数。 备注如果窗口的使能状态正在改变,则在EnableWindow函数返回前发送一个WM_ENABLE消息。 如果窗口己经被禁止,则它的所有子窗口都被禁止,即使未向它们发送WM_ENABLE消息。 在一个窗口被激活前必须是使能的。 例如,如果应用程序正在显示一个无模式对话框并且禁止了它的主窗口,则应用程序在销毁对话框之前一定要使能该主窗口。 否则,将有另外一个窗口接受键盘焦点并且被激活。 如果一个子窗口被禁止,则在系统确定由哪一个窗口接受鼠标消息时该子窗口将被忽略。 当窗口被创建时缺省为使能状态。 要创建一个初始被禁止的窗口,应用程序可以在CreateWindowh函数和CreateWindowhEx中指定WS_DISABLED风格。 在窗口被创建后,应用程序可以使用EnaoleWindow函数来使能和禁止窗口。 应用程序可以使用这个函数来使能或禁止在对话框内的控制。 一个被禁止的控制不能接受键盘焦点用户也不能进入该控制。 它的子窗口控件(如单选按钮、复选框、滚动条等)之一就是要在屏幕上绘制每次WM_CTLCOLOR邮件是发送到一个窗口。 此消息之前控件的绘制。 当需要更改控件的外观这可以通过处理WM_CTLCOLOR消息。 更多信息使用WM_CTLCOLOR消息当发送WM_CTLCOLOR时,wParam包含为子窗口(在本例中该控件)显示上下文的句柄。 lParam的LOWORD标识子窗口由其ID号并lParam的HIWORD包含为下列值之一指定要绘制的控件的类型CTLCOLOR_BTN buttoncontrol CTLCOLOR_DLG dialogbox CTLCOLOR_EDIT editcontrol CTLCOLOR_LISTBOX listbox CTLCOLOR_MSGBOX messagebox CTLCOLOR_SCROLLBAR scrollbar CTLCOLOR_STATIC statictext,frame,or rectangle在处理时WM_CTLCOLOR画笔的句柄必须返回。 若要返回画笔的句柄失败将导致在调试版本的Windows中调试显示器上一个Windows FatalExit。 DefWindowProc()已为此邮件的响应中返回一个句柄;但是,应用程序可能返回不同的句柄自定义控件的颜色。 返回的句柄指定要用来绘制该控件画笔。 例如对于Windows2.x在下面的代码绘制的所有按钮浅灰色背景case WM_CTLCOLOR:if(HIWORD(lParam)=CTLCOLOR_BTN)return(GetStockObject(LTGRAY_BRUSH);return(GetStockObject(WHITE_BRUSH);在这种情况下,所有其他控件的背景绘制白色。 请注意GetStockObject()返回参数所指定的股票画笔的句柄。 若要将在Windows3.0和更高版本中的一个按钮控件的背景色就需要创建一个所有者绘制按钮。 返回画笔的句柄提供了一些有趣的可能性,因为画笔的句柄不是限于从GetStockObject()返回。 可以从位图生成图案画笔。 如果图案画笔的句柄返回响应WM_CTLCOLOR消息,该画笔将用于绘制控件的背景。 下面的代码的更改画图中找到的购物篮织物模式的滚动条的滚动块轨道区域绘制/*Add theseglobal variables.The arrayof WORDsspecifies the*/*pattern forthe brush*/HBRUSH hBrush;HBITMAP hBitmap;WORD wWeave=0x0F,0x8B,0xDD,0xB8,0x70,0xE8,0xDD,0x8E;./*Add theselines toWinMain*/hBitmap=CreateBitmap(8,8,1,1,(LPSTR)wWeave);hBrush=CreatePatternBrush(hBitmap);./*Add thiscase tothe Windowsprocedure orwherever the*/*messages areprocessed.*/case WM_CTLCOLOR:if(HIWORD(lParam)=CTLCOLOR_SCROLLBAR)return(hBrush);return(GetStockObject(WHITE_BRUSH);的WM_CTLCOLOR消息也适用于控件的下列五类1.复选框、单选按钮和推按钮绘制矩形区域的控件位于用选定的画笔;控制形状和文本绘制上绘制的图案。 2.控件绘制区域。 3.分组框绘制标题文本的背景矩形区域。 4.滚动条绘制跟踪缩略图周围区域。 5.列表框绘制列表区域。 静态文本、框架,和矩形不受影响的WM_CTLCOLOR。 注在3.0版及更高版本的Windows,应用程序不能更改的按钮表面颜色。 但是,用户可以使用控制面板来更改系统中的所有应用程序的按钮颜色。 此外可以通过修改的WIN.INI文件,以添加颜色部分来完成这一ButtonFace=指定按钮表面颜色的RGB颜色值的行。 处理WM_CTLCOLOR消息只会更改由应用程序创建的子窗口的颜色。 Windows将WM_CTLCOLOR消息发送到每个这些控件的父窗口。 滚动条的一部分包括由Windows的控件或列表框不会受到影响。 滚动块跟踪WIN.INI中或通过控制面板,只可以更改条形图的系统生成的滚动的区域。 也可能是将绘制一个对话框中的整个背景。 下面的代码可用于提供对话框框颜色long FARPASCAL MainWindowProc(.);.case WM_CREATE:hTempBrush=LoadBitmap(hInst,(LPSTR)MyPatternBrush);hBrush=CreatePatternBrush(hTempBrush);DeleteObject(hTempBrush);.case WM_DESTROY:DeleteObject(hBrush);.BOOL FARPASCAL MyDialogProc(.);.case WM_CTLCOLOR:if(bMonoChrome)return(FALSE);/Do nothingif ona monochromemonitor/bMonoChrome isa globalset during/initialization.if(CTLCOLOR_DLG=HIWORD(lParam)UnrealizeObject(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年自考专业(护理)考试黑钻押题含答案详解(综合卷)
- 智慧树知道网课《通信工程专业导论》课后章节测试答案
- 中医儿科练习题库含答案
- 2023年度冶金工业技能鉴定考前冲刺试卷附完整答案详解(典优)
- 2025年远程协作的工具与平台
- 执业药师之《西药学专业一》模拟题库【含答案详解】
- 2025火电电力职业鉴定考前冲刺练习题及完整答案详解【网校专用】
- 2024年安全员考试题库检测试题打印及答案详解(易错题)
- 2024-2025学年邮政行业职业技能鉴定考前冲刺测试卷附完整答案详解【典优】
- 2025年初三毕业试卷及答案
- 借款合同中国农业银行担保借款合同3篇
- 雨水管网扩容改造工程建设方案
- 2025年国家电网招聘之电网计算机考试题库含答案(精练)
- 苏教版一年级数学上册月考测试卷(一)(范围:游戏分享至第一单元)(含答案)
- 2025至2030中国电镀工业园区行业发展趋势分析与未来投资战略咨询研究报告
- 2025-2026学年度武汉市部分学校高三年级九月调研考试 英语试卷(含答案)
- 2025秋大象版(2024)小学科学三年级上册《测量风向》教学设计
- 建筑装修工程质量监督管理制度
- 不锈钢栏杆施工全流程方案
- 国企人力资源岗笔试模拟试题及参考答案
- 2025-2026学年人教精通版四年级英语上册(全册)教学设计(附目录)
评论
0/150
提交评论