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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
& M; F5 p+ d  Q& q7 A& b作者:雷神  6月20日  10:00 ! ?/ }- }" M0 z, E
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
3 }* L! \7 g2 Q& B6 ZHANDLE 一个32位的无符号整数,用作句柄+ E% N  a' G9 W( j1 x( D( i
HDC 设备描述句柄
& I! i7 ?: ]4 Q  ^0 S4 T! _' [HWND 一个32位的无符号整数用作窗口句柄- V1 |$ E: g" B" a, n9 R
LONG 一个32位的带符号整数! i/ O# ?8 p$ u6 c- [
LPARAM 用于声明lParam的类型
/ u; o( y$ C% @' D0 ]. A9 M  }LPCSTR 与LPSTR类似,但用于只读字符串指针8 X% w. L3 C% \8 ^) [4 K, Q
LPSTR 一个32位的指针
0 E1 b  N7 p  t- L' ^LPVIOD 一个普通指针类型等价于(viod *)& N* n. m" m1 U7 O4 S1 S$ ?
LRESULT 子窗口过程的返回值% D1 Q  C; v4 o, j# [& Z
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数1 R/ [6 D. X1 I! J/ y& B
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位, m0 e% V2 E8 k1 w# w& Y
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
% o8 e6 x8 D0 H7 P2 O/ Z5 |2 cWINAPI 在API的定义中取代FAR PASCAL
% P- o$ _2 |; t: H% Z2 ]8 m+ OWPARAM 关于wParam的声明- K0 }  J" {7 k0 o' S0 D
Win32应用程序中常见的结构' o1 _: |2 f4 Q6 U* I$ v+ S  z
结构 描述2 `" x* F$ _3 O% s* q
-----------------------------------------------
! G0 M; V2 f; l9 Y* k/ _# @MSG 定义了输入消息域
+ ^/ k2 a$ F1 o/ F7 C% }PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构/ ~) A: D2 g  n+ H) Y! h! ?
RECT 定义一个矩形
% z( Y- W9 T8 C9 e5 [- wWNDCLASS 定义一个窗口类
: p- Z$ m/ R& R6 c7 s一个例子:" |' S, f/ o. l
#include6 c- A7 M3 B; N: s1 G
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
" p9 Q* O2 N# X2 T: h  bchar szProgName[]="rogName";1 p/ z" r: `( J4 S9 ]/ x
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
& M- X0 Q5 o! t4 D//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
' \& E* e$ ~  r1 s  w//从WINDOWS向WINMAIN()传递四个参数:
8 z# J, ?6 K6 A2 D//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。2 t# x  ~3 L4 j: s% K7 W
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
# o8 A' y* c1 l! p1 Y  D//参数3lpCmdline:
% G# b! n1 h$ @# Y6 y//参数4nCmdShow:
, b4 J9 I& f' f& ~/ y* h{
1 ]8 U9 X# q# }+ \5 eHWND hWnd;- a6 b  S* d/ U( @
MSG lpMsg;" H# d+ o1 `- @1 h- W1 W
WNDCLASS wcApp;" r  A2 q6 R% O& B9 I
wcApp.lpszClassName =szProgName;8 r# W0 e# C$ @+ _
wcApp.hInstance =hInst;: Z5 `3 E8 Q; h, e
wcApp.lpfnWndProc =WndProc;
" ^9 ~* Q4 w5 R! U" PwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
! B$ r3 X) R) h0 n# n4 kwcApp.hIcon =0;8 l6 \- N& J/ o  l+ T
wcApp.lpszMenuName =0;3 r4 V8 W; r7 j8 ]
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);) ?5 b! v- w; C6 e: Q1 u, \8 @
wcApp.style =CS_HREDRAW|CS_VREDRAW;
/ v. x7 U# A; O, \3 fwcApp.cbClsExtra =0;* s' t- [8 {0 {
wcApp.cbWndExtra =0;( P) M' o9 i- G0 u. F* b! s
if (!RegisterClass(&wcApp)), S+ q7 j0 V" g; g5 W: D
return 0;
! S' }  j3 |# G9 ~hWnd=CreateWindow(szProgName,"这是一个例子",* j( g3 K' |; C
WS_OVERLAPPEDWINDOW,: `$ A4 W/ ^1 @) @" u
CW_USEDEFAULT,
. `6 a$ n$ ]: G# Y% rCW_USEDEFAULT,, W$ o+ d3 O8 H* J1 ]7 d* [+ K# N
CW_USEDEFAULT,
% s2 c. t6 s2 [6 v0 b1 D7 _$ t4 eCW_USEDEFAULT,/ K, B) s. C- B) |- F& `
(HWND)NULL,- b; z8 C0 k3 q* b" h9 b7 g
(HMENU)NULL,5 [3 Z+ [* m/ ]* n% W
(HANDLE)hInst,! G, k3 ?+ I3 B  y
(LPSTR)NULL);
, T3 q2 `" x$ ^- PShowWindow(hWnd,nCmdShow);
& }  c- @! x/ m3 Z  @( R1 X6 J9 ^3 t: b4 SUpdateWindow(hWnd);
) y/ U2 f0 P! J) C$ Swhile (GetMessage(&lpMsg,0,0,0)){6 r4 t# X9 \" u
TranslateMessage(&lpMsg);) v( ]8 E2 j+ K8 o- f
DispatchMessage(&lpMsg);1 i- n' }6 V3 `" e" o
}
- P/ l) g7 _( H/ }6 Ereturn (lpMsg.wParam );
2 C0 P- ?) ^: ~, M! `' v( C( }3 T}: p3 b5 j. a& p! i, e; c
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)' ]' M1 w4 g+ T& A( k
{
8 e% q4 o$ d% e# iHDC hdc;
0 n$ E( i) F  @' w( b% s& _PAINTSTRUCT ps;
% u( Q: }, t6 U. j. d7 E" j* G& n; jswitch (messg)5 w7 I6 x6 ~( q7 i% I7 N
{' i$ h5 ?1 k3 E
case WM_PAINT:# K4 i' b: }& \
hdc=BeginPaint(hWnd,&ps);, e7 B( a* n3 M
MoveToEx(hdc,0,0,NULL);
5 v3 E* r7 C: T8 G, i- x! L  @LineTo(hdc,639,429);' c/ P0 K) x5 W4 O: b
MoveToEx(hdc,639,0,NULL);
7 C7 w1 S& P, Z9 A8 t' n0 [' ZLineTo(hdc,0,429);
7 X* i2 b+ I4 A& Z- CTextOut(hdc,120,30,"一些线",6);
+ Q) E: ?" l& H; K2 S6 ?Chord(hdc,450,20,430,80,455,25,425,70);6 q- s. _( `4 ], Y; i
TextOut(hdc,470,30,"弧线",4);
$ m( D: \2 K8 r# S/ ^Pie(hdc,350,50,400,150,300,50,300,100);
- `) A8 C! M# ~4 C; B8 k: ~TextOut(hdc,350,50,"饼图",4);
( n. [; [$ J. l( |; QEllipse(hdc,100,100,400,400);
0 _0 S: {, r& V5 d, u. p' wEllipse(hdc,249,249,251,251);
7 N4 m& k) D# ITextOut(hdc,250,250,"圆心",4);' `' H/ L) \, U5 G5 ~3 y% n
Rectangle(hdc,50,300,150,400);
7 U; E8 K* `9 U! ^4 N4 |0 D, oValidateRect(hWnd,NULL);5 n/ ]6 f% b8 l# d$ Z+ r
EndPaint(hWnd,&ps);
1 p5 z/ i9 K0 wbreak;
7 k4 M6 s  d7 m' w3 ncase WM_DESTROY:: ]9 M. {0 o* ?' ^) F$ A* |9 f
PostQuitMessage(0);& i/ B) Y. ^* N* C9 X
break;
; w& n. B; D/ e+ ldefault:
( r, m9 u" f  `# k% ]return(DefWindowProc(hWnd,messg,wParam,lParam));
9 t/ u1 S! k$ n7 B) O, Kbreak;
2 }" U* O6 o  L  P}, h% _8 \( A9 M. w
return 0;
& m0 S2 q# E/ e9 f}
# k& Z/ f; l9 r- F! \0 |
, h- m/ a$ J! `6 T5 V
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-15 08:22 , Processed in 0.018481 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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