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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 8 b6 j2 B; Z: |! E5 g2 v1 m4 ?
作者:雷神  6月20日  10:00 . a$ q( |+ `6 O& J! R
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL3 Z( _6 Y3 _& b# m$ b9 n
HANDLE 一个32位的无符号整数,用作句柄0 n4 |7 ]- d4 ?2 m6 _) G/ ]
HDC 设备描述句柄
- m% S3 ?( B7 V8 j5 `HWND 一个32位的无符号整数用作窗口句柄
: ?2 M1 V) m4 o; J1 A( VLONG 一个32位的带符号整数2 R  X0 U" f0 h# S1 t! ~; S
LPARAM 用于声明lParam的类型
$ r& s- U$ V) g" K& w2 C% M' `1 |LPCSTR 与LPSTR类似,但用于只读字符串指针
- O; \" G7 s' N) DLPSTR 一个32位的指针8 d" t$ w; z" E( T
LPVIOD 一个普通指针类型等价于(viod *)/ {( E* `/ G! S+ y) V
LRESULT 子窗口过程的返回值
$ W9 l1 R5 Z9 U; B( w( E; q( tNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
5 d* R; ?+ |5 j4 k9 @. ^+ d5 T* N' tUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位- N" X" ~7 {7 C- C
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。4 e( H; o7 q+ p8 r% w2 p% P
WINAPI 在API的定义中取代FAR PASCAL8 d' Z* v. u, z2 Q; Y
WPARAM 关于wParam的声明! b! y$ X& J0 v6 B. G& [
Win32应用程序中常见的结构
+ j' U# X3 Z( v& c1 B1 ?1 ^结构 描述
0 {( |: h/ R% a: n-----------------------------------------------, A& A4 a1 ~& O0 p
MSG 定义了输入消息域: [( j: U/ O: K5 R3 ^# F5 L/ ?
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
) \! t5 M& o+ B6 s/ m) LRECT 定义一个矩形
" j; G) {6 A1 `# u6 \/ MWNDCLASS 定义一个窗口类7 Q& R7 O7 n: E( }. J8 ^1 k
一个例子:
8 L" C7 l: c3 ~8 j0 N* @#include9 e/ }; X8 F* B/ p5 X( G; Z
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);6 u- @$ O5 C* n+ n* g* M% Q
char szProgName[]="rogName";
# L9 @7 N$ @+ b/ ]7 nint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)$ R7 y% M$ o* d5 n
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。& z1 a( S, K7 a0 w9 H3 D  n# }  S
//从WINDOWS向WINMAIN()传递四个参数:: E4 P% S& l4 P8 b% l8 P. B  k& o
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。% g1 R' S+ c0 D. ?  {: G7 t/ o
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
* v7 x5 `4 r0 s, |- G//参数3lpCmdline:9 a! ?1 |' [' D& f2 O' u
//参数4nCmdShow:+ k2 L+ q3 _" c5 b
{
1 K+ ~: T- e3 o3 B" ^HWND hWnd;; E& W4 d' p  k) c( x8 x
MSG lpMsg;
  |" I. g4 |1 u2 T/ a2 wWNDCLASS wcApp;" C: a) n. M7 y+ K6 @* V" O
wcApp.lpszClassName =szProgName;
# M" f. j( L: J9 S2 D1 p# NwcApp.hInstance =hInst;
& ]' h; N+ ]. n, S# D5 twcApp.lpfnWndProc =WndProc;
( C; O% m0 H; G9 HwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);  P: J2 ]  G2 K9 Q
wcApp.hIcon =0;! I: p/ ~' r. q7 l: f' m
wcApp.lpszMenuName =0;
4 [6 L7 G+ p8 A+ B+ x/ IwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
* O  }$ q1 y' z- kwcApp.style =CS_HREDRAW|CS_VREDRAW;3 |) c& G  m; O+ e$ V
wcApp.cbClsExtra =0;9 W  n, L* H- K
wcApp.cbWndExtra =0;
# F  Z3 a: ?+ u- _. ]if (!RegisterClass(&wcApp))' s7 Y+ I5 K0 l
return 0;
$ `2 \" ]' U# A, j8 phWnd=CreateWindow(szProgName,"这是一个例子",
; L6 E0 N8 N# O" t1 f& e; `: t5 w& UWS_OVERLAPPEDWINDOW,7 F4 F" V# w8 A( j6 I& R; E2 M
CW_USEDEFAULT,6 l1 @# O/ e) j$ J8 l
CW_USEDEFAULT,: v2 {4 T; k. @6 c* E0 ^
CW_USEDEFAULT,
& V' m2 A8 {/ L! @CW_USEDEFAULT,; ~. _# ?+ T! T3 i# U4 D5 W# Y3 n
(HWND)NULL,
* G4 x& @1 i6 T5 m8 ?(HMENU)NULL,7 o. l' l, `! I' r
(HANDLE)hInst,
% {+ \) s- }! P& d; l(LPSTR)NULL);% L) N$ U+ r# E1 z! r, o: F9 @& ?
ShowWindow(hWnd,nCmdShow);
" @3 e8 H; W: `& z* ~( n! ?; ^UpdateWindow(hWnd);( U) T$ H( Y/ B! e+ j: g7 b) c
while (GetMessage(&lpMsg,0,0,0)){, R+ ~8 P- ?1 v
TranslateMessage(&lpMsg);
' B! _0 j: U: ?DispatchMessage(&lpMsg);; ^! E8 j- u: c! s! [
}) m* f9 Y# ^- H% p8 o
return (lpMsg.wParam );8 m- G8 P8 s/ C! S
}
4 H( O" R' Z' c" _, Y( ]* s+ C. eLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)& l( T, o" E4 y: }
{
8 H! z- M& F2 |/ i) S! \HDC hdc;  \& E# \& c/ |' x: W4 m
PAINTSTRUCT ps;
: l0 l0 h" Q3 @* r. }- Lswitch (messg)
' v# C; D5 h% V" L% x& L( u{
7 U' M8 O3 `) a: {1 h3 v7 l7 @case WM_PAINT:( h6 A. C' s3 i. w1 p7 m
hdc=BeginPaint(hWnd,&ps);! m, n3 W% t! i) G
MoveToEx(hdc,0,0,NULL);0 L& B) x; e. p$ a
LineTo(hdc,639,429);* b: T! n8 m9 ~5 b7 z; J3 f
MoveToEx(hdc,639,0,NULL);
, X1 i0 k7 q- `- ?: B( TLineTo(hdc,0,429);: l& e# [$ F) Y
TextOut(hdc,120,30,"一些线",6);
4 _/ S  E+ i" _' _Chord(hdc,450,20,430,80,455,25,425,70);
$ \, H! G) r# ]" B$ tTextOut(hdc,470,30,"弧线",4);
& e6 f. d( e, nPie(hdc,350,50,400,150,300,50,300,100);2 y# D: b# ?# k0 Y4 Z: H* i$ K
TextOut(hdc,350,50,"饼图",4);# K0 w5 ?8 {. E1 x
Ellipse(hdc,100,100,400,400);. C2 Y9 Z% \( {+ s$ r
Ellipse(hdc,249,249,251,251);/ }# @7 c2 E1 \1 q, ^2 `" k
TextOut(hdc,250,250,"圆心",4);( r) F" N9 j, ~0 Q+ L8 r1 f
Rectangle(hdc,50,300,150,400);" M' {. w: e. Q) }& b' x
ValidateRect(hWnd,NULL);7 {6 q* w5 I/ n7 G
EndPaint(hWnd,&ps);
  w+ H/ s% Q) q! p! H& vbreak;
- `0 u" g" W' L- |0 L* gcase WM_DESTROY:
: {8 z9 _$ P- f8 e' GPostQuitMessage(0);
; i& h1 S. p# r! E: hbreak;% B& X  V: L0 y
default:$ H$ K( q& p  j9 \$ T/ p
return(DefWindowProc(hWnd,messg,wParam,lParam));
' R* b8 W3 U7 X2 ubreak;
/ d' Y! p8 z: A$ f}
; h+ t5 H- |0 n4 {+ T$ freturn 0;0 Z% i8 v: `% s+ U( ~
} - w" n* O$ d0 d
7 p6 P' q" U0 Q! H, h
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 15:54 , Processed in 0.040577 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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