windows窗口过程

windows窗口过程

摘要:在Windows应用程序中,窗口是通过窗口句柄HWND来标识的。我们要对某个窗口进行操作,首先要得到这个窗口句柄。 在windows程序中,消息由MSG结构体来表示的,MSG结构体定义:>typedefstructtagMsg{ HWNDhwnd;&
在Windows应用程序中,窗口是通过窗口句柄HWND来标识的。我们要对某个窗口进行操作,首先要得到这个窗口句柄。

在windows程序中,消息由MSG结构体来表示的,MSG结构体定义:

typedef struct tagMsg{
HWNDhwnd;
UINT message;
WPARAMwParam;
DWORDtime;
POINTpt;
}MSG;

WinMain函数
应用程序的实现步骤:
1、 WinMain函数的定义;
2、 创建一个窗口;
3、 进行消息循环;
4、 编写窗口过程函数;

WinMain函数的定义:
函数声明:

int WINAPI WinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine;
IntnCmdShow

);

窗口的注册类:
WNDCLASS
设计完成窗口类后,需要顶用RegisterClass函数对其进行注册,注册后才可以创建该类型的窗口。
ATOM RegisterClass(CONST WNDCLASS*lpWndClass);

创建窗口
使用CreateWindow函数。

显示及更新窗口
显示床后函数:Bool ShowWindow(
HWND hWnd,
Int nCmdShow
);
更新窗口函数:Bool UpdateWindow(HWND hWnd);

消息循环
在创建创库、显示窗口、更新窗口后,我们需要编写一个消息循环,不断地从消息队列中取出消息,并进行响应。
GetMessage(LPMSG lpMsg, HWND hWnd, UINTwMsgFilterMin, UINT wMsgFilterMax);

通常编写的消息代码循环如下:
MSG msg;
While(GetMessage(&;msg, NULL, 0, 0))
{
TranslateMessage(&;msg);
DispatchMessage(&;msg);
}

1、 操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中国,
2、 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,消息取出后,应用程序可以对消息进行预处理。
3、 应用程序调用DispatchMessage,将消息回传给操作系统,消息是有MSG结构体对象来表示的。其中就包含了接收消息的窗口句柄。
4、 系统利用WNDCLASS结构体lpfnWndProc成员保存的窗口过程函数指针调用窗口的过程,对消息进行处理。

从消息队列中取消息还可以用PeekMessage函数,该函数的原型:
Bool PeekMessage(LPMSG lpMsg, HWND hWnd,UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);

编写窗口过程函数:
用于处理发送给窗口的消息,一个Windows应用程序主要代码就几种在创酷哦过程函数中。
LRESULT CALLBACK WindowPro(HWND hwnd, UINT,uMsg, WPARAM, wParam, LPARAM lparam);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值