找回密码
 注册
查看: 4173|回复: 1

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
  d) X2 `' r8 R5 a作者:雷神  6月20日  10:00
7 ]! d, @- z& C& S1 x) ]! V$ X   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
, _, X6 r0 V; \9 x6 _HANDLE 一个32位的无符号整数,用作句柄
7 Y5 H# a$ k9 E0 k. n: x) QHDC 设备描述句柄+ Q( ^  i# M' e# {5 q
HWND 一个32位的无符号整数用作窗口句柄# r! u* U  ^! E5 x: T
LONG 一个32位的带符号整数$ t! M. G8 F% s9 Y! A
LPARAM 用于声明lParam的类型
- ^2 V2 s5 ]! O) R# N4 w$ W- JLPCSTR 与LPSTR类似,但用于只读字符串指针) @+ f0 p( c$ t
LPSTR 一个32位的指针) ?. L7 v  m( l9 k* A/ S, B
LPVIOD 一个普通指针类型等价于(viod *)
8 ^) H: C" J% Z# {! }LRESULT 子窗口过程的返回值
( {. g- j! z( k8 D( [. eNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
5 A% S6 q0 k) ~! ^UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
" X1 ]) e8 F% `0 c, AWCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。: ~* u6 s! v) ~- P  v5 w* U- r
WINAPI 在API的定义中取代FAR PASCAL. x8 d% \. Y/ A+ P+ Z; D
WPARAM 关于wParam的声明& x2 P6 H+ e) y( p+ \1 K: R3 I
Win32应用程序中常见的结构& r- l# x% R0 _0 P( L
结构 描述
- U, U" \5 Z' n1 E-----------------------------------------------
' t; v, D, G* N% N: v8 ]MSG 定义了输入消息域2 u& h% F7 I8 ?8 P3 B8 d: V
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
- U2 \. o( K# ], J0 BRECT 定义一个矩形
# @- q) r0 e0 R! b' UWNDCLASS 定义一个窗口类
/ r; f/ T9 \) G0 d  B$ r( [; _/ D- x一个例子:4 P  B9 i) k: m+ r+ N7 K) o. Z
#include  X' I) E' l% l0 f
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);, d& \& r( V: r& W
char szProgName[]="rogName";
* C% F, L: m$ yint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)* `9 g3 |; z4 b0 q: u
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。& f6 j" A8 P$ b" N/ i' M" I1 I: ~
//从WINDOWS向WINMAIN()传递四个参数:
- K" d$ S- s& C//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
6 @" Z* n. ?- q2 p/ N1 F//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
" L: Z+ J& z5 f0 a. p3 j//参数3lpCmdline:  O% o4 P( W, M  \2 C- H* x
//参数4nCmdShow:- E  I9 A8 z3 w& c
{( t% g7 l! I7 g# u( L6 F2 c
HWND hWnd;
: Z! ]! a# x* p7 R: j/ z" d+ HMSG lpMsg;
5 L7 M/ Z3 E1 s" `$ lWNDCLASS wcApp;
  [( N% C3 S6 n8 V$ z" s# ^; y4 r+ iwcApp.lpszClassName =szProgName;- w* h% N6 `+ }' }# F5 M
wcApp.hInstance =hInst;+ C! N2 \" }( @! @& m
wcApp.lpfnWndProc =WndProc;
! H& ~% i( w4 m0 C" TwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);6 ~5 d6 }5 d0 j- j
wcApp.hIcon =0;& X* T1 r$ m. R& {3 }
wcApp.lpszMenuName =0;
6 u* d4 ~" R8 k% s' c7 ~6 VwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);  x, F5 W0 p( V
wcApp.style =CS_HREDRAW|CS_VREDRAW;# y7 ?7 o# _0 l3 v  V- S% ~8 B
wcApp.cbClsExtra =0;
+ r3 ~1 i& h0 ]: S: n3 l% l( l3 D  PwcApp.cbWndExtra =0;1 V9 y4 U8 a1 S- Z0 \5 H2 ]1 q, _% g" ?
if (!RegisterClass(&wcApp))
$ `8 e  Z; M7 F6 H$ qreturn 0;
2 F+ ^" ?: b$ T$ _1 ]" o; ~hWnd=CreateWindow(szProgName,"这是一个例子",- A& a; U' ?7 a4 R5 f' q3 N
WS_OVERLAPPEDWINDOW,0 l* A) j' T( u! a
CW_USEDEFAULT,: P6 {* U! b& `! s7 E
CW_USEDEFAULT,
9 V8 G+ u4 \  _! i* V2 ]; J: iCW_USEDEFAULT,# d8 T& v8 t7 F
CW_USEDEFAULT,- V8 M7 r5 C4 v/ C( Z
(HWND)NULL,
4 n  v6 A- u3 [/ i9 W$ e+ K5 c- F+ _(HMENU)NULL,
6 n' H6 u1 x& E% Q) ~& P(HANDLE)hInst,
3 @- e; O$ q8 e5 X6 ?  x7 J* G(LPSTR)NULL);
4 z: n$ A7 @7 h! n9 s+ x/ K( EShowWindow(hWnd,nCmdShow);
  l" T- p; |. @' s( K, L+ r: hUpdateWindow(hWnd);
* E/ e& A0 J5 }while (GetMessage(&lpMsg,0,0,0)){
4 l* f  H' G  PTranslateMessage(&lpMsg);' V0 q3 w- K# }+ M+ U) p
DispatchMessage(&lpMsg);, D4 d1 A9 d) @5 k
}5 P0 v$ Q: a1 m2 ]
return (lpMsg.wParam );
5 p2 g; I: D- N3 E5 _% x1 K! @  h) p}4 B3 Z" p8 |* b/ S. e
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
: L2 y( ~' J  a* u: y' h{
9 V6 ^0 J( f8 W, \" s1 v9 w, d1 tHDC hdc;
& c* x/ ~; n; IPAINTSTRUCT ps;4 T5 U; ?4 y# b4 ?  O7 Y" Y/ k
switch (messg)
5 ?) f% ~2 K" x0 A& W{: u! J/ k8 a# b% w& D* x
case WM_PAINT:
6 N# ^% N) \, p$ M5 _/ e8 Ohdc=BeginPaint(hWnd,&ps);* Y0 B9 s1 j4 w
MoveToEx(hdc,0,0,NULL);
8 Z  Y  J  j) |LineTo(hdc,639,429);
' }) Q; A6 k" {& u0 w- NMoveToEx(hdc,639,0,NULL);
4 |9 I; w0 W3 }3 K- B& F, lLineTo(hdc,0,429);
  U, d7 a3 [4 J+ {. RTextOut(hdc,120,30,"一些线",6);
, ]( E2 p) d% g2 W" jChord(hdc,450,20,430,80,455,25,425,70);* s1 A- T% Q+ E/ O
TextOut(hdc,470,30,"弧线",4);
" }* }" t4 S3 n, d2 d$ R- gPie(hdc,350,50,400,150,300,50,300,100);
+ m* ?- S/ R+ p, P/ ?TextOut(hdc,350,50,"饼图",4);
( L7 l. ~# g; G: P* mEllipse(hdc,100,100,400,400);
3 g/ r9 k" [3 e# }" D+ [* M* ], l2 kEllipse(hdc,249,249,251,251);
5 s2 U  x3 E# m0 H2 \0 ^! I: BTextOut(hdc,250,250,"圆心",4);
4 `& r4 ^% W0 [# ~Rectangle(hdc,50,300,150,400);8 T: s4 G6 b3 p4 M
ValidateRect(hWnd,NULL);
. ^# O  f. o; G$ ?! _* H' p5 K7 {" cEndPaint(hWnd,&ps);
/ i9 V9 F5 E6 C3 Jbreak;/ _6 T  x; H8 u: f! s2 p
case WM_DESTROY:
+ }# a/ K: I6 t7 cPostQuitMessage(0);
, o6 A9 M% q. y7 c* ?" pbreak;, V4 M: _, _7 `9 s& ~
default:1 a( `/ ]* @( A
return(DefWindowProc(hWnd,messg,wParam,lParam));0 q5 A/ V  D' I0 n) a( s, F+ Z' T
break;
: t. S; m. M+ b' I& Y6 W* b}
+ x% S$ X$ Q% O+ {( Z( U6 Preturn 0;& q( g* @. m2 o8 I
}
, j+ F& P$ z1 G+ c& S6 [ : b1 \; Q+ u5 a5 K0 `, J' w
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 03:50 , Processed in 0.016058 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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