第1章-MFC程序运行流程-程序员宅基地

技术标签: c++  MFC  

流程
  1. WinMain函数编写
  2. 设计窗口类(WNDCLASS)
  3. 注册窗口类(RegisterClass)
  4. 创建窗口(CreateWindow)
  5. 显示并更新
  6. 消息循环
  7. 窗口过程函数(wndclass->lpfnWndProc)
代码
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

int WINAPI WinMain(//the entry point of programme
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{
    
	WNDCLASS wndcls; //1.the feature of window
	wndcls.cbClsExtra=0;
	wndcls.cbWndExtra=0;
	wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//the black brush wipe the backgorund of window
	wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
	wndcls.hInstance=hInstance;
	wndcls.lpfnWndProc=WinSunProc;//the function of windows procedure
	wndcls.lpszClassName="MFC Procedure";
	wndcls.lpszMenuName=NULL;
	wndcls.style=CS_HREDRAW | CS_VREDRAW;
	
	RegisterClass(&wndcls);//2.register windclass

	HWND hwnd;
	hwnd=CreateWindow("MFC Procedure","新窗口创建",WS_OVERLAPPEDWINDOW,
		0,0,600,400,NULL,NULL,hInstance,NULL);

	ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);//direct send WM_PAINT;

	MSG msg;
	//while(bRet=GetMessage(&msg,hWnd,0,0))!=0)
	//{
    
		//if(bRest==-1){//handle the error}
		//else{}
	//}
	while(GetMessage(&msg,NULL,0,0))//avoid endless loop
	{
    
		TranslateMessage(&msg);//translate the message of key_buton to ASCII
		DispatchMessage(&msg); //repass message to system,then OP call functional for repaly
	}
	return 0;
}

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    
	switch(uMsg)
	{
    
	case WM_CHAR:
		char szChar[20];
		sprintf(szChar,"char is %d",wParam);
		MessageBox(hwnd,szChar,"weixin",0);
		break;
	case WM_LBUTTONDOWN:
		MessageBox(hwnd,"mouse clicked","weixin",0);
		HDC hdc;
		hdc=GetDC(hwnd);
		TextOut(hdc,0,50,"计算机编程语言培训",strlen("计算机编程语言培训"));
		ReleaseDC(hwnd,hdc);
		break;
	case WM_PAINT:
		HDC hDC;
		PAINTSTRUCT ps;
		hDC=BeginPaint(hwnd,&ps);
		TextOut(hDC,0,0,"新星人类",strlen("新星人类"));
		EndPaint(hwnd,&ps);
		break;
	case WM_CLOSE:
		if(IDYES==MessageBox(hwnd,"是否真的结束?","MFC",MB_YESNO))
		{
    
			DestroyWindow(hwnd);//send WM_DESTROY
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);//send WM_QUIT and Return
		break;
	default:
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Bigfish_k/article/details/106363825

智能推荐

ifcplusplus 示例 函数中英文 对照分析以及流程图_ifcplusplus 消息绑定-程序员宅基地

文章浏览阅读874次,点赞20次,收藏22次。ifclusplus 中英文函数对照表_ifcplusplus 消息绑定

Qt WMIC命令获取一些硬件信息_qfwmi-程序员宅基地

文章浏览阅读672次。WMIC常用大量的命令可以百度查询/* * 获取cpu名称: wmic cpu get Name * 获取cpu核心数: wmic cpu get NumberOfCores * 获取cpu线程数: wmic cpu get NumberOfLogicalProcessors * 获取cpu序列号: wmic cpu get processorid * 查询主板序列号: wmic baseboard get serialnunber * 查询bios序列号: wmic _qfwmi

多机调度问题-贪心算法_多机调度问题贪心算法-程序员宅基地

文章浏览阅读9.2k次,点赞3次,收藏21次。设有n个独立的作业{1, 2, …, n}, 由m台相同的机器进行加工处理. 作业i所需时间为t i. 约定:任何作业可以在任何一台机器上加工处理, 但未完工前不允许中断处理,任何作业不能拆分成更小的子作业。要求给出一种作业调度方案,使所给的n 个作业在尽可能短的时间内由m台机器加工处理完成。 多机调度问题是一个NP完全问题,到目前为止还没有完全有效的解法。对于这类问题,用贪心选择策略有时可以设_多机调度问题贪心算法

计算机毕业设计选题分享-基于flask徐州市天气信息可视化分析系统04600(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等-程序员宅基地

文章浏览阅读980次,点赞23次,收藏22次。免费领取项目源码,请关注赞收藏并私信博主,谢谢-天气信息可视化分析系统主要功能模块包括系统首页、轮播图、公告消息、资源管理(天气资讯、资讯分类)系统用户(管理员、普通用户)模块管理(天气预报、天气数据),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采用Python技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。

php+mysql软件测试文档管理系统-计算机毕业设计源码28035_文档管理系统源码-程序员宅基地

文章浏览阅读788次,点赞2次,收藏2次。用户功能:1、系统对于用户的个人信息的基本管理:用户可以登录和注册系统,可以查看个人信息,对于个人资料进行修改以及修改密码等。2、用户可以根据系统分类上传文档:用户编写软件测试过程中产生的文档进行文档上传,可以根据用户意愿进行单个文档上传和批量文档上传,也可以进行单个文档下载和批量文档下载。3、个人权限内的文档可在线编辑文档:用户可以对于自己权限内的文档进行查阅,在用户编写文档完成后,管理员没有审核时或者审核不通过用户可以再次修改编写,暂时存储文档,如审核完毕上传成功,则文档就只可以查阅。_文档管理系统源码

关于vue.js 编程导航的使用:实现路由配置和跳转页面_bootstrap-vue 路由与导航栏对应-程序员宅基地

文章浏览阅读4.1k次。关于vue.js 编程导航的使用?相关文章 – | – | – _bootstrap-vue 路由与导航栏对应

随便推点

数据库系统原理课程设计报告 图书借阅管理系统-程序员宅基地

文章浏览阅读2.5w次,点赞103次,收藏819次。数据库系统原理课程设计报告 图书借阅管理系统第1章 设计背景与需求分析1.1 设计背景1.1.1 图书管理的现状图书馆作为一种资源的集散地,图书和用户在借阅资料繁多,包含很多的信息管理,现在有很多的图书馆都是初步的开始使用,甚至尚未使用计算机进行资源管理,没有建立相对应的图书管理数据系统,而是使用人工计算,抄写进行,数据处理工作量大,容易出错和数据丢失。 ..._作业背景:图书馆借还书管理数据库。总共四个表,分别是:读者类别表readertype

Ubuntu20 安装lightdm后,重启一直转圈,进不了界面_界面管理器lightdm安装后,进不去界面-程序员宅基地

文章浏览阅读6.1k次,点赞5次,收藏19次。按网上教程安装老黄GPU驱动,稀里糊涂一波安装操作后,重启发现卡在Ubuntu进入界面上一直转圈圈。后来估计是安装了lightdm显示管理器导致的问题。所以把显示管理改回原理默认的gdm3.然后发现就可以正常登录了。方法步骤:1.重启电脑2.进入Ubuntu恢复模式。进入方法,选择Ubuntu高级选项,英文显示是Advanced options for Ubuntu3.再选择后面括号带recovery mode的模式4.直接选择resume,进入无图形登录5.命令输入sudo dpkg-re_界面管理器lightdm安装后,进不去界面

C++基础-程序员宅基地

文章浏览阅读165次。静态多态和动态多态优缺点动态多态的设计思想:对于相关的对象类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功能声明为多个公共的虚函数接口。各个子类重写这些虚函数,以完成具体的功能。客户端的代码(操作函数)通过指向基类的引用或指针来操作这些对象,对虚函数的调用会自动绑定到实际提供的子类对象上去。静态多态的设计思想:对于相关的对象类型,直接实现它们各自的定义,不需要共有基类..._// 初始化行情线程 cout << "初始化行情..." << endl; char* mdflowpath = ".//ma

出租车Jt/T 905协议与部标1078协议融合的网约车视频监控平台-程序员宅基地

文章浏览阅读1.3k次。出租车jt/t 905协议,是jt/t 808协议的一个变种,设计者将部标808协议拿过来,并不是单纯的增加网约车相关的指令集,而且对原有的指令如定位0×0200指令也进行了修改,经过一通剧烈的修改,面目全非,协议已经与808协议本身并不兼容,这是比较失败的地方,保持兼容性,才能使协议更加让硬件和网约车平台接受和开发推广,没有经验的协议设计者和标准制定者高高在上不考虑兼容性,给硬件厂家和平台开发人..._jt808 与 jt905

提示“Resource temporarily unavailable”的原因及解决办法-程序员宅基地

文章浏览阅读3.4k次。问题:Linux环境下编程时,在读串口时,出现“Resource temporarily unavailable”的错误提示。 原因:串口设置成了非阻塞模式,但是没有用select去判断是否有数据到来就去读。 解决方法: 要么将串口设置成阻塞模式,要么使用select。转载于:https://www.cnblogs.com/nufangrensheng/p/3813298.html..._rmmod: can't unload module 'imx6uirq': resource temporarily unavailable

java构造扑克牌算法_java扑克牌算法-程序员宅基地

文章浏览阅读1.3k次。java扑克牌算法java扑克牌算法1、实验内容或题目(1) 请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:face描述一张牌的牌面值(如:"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen..._请定义一个名为card的扑克牌类,该类有两个private访问权限的字符串变量face和suit