2021-02-22


MFC入门基础

前言

如果你是在Windows平台上做GUI开发,MFC(微软基础类库)是一个很好的选择,毕竟Windows累积用户群庞大,市场接受程度高。

但是,学习MFC不仅仅要学习用MFC,还要学习MFC的框架设计思想。

很多公司在一些做了很久的项目上,往往都是有自己的类库、自己的框架,我们只需要在其基础上不断的完善和扩展。如果你不了解类库,你是根本无从下手。这也是我们要学习类库、框架设计的原因。


一、基本概念的理解

  1. SDK和API
    SDK: 软件开发工具包,建立应用软件的开发工具的集合。
    API: Windows操作系统提供给应用程序编程的接口,Windows 操作系统通过调用API函数进行控制
  2. 窗口和句柄
    窗口是 Windows 应用程序中一个非常重要的元素,一个 Windows 应用程序至少要有一个窗口,称为主窗口。窗口是Windows应用程序与用户直接交流的工具,接受用户的输入和显示输出。一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单、最小化框、最大化框、 可调边框。
    句柄( HANDLE)可以理解为一个标识符,一个标志号用来识别和区别的。图标句柄( HICON)、 光标句柄( HCURSOR) 和画刷句柄( HBRUSH)。
  3. WinMain函数
    WinMain是Windows程序的入口点函数,相当于c语言中的main函数,当WinMain 函数结束或返回时,Windows应用程序结束。
  4. 消息和消息队列
    Windows 程序设计中都是由一个个消息事件组成的,用户的一个操作,操作系统会感知到,将这个操作包装成一个消息,然后传递给应用程序的消息队列中去,等待应用程序的处理

二、创建窗口基本步骤

  1. 设计一个窗口类

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);
  1. 创建窗口
 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
  1. 显示和更新窗口
 ShowWindow(hWnd, SW_SHOWNORMAL); //SW_SHOWNORMAL为普通模式
	UpdateWindow(hWnd);
  1. 消息循环
 MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg); //翻译
		DispatchMessage(&msg); //分发信息
	}

	return msg.wParam;
}
  1. 窗口回调函数
 /窗口过程函数
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值