窗口和消息
2011年06月27日
#include
预处理头文件
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
此语句声明回调函数。
LRESULT是一个windows数据类型,保存了一个从程序或回调函数返回的长整型数据
CALLBACK意思是回调。
参数
1、接收消息的窗口的句柄。
2、消息类型。
3、消息附加值(短整型)。
4、消息附加值(长整型)。
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
WinMain程序入口。
返回值为int类型。
WINAPI为一个宏定义, _stdcall。
HINSTANCE是一个windows句柄类型,含意是一个执行实例程序句柄。
PSTR是一个字符串指针。
函数参数
1、hInstance代表当前实例(自已)。
2、hPrevInstance是上一个实例句柄。
3、szCmdLine一个字符串变量。
4、iCmdShow设定程序开始运行时的状态。
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
Static定义一个静态全局常量。
TCHAR宽字符等同于char.
HWND hwnd ;
定义一个窗口句柄->hwnd。
HWND是windows下的窗口句柄类型数据。
MSG msg ;
定义一个消息结构->msg.
MSG是windows下的一个消息结构类型。
其原型如下:
Typedef struct tagMSG
{
HWND hwnd;检索窗口句柄
UNIT message;消息值。
WPARAM wParam;参数
LPARAM lParam;长整型参数
DWORD time;消息送至队列的时间
POINT pt;消息发送时光标位置(结构体)
}MSG;
其中POINT的结构原型如下:
Typedef struct tagPOINT
{
LONG x,y;
} POINT;
WNDCLASS wndclass ;
定义一个窗口类实例->windclass。
WNDCLASS是一个windows下的窗口类别结构。
结构原型如下:
Typedef struct tagWNDCLASS
{
UINT style;标识窗口类样式(像素大小)。
WINDPROC lpfnWndProc;指定消息处理函数。
Int cbClsExtra;
Int cbWndExtra;这两句用于在窗口类别结构和Windows内部保存的窗口结构中预留一些额外空间。
HINSTANCE hInsttance;程序的执行实例句柄(它也是WinMain的参数之一)
HICON hIcon;为依据这个窗口类别建立的窗口设置一个图标、
HCURSOR hCursor;预定义鼠标形状。
HBRUSH hbrBackground;预定义窗口类背景颜色。
LPCTSTR lpszMenuName;预定义窗口类的菜单。
LPCTSTR lpszClassName; 定义窗口类别名称。
}WNDCLASS;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuNam = NULL ;
wndclass.lpszClassName= szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow( szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT,// initial x position
CW_USEDEFAULT,// initial y position
CW_USEDEFAULT,// initial x size
CW_USEDEFAULT,// initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
发表评论
-
跨平台自动化测试部署
2012-01-20 09:42 439跨平台自动化测试部署 ... -
接下来做什么
2012-01-20 09:42 732接下来做什么 2010年10 ... -
如何开展灰盒测试[4]:接口测试实战――测试跨主机的模块接口
2012-01-20 09:42 901如何开展灰盒测试[4]:接口测试实战――测试跨主机的模块接口 ... -
跨平台编程和QT
2012-01-20 09:42 905跨平台编程和QT 2011年03 ... -
人民日报:中国企业未参与菲律宾石油开采竞标
2012-01-19 14:46 666人民日报:中国企业未参 ... -
人民日报:中国企业没有参与菲律宾南海石油开采竞标
2012-01-19 14:46 627人民日报:中国企业没有 ... -
第二届《全国京剧票友万里行艺术团》欧洲行开始报名
2012-01-19 14:46 843第二届《全国京剧票友 ... -
出口埃及记
2012-01-19 14:46 618出口埃及记 2010年11月28 ... -
消息处理函数
2012-01-17 04:31 714消息处理函数 2010年07 ... -
调用API函数
2012-01-17 04:31 948调用API函数 2010年11月26 ... -
从VC6到VC9移植代码问题总结收藏
2012-01-17 04:30 603从VC6到VC9移植代码问题 ... -
vs2008使用点滴
2012-01-17 04:30 1906vs2008使用点滴 2011年02 ... -
2009亚太最具社会责任感华商领袖颁奖盛典8月2日隆重举行
2012-01-16 03:21 5932009亚太最具社会责任感华商领袖颁奖盛典8月2日隆重举行 ... -
林 伦 伦:关于海外潮学研究的几点看法和建议
2012-01-16 03:21 1268林 伦 伦:关于海外潮学研究的几点看法和建议 2011年03 ... -
011-5-20越南平阳沉船惨案陈述
2012-01-16 03:21 632011-5-20越南平阳沉船惨案陈述 2011年05月30日 ...
相关推荐
windows程序设计_第三章_窗口和消息
spy,微软的调试窗口和消息工具。另一个是inspect,也很使用。之后上传。
这是对嵌入式进行系统性学习的一份课件~~~~~~~~
VC6下验证父窗口和子窗口的消息传递过程-C语言API方式,一个Hello Windows程序,使用API创建了两个窗口,父窗口和子窗口各一个窗口过程函数。验证了子窗口的消息,在父窗中口不会被响应。除非你自己做反射。代码中...
易语言寻找窗口发送消息源码,寻找窗口发送消息,调试输出文本,寻找指定窗口句柄,FindWindowA,FindWindowExA,GetClassNameA,GetParent,GetWindow,GetWindowTextA,GetDesktopWindow,GetDlgItem,发送消息
使用VS2015写的MFC子窗口与父窗口之间消息的传递,可以直接执行
易语言窗口消息机制源码,窗口消息机制,窗口主程序,窗口回调函数,GetModuleHandle,GetCommandLine,LoadIcon,LoadCursor,RegisterClassEx,CreateWindowEx,ShowWindow,UpdateWindow,GetMessage,TranslateMessage,...
非常简单易用的一款小软件 能对任何窗口发送任何消息 适合WG编写初期使用
窗口消息钩子,此程序用于侦听截获窗口消息.zip
易语言截获外部窗口任意消息例程源码,截获外部窗口任意消息例程,onhook,unhook,SetWindowsHookExA,CallNextHookEx,UnhookWindowsHookEx,PostMessageA,SendMessageA,LoadLibraryA,FreeLibrary,GetProcAddress,...
易语言源码截获外部窗口任意消息例程.rar
易语言源码易语言寻找窗口发送消息源码.rar 易语言源码易语言寻找窗口发送消息源码.rar 易语言源码易语言寻找窗口发送消息源码.rar 易语言源码易语言寻找窗口发送消息源码.rar 易语言源码易语言寻找窗口发送消息...
易语言窗口发送消息调整大小源码,窗口发送消息调整大小
截获外部窗口任意消息例程.rar
拦截Windows窗口大小改变消息.zip 拦截窗口最大化,最小化事件
WINDOWS窗口消息测试器 测试 窗口 能不能 使用鼠标和按键后台消息 都可以测试
易语言拦截窗口最大最小化消息源码,拦截窗口最大最小化消息,消息分析,RegisterHotKey,执行窗口程序,置窗口特征
获取窗口激活消息的钩子函数,可以获取全局操作系统的任何激活消息
VC MFC 多窗口消息共享同一个消息处理函数。
简要讲述C语言编程中的Windows窗口消息机制,并附示例代码:LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM) { switch(uMessageType) {//使用SWITCH语句将各种消息分开 case(WM_PAINT): ...