上一篇 | 下一篇

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

发布: 2008-6-26 14:14 | 作者: admin | 来源: | 查看: 2次

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_QU99v消息时。

//从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(WH99vE_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));

字号: | 推荐给好友

21/212>

评分:0

我来说两句

网络推荐