找回密码
 注册
搜索
查看: 4132|回复: 1

[转帖]windows编程通用的Win32类型和常见的结构

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 ' Y* J2 h% [+ n+ H1 W: E6 E
作者:雷神  6月20日  10:00
- X2 b% k7 O/ R7 g2 u  O8 Q2 U   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
% b2 H  Q/ L" P3 T9 T1 \HANDLE 一个32位的无符号整数,用作句柄
' Q% L  B4 w/ _/ J; qHDC 设备描述句柄) p- p, ?4 ~# N5 @5 l# _: ^
HWND 一个32位的无符号整数用作窗口句柄
  Y& D% S8 g3 G/ w' h& x/ aLONG 一个32位的带符号整数/ P5 f- K# Z" ^! F
LPARAM 用于声明lParam的类型# U; f( F! Q5 q1 C  V
LPCSTR 与LPSTR类似,但用于只读字符串指针
3 S0 }. r; i; c8 F3 lLPSTR 一个32位的指针
- k# ^) f* d" C5 n5 t% t# e3 k7 zLPVIOD 一个普通指针类型等价于(viod *)( w( O6 v* }$ U+ ^, Y9 ^0 G
LRESULT 子窗口过程的返回值; f: S( z* E0 L3 c2 g
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数7 `% V7 V, h* R% u$ ^
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位/ e/ [) @: f: X! s
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。% c# O9 [) C6 S% t, t0 M. ~
WINAPI 在API的定义中取代FAR PASCAL
& M- A. O* C  @7 Q/ ~& x  ^0 iWPARAM 关于wParam的声明
% I5 S  j/ U% hWin32应用程序中常见的结构5 Q6 c+ z. V" H9 v
结构 描述
" m* Z8 ^9 H' `! z: F-----------------------------------------------
6 h- h$ l; c; }5 {3 l4 {$ sMSG 定义了输入消息域
1 l! x9 y! t% }6 m" s  bPAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构& z/ r3 @5 z* o
RECT 定义一个矩形
. e8 p: f6 |; o: U# L# g: Z! P& D2 AWNDCLASS 定义一个窗口类
! q+ a3 i8 Q+ ^3 c6 F7 I# N( B一个例子:
7 x% O: ^& S/ Q4 b% [#include
$ @. u# n; H! }8 vLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);4 m! y5 F1 E5 r' P( G# s1 m5 H4 Z
char szProgName[]="rogName";" h. a6 }  l7 O) L$ K
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)1 T  ^4 d! Q) g" N: n- E. R+ i9 p
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
5 l  X" j) ~. ]3 g//从WINDOWS向WINMAIN()传递四个参数:
4 N  W6 X6 Q( T8 G//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。, `* {* J1 x) k4 Y
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。' v9 S% l' K" O  u
//参数3lpCmdline:! a% |) n% O# l5 i% u
//参数4nCmdShow:" `' u& `  x0 b2 z% C% T- h
{2 Y8 [8 J9 j$ P5 y9 y2 G
HWND hWnd;
5 V+ ]+ e; C& g- H. b. o8 R/ ?" EMSG lpMsg;
# ?/ |0 n' V- O0 iWNDCLASS wcApp;
9 s8 R# x6 V; i0 d2 W0 C9 S' Q$ |" @. cwcApp.lpszClassName =szProgName;
7 ~* d: q# u+ ^. J( f, ZwcApp.hInstance =hInst;* m7 W+ K* n& `
wcApp.lpfnWndProc =WndProc;
; m- Z2 E4 p2 H% Q* u+ g- M. J$ {wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);! I+ c9 M  Y* q! g4 R0 b
wcApp.hIcon =0;
$ w- }# p6 X( OwcApp.lpszMenuName =0;1 Y4 ~" _# e. q9 d9 Z  {3 K
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);6 v  v( \( R4 x$ h: Z$ F% I8 U
wcApp.style =CS_HREDRAW|CS_VREDRAW;' e9 S5 o: [& q. ~% t3 a: l7 [- w
wcApp.cbClsExtra =0;5 j, \3 y( Y* w" Q  c  E5 J) y
wcApp.cbWndExtra =0;
! W/ `. e) @4 ~if (!RegisterClass(&wcApp))- U8 d: u$ ]' S, c
return 0;! t- S/ @/ Y* n. I$ p/ |
hWnd=CreateWindow(szProgName,"这是一个例子",8 U7 ^. }- W( f7 j" o: b
WS_OVERLAPPEDWINDOW,
6 H0 X) y9 _: L6 C  eCW_USEDEFAULT,
( G& S; v. d% E- b) gCW_USEDEFAULT,
3 ]3 b. u1 E+ W- Q( gCW_USEDEFAULT,3 ]& o, N# V# [' `! R/ }
CW_USEDEFAULT,( a: J- [3 Q4 X& \$ E- s; C, D
(HWND)NULL,
4 N& A  g9 P6 P* a; c(HMENU)NULL,
, u) ~$ k8 W- U5 [, X8 b(HANDLE)hInst,/ V5 [7 A4 t- f. |. h$ _
(LPSTR)NULL);4 V7 w0 \# G; U$ v7 }
ShowWindow(hWnd,nCmdShow);
5 t4 m5 i& `; `( u& Y( KUpdateWindow(hWnd);
, @3 c+ h5 D) ^2 f& pwhile (GetMessage(&lpMsg,0,0,0)){
1 H, ?, q9 X7 qTranslateMessage(&lpMsg);
* z/ M/ P7 C7 q/ ?! V0 lDispatchMessage(&lpMsg);+ L+ ~' S) Y& I7 P* _4 R5 Z$ D
}
2 j. R+ S1 m" O7 mreturn (lpMsg.wParam );
  M' y5 f- C/ a! o& n8 B0 y}
3 x# h5 P% i/ S0 r) W' @LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)1 v0 `% U3 v: d5 E; F7 E. C2 X. `
{* n0 s/ Q0 ~, |1 s* `0 X
HDC hdc;; _/ T; B/ G$ ?3 ~! Q8 l6 e
PAINTSTRUCT ps;0 A4 j0 i; d  t+ n
switch (messg)
: H1 D2 ]+ ?4 p3 S- B{
* |- a' e9 M2 a; Q5 ocase WM_PAINT:& K6 K# t0 I' ]2 P
hdc=BeginPaint(hWnd,&ps);
: W4 }. w* g" M5 ^5 w6 OMoveToEx(hdc,0,0,NULL);3 r) X: I" U+ M: Q) g3 T9 C
LineTo(hdc,639,429);1 i% x/ P% h) ^- l& @
MoveToEx(hdc,639,0,NULL);
' k1 q1 q$ h6 m6 W5 ^LineTo(hdc,0,429);4 W: u6 Q( i1 G1 T: Z# N
TextOut(hdc,120,30,"一些线",6);
" a# D4 @1 r: z8 S/ e* k, @: cChord(hdc,450,20,430,80,455,25,425,70);
5 Q$ M! }: C& q% Z4 MTextOut(hdc,470,30,"弧线",4);
+ Y: `' w' K% @0 \. \2 d3 P; PPie(hdc,350,50,400,150,300,50,300,100);9 n, d( ~, m5 X3 Q3 P/ D
TextOut(hdc,350,50,"饼图",4);# m- J! r# h. h. Y0 b! U) O
Ellipse(hdc,100,100,400,400);8 w1 `1 Q) d& s8 i" d
Ellipse(hdc,249,249,251,251);" X) @6 i$ e/ {& [
TextOut(hdc,250,250,"圆心",4);, j- n/ o2 q' W1 G( e. t& K# C: }
Rectangle(hdc,50,300,150,400);
. W+ m$ ]1 k# T7 F$ L" Y+ K* FValidateRect(hWnd,NULL);' E) V2 D5 q$ k5 c2 i, K5 N. g
EndPaint(hWnd,&ps);3 D" H) ~5 G/ i2 T$ o! L( @
break;4 K3 l! _$ V; o& [) e. m6 Z6 Y
case WM_DESTROY:' Q& Y! h+ E: G/ \
PostQuitMessage(0);1 ~5 q% p0 B4 G: I. I
break;
7 w* V& q$ y8 n: p2 Jdefault:+ y/ k6 ]2 i1 `2 v: l
return(DefWindowProc(hWnd,messg,wParam,lParam));  `" N1 R2 A1 O/ j
break;
4 t- ]3 z& `0 v) a, s}
- _( i# P) |) P' T9 |" O$ ?9 Ireturn 0;
- [9 @$ {/ S0 E. `; }* q}
* R# {" d" m" E, \. ? 3 I, ^# s- `1 C. p2 M, s$ n
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-8-15 10:25 , Processed in 0.017861 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表