MFC学习笔记.day01续-调试MessageBox,注册窗口,创建窗口,显示,更新,消息循环,回调函数
来源:互联网 发布:淘宝社区首页 编辑:程序博客网 时间:2024/06/11 05:48
MFC调试
在MFC 中程序繁杂,很容易出错。有时间断点不一定能直观的显示程序执行的情况。所以,我们可以再函数中任意一行添加
MessageBox(_T("xxxxxxxxxxxxxxxxx"));
或者:
MassageBox(_T("程序执行到此处"));
两个函数可以直接生成指定风格的消息对话框,而不需要我们在每次使用的时候都要去创建对话框资源和生成对话框类等。这两个函数就是CWnd类的成员函数MessageBox()和全局函数AfxMessageBox()。
int MessageBox( HWND hWnd, //Handle to the owner window of the message box to be created. //If this parameter is NULL, the message box has no owner window. LPCTSTR lpText, //Pointer to a null-terminated string that contains the message to be displayed LPCTSTR lpszCaption = NULL, //Pointer to a null-terminated string that contains the dialog box title. If this parameter is NULL, the default title Error is used. UINT nType = MB_OK );
nType的取值可以是下面两个表中任取一个值,也可以是各取一个值的任意组合。即可以指定一个对话框类型,也可以指定一个对话框图标,还可以两者都设定。
nType 取值 参数说明
MB_ABORTRETRY 有“终止”、“重试”和“忽略”按钮
MB_OK 有“确定”按钮
MB_OKCANCEL 有“确定”和“取消”按钮
MB_RETRYCANCEL 有“重试”和“取消”按钮
MB_YESNO 有“是”和“否”按钮
MB_YESNOCANCEL 有“是”、“否”和“取消”按钮
对话框类型表
nType 取值 显示图标
MB_ICONEXCLAMTION
MB_ICONWARNING
MB_ICONASTERISK
MB_ICONINFORMATION
MB_ICONQUESTION
MB_ICONHAND
MB_ICONSTOP
MB_ICONERROR
#####ExampleVisual C++ Copy Code void CMainFrame::OnDisplayErrorMessage(){ // This displays a message box with the title "Error" // and the message "Help, Something went wrong." // The error icon is displayed in the message box, along with // an OK button. MessageBox(_T("Help, Something went wrong."), _T("Error"), MB_ICONERROR | MB_OK);}
注册窗口类:RegisterClass
ATOM RegisterClass( CONST WNDCLASS *lpWndClass // class data 窗口类结构体的指针);
创建窗口——CreateWindow
① 定义一个句HWND hwnd
② 创建窗口
Hwnd=CreateWindow()
HWND CreateWindow( LPCTSTR lpClassName, // registered class name 一定要是已经注册的类名 LPCTSTR lpWindowName,// window name 窗口的名字 DWORD dwStyle, // window style 窗口的类型 int x, // horizontal position of window 窗口显示的时候的左上角的x的坐标值 int y, // vertical position of window 窗口显示的时候的左上角的y的坐标值 int nWidth, // window width 窗口的大小的宽度 int nHeight, // window height 窗口大小的高度 HWND hWndParent, // handle to parent or owner window 指示的副窗口的句柄 HMENU hMenu, // menu handle or child identifier菜单的句柄 HINSTANCE hInstance, // handle to application instance 当前应用程序的实例的句柄 LPVOID lpParam // window-creation data 窗口创建的附加参数);
③ 显示窗口 ——ShowWindow
BOOL ShowWindow(
HWND hWnd, // handle to window 要显示的窗口的指针,显示的是哪一个窗口
int nCmdShow // show state 要显示的窗口的状态
);
④ 更新窗口 ——UpdataWindow
⑤ 消息循环
MSG msg;
While (GetMessage(&msg,NULL,0,0))这里用GetMessage从我们的消息的队列中取出一条消息
当执行PostQuitmessage时会产生Wm_quit消息,此时消息循环跳出,结束消息循环
{
TranslateMessage(&msg); 将Wm-Keydown 和 keyup 的消息转化为WM-CHAR消息,并且将转化后的新消息投递到我们的消息队列当中
DispatchMessage(&msg);将收到的消息传到我们的系统,系统来调用我们窗口的回调函数,交由回调函数来处理
}
备注: DispatchMessage是将消息分发给操作系统,然后操作系统再去调用回调函数,由回调函数来进行处理。
回调函数:
LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window 窗口的句柄 UINT uMsg, // message identifier 消息的标识 WPARAM wParam, // first message parameter 第一个消息的附加参数 LPARAM lParam // second message parameter 第二个消息的附加参数);
说明:这个函数的形式不能变,但是可以改变函数名。
- MFC学习笔记.day01续-调试MessageBox,注册窗口,创建窗口,显示,更新,消息循环,回调函数
- 笔记 VC++ Lesson1 句柄 / 窗口 / 消息循环 / 回调函数
- 2013.8.3 学习笔记《windows核心编程》(七) 窗口类,窗口显示更新与消息
- windows编程学习笔记(1)创建窗口与消息循环
- WinMain函数 注册窗口类 消息循环
- 在OpenInventor回调函数中创建窗口错误
- mfc创建窗口居中显示
- MFC学习笔记-回调函数
- MESSAGEBOX 等消息,对话窗口
- win32创建窗口及其消息循环
- 创建窗口第三步 消息循环(详解)
- 学习笔记之深入浅出MFC 第2讲 窗口类注册与窗口的诞生
- MFC窗口创建、销毁消息流程
- MFC窗口创建、销毁消息流程
- MFC窗口创建、销毁消息流程《转》
- MFC窗口创建、销毁消息流程
- MFC学习笔记.day02-创建窗口全过程,MFC执行顺序,BUTTON控件,对象与窗口关系
- MFC调用控制台窗口显示调试信息
- leetCode 77.Combinations (组合)
- HDU 1969 Pie
- 数据结构算法代码
- 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造
- 正则表达式删除注释及空白行
- MFC学习笔记.day01续-调试MessageBox,注册窗口,创建窗口,显示,更新,消息循环,回调函数
- 【Java】找出数组中的某个元素,数组原本有序,但已被旋转多次
- 深入分析Sleep(0)与Sleep(1)的区别
- POJ 1655 Balancing Act (树形dp 树的重心)
- linux(ubuntu) 下 无法打开(挂载)U盘,或者双系统的window下的盘符
- 孤立点挖掘算法
- sql server生成临时表的快捷方法
- 数据挖掘笔记
- php.ini的加载位置