MFC学习笔记之一——————win32 SDK程序框架逻辑剖析

第一天学习MFC,主要将window程序的运行,一些重要的API函数的初步了解,为下一步学习MFC基础基础。将学习到的东西记记~大笑


windows应用程序与操作系统之间通过消息传递实现,操作系统将事件都封装成一个MSG的消息结构体,两者之间的交互通过消息队列完成。来看看消息中具体应有的那些信息:

typedef struct tagMSG {     // msg  
   HWND hwnd;
   UINT message;
   WPARAM wParam;
   LPARAM lParam;
   DWORD time;
   POINT pt;
} MSG;


(1)HWND(第一个参数)是一个窗口的句柄,句柄是系统资源的标识,操作系统要管理和操作这些资源,都是通过句柄找到这个句柄。功能上相当于指针。
比如按照资源的类型,有我们今后常用到的HICON(图标句柄),HCURSOR(光标句柄),HWND(窗口句柄),HINSTANCE(应用程序的实例句柄)
(2)UINT 表示一个无符号的整型,是一个消息的表示,比如是一个按键消息,鼠标键按下消息,其作用是区别各种不同种类的消息。
(3)WPARAM、LPARAM实际上是整型,指示的是消息的附加信息,比如说按下A键是,首先是WM_CHAR消息(message中指示),而附加参数指示的就是我们按下的具体是哪一个按键。

(4)消息post的时间,整型; (5)POINT结构体,包含X,Y坐标


其次来了解一下winmain函数,此函数相当于C中main函数,起到程序入口函数的作用,由系统调用。

int WINAPI WinMain(
  HINSTANCE hInstance,  // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,      // pointer to command line
  int nCmdShow          // show state of window
  );


前面两个参数指示的是应用程序的实例句柄,但是第二个参数在win32环境下总是为NULL;
LPSTR 是一个字符串的长指针,是用来存放命令行的参数
显示的状态。最大化,最小化,等等

winmain中,首先是窗口的类型的确定,产生一个窗口就像生产一辆汽车,将其中的零件填满就行了。
即将一个WNDCALSS结构体中的成员变量赋相应的值。
实例化一个窗口后,进行注册,RegiterClass();
创建窗口CreateWindow();

RegisterClass(&wndcls);
	HWND hWnd;
	hWnd = CreateWindow("nate","myfirst",		WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,600,400,NULL,NULL,hInstance,NULL);
	ShowWindow(hWnd,SW_SHOWNORMAL);
	UpdateWindow(hWnd);


其次就是一个消息循环。如:

while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}//end of the while


循环中的两个函数意义不说也能大概知道,对于GetMessage()函数,一般情况返回非零值(C中非零则真),当获得WM_QUIT消息时返回0值,循环结束,程序完成。

窗口过程函数,即代表这个窗口的相 应执行的一些功能
其中结构主要是一个switch语句,包含自定义的各种消息的响应,WindowProc是被系统调用 的。

LRESULT CALLBACK WinNateProc( HWND hwnd, UINT  uMsg,  WPARAM wParam, LPARAM lParam);

各个参数的含义已经清楚,






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值