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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
4 C. ?3 p) w; r/ \5 X. y$ v$ a作者:雷神  6月20日  10:00 * n/ e" v2 d  f1 r, K1 c
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
# ]0 @9 e5 l# l" \HANDLE 一个32位的无符号整数,用作句柄0 [( R: W& r& D& d8 q
HDC 设备描述句柄
: @/ v) Q# T/ HHWND 一个32位的无符号整数用作窗口句柄
' V4 U2 w/ F' {3 [6 R9 tLONG 一个32位的带符号整数5 c9 X: v0 k, N. y0 A% w, [# }. L
LPARAM 用于声明lParam的类型$ z& u. Q  e" m+ \: x- w
LPCSTR 与LPSTR类似,但用于只读字符串指针
  H. h8 H; H3 ?LPSTR 一个32位的指针9 c7 I/ d2 n- K; A4 N$ T
LPVIOD 一个普通指针类型等价于(viod *)+ V; R& z% k" s. E4 g+ j2 X9 x
LRESULT 子窗口过程的返回值
- s' ]3 a' Y. y2 t  L. Z0 G: ?3 a, L( qNULL 一个整型的0值,常常用于激活函数的缺省动作和参数! t9 I5 k+ [& U$ H
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
4 x5 ~, a! f* \WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。. m: z+ |- o( G
WINAPI 在API的定义中取代FAR PASCAL
, ~3 C. @* o4 D+ iWPARAM 关于wParam的声明
; C; f5 A4 y: f0 b+ HWin32应用程序中常见的结构3 c5 Q+ B& @+ G
结构 描述$ x5 T* w) u4 L7 ~
-----------------------------------------------
' ]/ z3 T: `, z' ^1 QMSG 定义了输入消息域
( r% V$ L- ?" ^, d4 OPAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
- e  l$ P8 e4 N% z( x1 KRECT 定义一个矩形
* g; B3 Z3 X7 `) C7 YWNDCLASS 定义一个窗口类
8 _! M; Q2 G  n% L. X7 O/ i# R4 |一个例子:" O5 J" E- u4 r+ u* F) a
#include# d0 }4 G- I* d
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
: e, E" n. B! Y* t. {" J0 Qchar szProgName[]="rogName";; ?+ S9 X) E. W, T0 u  ?- N) u
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)3 x# E: Q6 F0 E) ^* r% B: Q0 c+ @
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。# \# S  g2 W) X) E4 }
//从WINDOWS向WINMAIN()传递四个参数:
, F) V% h. J' c. K//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。' l# N  C: C- B9 s" X" P+ S" N
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
& D2 L2 D2 h; x' A% b' f//参数3lpCmdline:
# k2 f: o  p' d. @; ]4 @" B//参数4nCmdShow:
5 {: s* [+ q" T{
; n0 s; X3 ?! U" E6 o+ w: d7 IHWND hWnd;
: m4 Y9 m- }- q- \6 Y" b0 ^" vMSG lpMsg;
7 v9 a0 H( `6 v9 f* FWNDCLASS wcApp;
1 s% A! X3 F% ~9 }wcApp.lpszClassName =szProgName;( G% m" g( D+ S' q2 i
wcApp.hInstance =hInst;& o2 m* @8 T: V$ `# d/ ]4 F
wcApp.lpfnWndProc =WndProc;
* K; J5 L/ g) R' p' RwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
) }! `; j7 e) C- j7 WwcApp.hIcon =0;
* W+ G: X9 e1 N1 m4 D) J  E  u  nwcApp.lpszMenuName =0;3 s; p* l, h& p) u9 M
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
7 \6 U! C+ @2 e' I0 |( W% \2 ywcApp.style =CS_HREDRAW|CS_VREDRAW;
/ _! B, A) g8 G% R- d( q" ]/ nwcApp.cbClsExtra =0;* N; N: ^' I5 H! R, N" |- }
wcApp.cbWndExtra =0;
2 |7 y; O7 a0 J) Q9 D3 ^) Xif (!RegisterClass(&wcApp))
1 Z. O5 c3 R# |; ]! B3 P+ Xreturn 0;
) f" }( L( p. N! d, QhWnd=CreateWindow(szProgName,"这是一个例子",
0 I* h7 z5 k: S' i6 e$ R9 RWS_OVERLAPPEDWINDOW,% j0 X: V, a+ L1 V5 o1 e, r
CW_USEDEFAULT,1 p. a! Q9 w( U
CW_USEDEFAULT,9 i& O' w9 W$ t7 x, F( i( D4 W
CW_USEDEFAULT,( J3 Q2 P1 U1 K1 x% ~- p
CW_USEDEFAULT,+ I, ?8 ]( X2 o. M, _4 K/ b8 |
(HWND)NULL,
/ B+ x" ?4 F6 s1 `7 ^(HMENU)NULL,
' p+ J1 ^& i" Q" i( @" o7 M(HANDLE)hInst,+ ?& r' T9 R$ b3 i& r- S7 M
(LPSTR)NULL);
4 ~2 G  f# Z( n0 F5 P' M! @( b8 ~ShowWindow(hWnd,nCmdShow);
! A2 Y0 b* [% S5 C4 |3 Z( lUpdateWindow(hWnd);! E: Q0 y- g7 t, C( a, J: a2 B
while (GetMessage(&lpMsg,0,0,0)){0 U& C  l; P: M# r. _
TranslateMessage(&lpMsg);
: z0 |* y% T" s, x! ^DispatchMessage(&lpMsg);
' T' c* O/ _6 V}
& b$ Z2 z0 z% g" I# _3 Breturn (lpMsg.wParam );5 m: }+ H) L# U+ p9 l( D# ?/ w
}
! Y3 ?" K  O8 c% X3 o; _: f0 MLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)! s" s) a( j" M  O  c# z
{
) g. @% |/ d3 |# Q5 ^1 kHDC hdc;6 v( c8 L+ {, \7 I* a) P( Y. _
PAINTSTRUCT ps;
7 T+ i% Q( f9 r& R/ mswitch (messg)
' p% Z* q0 N# n! W) q{1 I$ Z1 w. k" V) W
case WM_PAINT:
0 V0 U4 b! O/ m# Q% ~& qhdc=BeginPaint(hWnd,&ps);
8 W7 k% _- M, _* cMoveToEx(hdc,0,0,NULL);
  b& B4 w* d! [LineTo(hdc,639,429);
  p% z2 o! e& Q( ?MoveToEx(hdc,639,0,NULL);, j4 `7 o( ~9 F8 G7 ?3 ]
LineTo(hdc,0,429);6 i: C( o; F0 F: F7 m6 z
TextOut(hdc,120,30,"一些线",6);
  Q5 n" P, T3 J* GChord(hdc,450,20,430,80,455,25,425,70);
/ K" y0 i% `' F: w7 C' s1 u) qTextOut(hdc,470,30,"弧线",4);
* C& o& U& ~3 l" \Pie(hdc,350,50,400,150,300,50,300,100);
9 N( F- y3 m/ R% ITextOut(hdc,350,50,"饼图",4);( H6 _# U* o3 s' x7 |: y8 e
Ellipse(hdc,100,100,400,400);
# P! J  G( v( a9 c- t$ yEllipse(hdc,249,249,251,251);$ ^2 f' F  p) e$ r5 l' v$ u
TextOut(hdc,250,250,"圆心",4);5 ?' }( _, N% Z/ B
Rectangle(hdc,50,300,150,400);
: C+ V- W: {, |! ~# j% MValidateRect(hWnd,NULL);
1 l- m4 ]4 b+ K3 `7 sEndPaint(hWnd,&ps);
: k/ r1 _4 ~; t. x" O2 Qbreak;# i! y0 y7 ]. f! U
case WM_DESTROY:
) d- K% `% x# V1 N4 DPostQuitMessage(0);6 |# {! Q7 `3 b" Y
break;# E" {9 V( _8 c6 l  n: G& _
default:
* l! {) J) }0 c$ z2 a5 `return(DefWindowProc(hWnd,messg,wParam,lParam));
0 h: \+ T% F+ t3 f% E: Nbreak;9 W5 _0 `5 Z, A6 _9 j$ L
}
2 B, ]2 l9 o# k) L9 `4 Z4 \/ `return 0;
. ~3 A8 a5 W- d5 M# A}
0 K+ y" ^  t" v- t+ X
$ L& ]: y! F/ B/ f7 N" B
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 14:38 , Processed in 0.015975 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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