MFC中文档类和视图类中MessageBox的不同,Invalidate()在文档类使用是未申明变量
来源:互联网 发布:淘宝上口碑好的茶叶店 编辑:程序博客网 时间:2024/05/25 23:29
最近写程序想把读数据分开到文档类里,结果出现一堆之前没遇到的问题,例如MessageBox的用法还不一样了,以及我想读完文件后让窗口更新一下,结果发现Invalidate()这个函数在CDocument类里面是未声明的,在网上查阅相关资料后,总结了一下之前遇到的问题。
此为CDocument类里面打开文件的部分程序:
以下为CView类里的程序:
MessageBox()功能是一样的,也分为好几种不同类型的使用方式;
Windows API: MessageBox();
CWnd:MessageBox();
AfxMessageBox();
一、API函数Messagebox
原型如下:
int
WINAPI MessageBox(
HWND
hWnd,
LPCTSTR
lpText,
LPCTSTR
lpCaption,
UINT
uType);
hWnd:指窗口句柄 lpText:要显示的文本 lpCaption:标题 uType:类型,例如:MB_OK,MB_YESNO
二、 CWnd的成员函数MessageBox()
int MessageBox(LPCTSTRlpszText,LPCTSTRlpszCaption=NULL,UINTnType=MB_OK);
CWnd已经指明了窗口句柄,所以这个成员函数不需要再有hWnd了。
例如:MessageBox(“Error”);//采用了c++的语法特性
三、MFC中的全局函数AfxMessageBox
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AfxMessageBox(UINT nIDPrompt,UINT nTYpe,UINT nIDHelp);
第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名(如Hello)。在第二种形式中,nIDPrompt为要显示的文本字符串在字符串表中的ID。AfxMessageBox没有HWND参数,也不能设置消息框标题(默认标题为应用程序的可执行文件名)
了解这三种形式之后,再看下MFC中这些类的框架
很显然,CDocument类没有继承CWnd的特性,而CFrameWnd和CView都是CWnd的子类。所以在CDocument类中使用的MessageBox其实是ApI函数,所以需要指定窗口,而在CView 中使用的MessageBox是无需指定窗口的
所以在非CWnd类中使用MessageBox是比较繁琐的,必须指定标题,文本,样式,当然也可以使用CWnd::MessageBox()或者AfxMesageBox();在使用MFC时,如果懒得记这些,就全部都用AfxMessageBox()最为方便。
此外,之前一直以为在MFC中就能使用Invalidate(),后来查MSDN才知道,Invalidate()是CWnd的成员函数,很显然CDocument不是CWnd的子类,所以没有它的申明和定义,因此学习MFC,了解MFC类的框架图是不可或缺的!
- MFC中文档类和视图类中MessageBox的不同,Invalidate()在文档类使用是未申明变量
- mfc:单文档中对话框类调用视图类和框架类成员变量的实例
- MFC中文档和视图的关系
- MFC中视图类和文档类怎样连接起来的
- 单文档视图内存DC画图时不同的类中获得的设备描述表是不一样的
- MFC中单文档创建两个视图类,左右分开
- 单文档中文档视图类之间的关系
- MFC中视图类、框架类、文档类之间句柄指针的转换(待完善)
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法 .
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC中文档/视图类结构内的相互调用方法总结
- MFC中获取各种类(文档、视图、框架、应用程序)指针的方法
- MFC文档应用程序中常用几个类指针的获取和使用(转载)
- MFC中文档视图框架和文档模板之间的关系
- KPI、KPA、OKR
- Head First PMP – 10 – 沟通管理(Communications Management)
- imshow,imagesc,image区别与认识
- 详解Javahome 与 Path 与ClassPath的含义
- 深入理解HTTP协议、HTTP协议原理分析
- MFC中文档类和视图类中MessageBox的不同,Invalidate()在文档类使用是未申明变量
- ScrollView中嵌套ListView滚动效果冲突问题解决
- Codeforces Round #345 (Div. 2)D. Image Preview
- React-表单详解
- ubuntu也有防火墙
- Qlist的用法
- android:lineSpacingMultiplier在不同版本Eclipse下的使用细节。
- Linux下补丁的介绍及使用
- Git 的origin和master分析