- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows编程杂谈
Windows程序的基本结构
最小的Windows程序应该保护两个函数:WinMain()和窗口函数
WinMain作为程序入口,应该执行下列功能:
定义一个窗口类
注册这个类
创建该类的窗口
显示窗口
开始运行消息循环
窗口函数响应相关消息。
例程,我所见到的最小的Windows程序,请问谁见过更小的?
#include windows.h
char szWinName[] = MyWin;
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hThisInst,HINSTANCE hPrevInst,
LPSTR lpszArgs,int nWinMode)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wc1;
wc1.cbSize = sizeof(WNDCLASSEX);
wc1.hInstance = hThisInst;
wc1.lpszClassName = szWinName;
wc1.lpfnWndProc = WindowFunc;
wc1.style = 0;
wc1.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc1.hIconSm = LoadIcon(NULL,IDI_WINLOGO);
wc1.hCursor = LoadCursor(NULL,IDC_ARROW);
wc1.lpszMenuName = NULL;
wc1.cbClsExtra = 0;
wc1.cbWndExtra = 0;
wc1.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
if(!RegisterClassEx(wc1))
return 0;
hwnd = CreateWindow(
szWinName,
Clock,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
HWND_DESKTOP,
NULL,
hThisInst,
NULL
);
ShowWindow(hwnd,nWinMode);
UpdateWindow(hwnd);
while(GetMessage(msg,NULL,0,0))
{
TranslateMessage(msg);
DispatchMessage(msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
所有的Windows执行程序都具有这样的结构,现在我们通常使用的MFC对这个过程进行了包装。可以参考候捷的《深入浅出MFC》
摘自候捷《深入浅出MFC》(繁体第二版,394页)。
6、Windows中的消息
从上面的文章中,我们会有一个问题:使用SDK写的Windows与MFC中的消息机制有什么样的不同?
使用SDK写的Windows程序中管理消息的重点是GetMessage和DispatchMessage两个函数
注:TranslateMessage负责将虚拟键消息转换为字符信息。
GetMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax);
功能:获取与hWnd指定的窗口相关的且wMsgFilterMin,wMsgFilterMax参数制定的消息值范围内的消息。
当hWnd为NULL时,则GetMessage获取属于调用该函数的的应用程序的任一个窗口的消息。
当wMsgFilterMin,wMsgFilterMax为0时,则返回所有可用的消息。
在这个函数执行的时候,程序将控制权交给Windows,直到Windows的消息队列中出现了程序相关的消息,并且Windows愿意让GetMessage继续运行下去的时候,GetMessage将这个消息带回程序,由DispatchMes
您可能关注的文档
- U3第三单元复习点.doc
- U5学习讲义.doc
- u6基础复习.ppt
- U861短信审批安装说明.doc
- UART发展.doc
- UDF问题解析.doc
- UChome整合版安装详解.doc
- UF_RM_2_1_03_08_零售调研问卷.doc
- UG造型练习题.doc
- UG特征造型.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)