站内搜索

windows编程通用的Win32类型和常见的结构

作者:雷神
转载请联系作者

CALLBACK 在应用程序的回调例程中取代FAR PASCAL
HANDLE 一个32位的无符号整数,用作句柄
HDC 设备描述句柄
HWND 一个32位的无符号整数用作窗口句柄
LONG 一个32位的带符号整数
LPARAM 用于声明lParam的类型
LPCSTR 与LPSTR类似,但用于只读字符串指针
LPSTR 一个32位的指针
LPVIOD 一个普通指针类型等价于(viod *)
LRESULT 子窗口过程的返回值
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
WINAPI 在API的定义中取代FAR PASCAL
WPARAM 关于wParam的声明

Win32应用程序中常见的结构

结构 描述
-----------------------------------------------
MSG 定义了输入消息域
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
RECT 定义一个矩形
WNDCLASS 定义一个窗口类

一个例子:

#include
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
char szProgName[]="ProgName";
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
//从WINDOWS向WINMAIN()传递四个参数:
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
//参数3lpCmdline:
//参数4nCmdShow:
{
HWND hWnd;
MSG lpMsg;
WNDCLASS wcApp;
wcApp.lpszClassName =szProgName;
wcApp.hInstance =hInst;
wcApp.lpfnWndProc =WndProc;
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
wcApp.hIcon =0;
wcApp.lpszMenuName =0;
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
wcApp.style =CS_HREDRAW|CS_VREDRAW;
wcApp.cbClsExtra =0;
wcApp.cbWndExtra =0;
if (!RegisterClass(&wcApp))
return 0;
hWnd=CreateWindow(szProgName,"这是一个例子",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND)NULL,
(HMENU)NULL,
(HANDLE)hInst,
(LPSTR)NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&lpMsg,0,0,0)){
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return (lpMsg.wParam );
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch (messg)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
MoveToEx(hdc,0,0,NULL);
LineTo(hdc,639,429);
MoveToEx(hdc,639,0,NULL);
LineTo(hdc,0,429);
TextOut(hdc,120,30,"一些线",6);
Chord(hdc,450,20,430,80,455,25,425,70);
TextOut(hdc,470,30,"弧线",4);
Pie(hdc,350,50,400,150,300,50,300,100);
TextOut(hdc,350,50,"饼图",4);
Ellipse(hdc,100,100,400,400);
Ellipse(hdc,249,249,251,251);
TextOut(hdc,250,250,"圆心",4);
Rectangle(hdc,50,300,150,400);
ValidateRect(hWnd,NULL);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,messg,wParam,lParam));
break;
}
return 0;
}

  • 上一篇:MFC下DirectX DirectInput的实现
  • 下一篇:MFC:thunk技术实现窗口类的封装