MFC入门基础
前言
如果你是在Windows平台上做GUI开发,MFC(微软基础类库)是一个很好的选择,毕竟Windows累积用户群庞大,市场接受程度高。
但是,学习MFC不仅仅要学习用MFC,还要学习MFC的框架设计思想。
很多公司在一些做了很久的项目上,往往都是有自己的类库、自己的框架,我们只需要在其基础上不断的完善和扩展。如果你不了解类库,你是根本无从下手。这也是我们要学习类库、框架设计的原因。
一、基本概念的理解
- SDK和API
SDK: 软件开发工具包,建立应用软件的开发工具的集合。
API: Windows操作系统提供给应用程序编程的接口,Windows 操作系统通过调用API函数进行控制 - 窗口和句柄
窗口是 Windows 应用程序中一个非常重要的元素,一个 Windows 应用程序至少要有一个窗口,称为主窗口。窗口是Windows应用程序与用户直接交流的工具,接受用户的输入和显示输出。一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单、最小化框、最大化框、 可调边框。
句柄( HANDLE)可以理解为一个标识符,一个标志号用来识别和区别的。图标句柄( HICON)、 光标句柄( HCURSOR) 和画刷句柄( HBRUSH)。 - WinMain函数
WinMain是Windows程序的入口点函数,相当于c语言中的main函数,当WinMain 函数结束或返回时,Windows应用程序结束。 - 消息和消息队列
Windows 程序设计中都是由一个个消息事件组成的,用户的一个操作,操作系统会感知到,将这个操作包装成一个消息,然后传递给应用程序的消息队列中去,等待应用程序的处理
二、创建窗口基本步骤
- 设计一个窗口类
WNDCLASS wc; //窗口类变量
wc.cbClsExtra = 0; //类附加内存
wc.cbWndExtra = 0; //窗口附加内存
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景色为白色
wc.hCursor = (HCURSOR)LoadCursor(NULL, IDC_HELP); //帮助光标
wc.hIcon = (HICON)LoadIcon(NULL, IDI_WARNING); //警告图标
wc.hInstance = hInstance; //应用程序实例,为WinMain第1个形参
wc.lpfnWndProc = WinProc; //窗口过程函数名字
wc.lpszClassName = TEXT(“MyWin”); //类的名字
wc.lpszMenuName = NULL; //没有菜单
wc.style = 0; //类的风格,填0,使用默认风格
2 注册窗口类
RegisterClass(&wc);
- 创建窗口
HWND hWnd = CreateWindow(
TEXT("MyWin"), //窗口类名字
TEXT("测试"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, CW_USEDEFAULT, //窗口x,y坐标,使用默认值
CW_USEDEFAULT, CW_USEDEFAULT, //窗口宽度,高度,使用默认值
NULL, //无父窗口
NULL, //无菜单
hInstance, //应用程序实例句柄,为WinMain第1个形参
NULL); //附件信息,通常设置为NULL
- 显示和更新窗口
ShowWindow(hWnd, SW_SHOWNORMAL); //SW_SHOWNORMAL为普通模式
UpdateWindow(hWnd);
- 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); //翻译
DispatchMessage(&msg); //分发信息
}
return msg.wParam;
}
- 窗口回调函数
/窗口过程函数
LRESULT CALLBACK WinProc(
HWND hWnd, //信息所属的窗口句柄
UINT uMsg, //消息类型
WPARAM wParam, //附加信息(如键盘按键)
LPARAM lParam //附加信息(如鼠标点击坐标)
)
{
switch (uMsg)
{
case WM_KEYDOWN: //键盘按下
MessageBox(hWnd, TEXT("键盘按下"), TEXT("键盘"), MB_OK);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
//以windows默认方式处理
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}
总结
:
以上就是今天总结,本文仅仅简单介绍了MFC的使用,上面的总结来自观看黑马程序员MFC教程,感谢老师的帮助。以下是老师的资料
链接:https://pan.baidu.com/s/1-QHGfZSA4iY1UpyMuGodLA
提取码:u137