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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
2 P. c+ H0 W* {# I作者:雷神  6月20日  10:00
  t4 d7 c) O" d! ~4 v- ^; h   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
& \. U2 z7 |0 U+ c; FHANDLE 一个32位的无符号整数,用作句柄) K* f, b& x/ X! M: g2 a
HDC 设备描述句柄
+ @: F8 v$ m& nHWND 一个32位的无符号整数用作窗口句柄
  d# D; k; d+ p- R# h5 J5 hLONG 一个32位的带符号整数3 t" j# V6 T6 [, w$ _
LPARAM 用于声明lParam的类型
9 v0 `( }" N  j) v' q, ILPCSTR 与LPSTR类似,但用于只读字符串指针
* l4 @/ F! f& i% m' D4 ]7 }LPSTR 一个32位的指针* m; }# X3 w* z
LPVIOD 一个普通指针类型等价于(viod *)+ R8 J* ~9 x6 Y% M. Y% i
LRESULT 子窗口过程的返回值- A. p) R  X7 [9 T. L% b
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数5 r5 b% v! e) K* U
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位0 v! ^1 b. d9 v5 R9 O& v1 p# q
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
* ^" D( X! t' ?( g! o  dWINAPI 在API的定义中取代FAR PASCAL
, ^9 @4 n% _1 q! d* CWPARAM 关于wParam的声明
, b" A) h6 Q9 s& `! K* C" Z; GWin32应用程序中常见的结构) O; o/ g& s, @4 c1 m% e
结构 描述
0 ~0 ?) x" M3 t1 s& u1 l-----------------------------------------------
; Z% r) F  W' t8 K& c3 X3 ?2 Z0 `0 DMSG 定义了输入消息域: e* s9 u! `  `) F
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
; k7 L+ c( K% t  l  LRECT 定义一个矩形
2 a. h) `% G. [* x/ H0 UWNDCLASS 定义一个窗口类3 J; i6 F6 `, @7 Q
一个例子:; [0 B( ]7 |2 }8 J, B0 o; y6 k
#include
9 V0 S" v" }8 p: {& ]- FLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);$ h( U! E6 N+ r* Q8 S9 t4 z
char szProgName[]="rogName";
5 |8 [4 W! \( D6 S! c1 g/ e  Y+ Dint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
( k! ^! t, |  h0 e( n//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
0 ?4 B# ?: t; p; ~4 p/ P) M% w//从WINDOWS向WINMAIN()传递四个参数:0 J. E! f$ |5 Z
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
8 E! Q# a& r7 ^% G% A4 a7 f//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
1 d- e+ @& ]1 ]" }% j//参数3lpCmdline:0 Y$ L; z9 q/ F" R
//参数4nCmdShow:
0 o- S0 S/ ^9 ?6 z" U{/ \+ d; N+ P0 G, J. K8 M
HWND hWnd;- Z$ j6 z  ?0 e; m% ], h) x
MSG lpMsg;  ]7 w1 K! B. n1 c' A; d5 e+ K
WNDCLASS wcApp;# D: C2 ~* U# ^
wcApp.lpszClassName =szProgName;
! Q& f& f4 i4 j+ g5 P- ZwcApp.hInstance =hInst;* E' J! I8 ]5 t' a
wcApp.lpfnWndProc =WndProc;6 L" m0 ]  Z' n) U* B, h
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
- t: ^$ ~7 R* G" p0 TwcApp.hIcon =0;: m0 S6 l# [9 M! z( s. ^. [, U
wcApp.lpszMenuName =0;/ H! }5 X; g1 W5 Q$ \
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
; x$ i: Q0 z8 {. A; D: kwcApp.style =CS_HREDRAW|CS_VREDRAW;
) Z1 a; U3 F% W: u  ~& j( ^wcApp.cbClsExtra =0;
2 q4 I: f! ~7 y9 f$ s2 \# j8 jwcApp.cbWndExtra =0;. t3 |3 b) X. Q
if (!RegisterClass(&wcApp))  `+ r1 a* U/ e1 Z3 ^
return 0;+ V% H, O8 }# i
hWnd=CreateWindow(szProgName,"这是一个例子",) e1 }! J9 ~$ G7 W
WS_OVERLAPPEDWINDOW,  c9 X4 E, a: c+ P3 Y9 v3 `
CW_USEDEFAULT,2 `( r( G1 g7 z2 \1 f" e3 M
CW_USEDEFAULT,
) j6 C" k/ R, L1 eCW_USEDEFAULT,
+ w! B5 c. I' B4 D5 w% a; `- O6 GCW_USEDEFAULT,- q, y% E, H4 J; V) S
(HWND)NULL,, U6 H9 C1 H3 V  V& G, I8 |2 O
(HMENU)NULL," P  p& ^6 u3 ^; W
(HANDLE)hInst,: s! J( [/ p3 x
(LPSTR)NULL);
/ S6 j, f7 c* n6 l, xShowWindow(hWnd,nCmdShow);
7 z, r" N# n; g" w4 @UpdateWindow(hWnd);5 J  m) n/ Z4 c' U/ u" Y5 \2 R
while (GetMessage(&lpMsg,0,0,0)){
' \. d0 O; {$ j  S( ~1 E& ITranslateMessage(&lpMsg);( \  n" Y, E, k, F* m" x. a/ P4 j
DispatchMessage(&lpMsg);7 u" S" v  M, q
}6 y0 X8 t9 g, D  B, z% d  J
return (lpMsg.wParam );  {) P. ~0 C6 ]1 @! ~
}
% a) d4 O; V; V7 k. G- eLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)& m9 Z# U, R3 V) M& k
{
( t- y5 x  g0 D; R) |$ o" f, RHDC hdc;7 F  \; g& l' ^1 q0 `4 E. `% w+ L
PAINTSTRUCT ps;* R9 ~1 I* R$ g, m/ x
switch (messg)) T8 h% ]! \. v. [/ s# f; c
{$ {* U. L# ~7 {9 a0 H, E) M
case WM_PAINT:4 k& s; R  A  B" C+ [
hdc=BeginPaint(hWnd,&ps);
) U8 T5 t9 Y4 B5 p2 @7 BMoveToEx(hdc,0,0,NULL);! L) t7 V% q2 E
LineTo(hdc,639,429);6 L& o' }6 X( J0 a! K: N" m
MoveToEx(hdc,639,0,NULL);0 `3 d- s* m4 z# F+ a* ^* ~# h9 r
LineTo(hdc,0,429);
1 C1 [8 [8 @5 y9 HTextOut(hdc,120,30,"一些线",6);0 s% H( \& k0 a4 G8 j
Chord(hdc,450,20,430,80,455,25,425,70);7 }# [: P0 W  V
TextOut(hdc,470,30,"弧线",4);
3 S/ K9 M6 g; j. P1 Q% iPie(hdc,350,50,400,150,300,50,300,100);
& r$ s) N; I0 L' \& X5 m, ^TextOut(hdc,350,50,"饼图",4);
6 N4 s+ i; _4 Q+ Z/ `0 f1 {Ellipse(hdc,100,100,400,400);) Y) w$ M$ j: G* \' C0 X+ d" r
Ellipse(hdc,249,249,251,251);
- f7 |9 n; r6 a$ d! S+ x5 xTextOut(hdc,250,250,"圆心",4);0 _$ j: x2 w7 `+ A
Rectangle(hdc,50,300,150,400);$ Z1 T* U$ C; M1 A. d
ValidateRect(hWnd,NULL);8 T& K! ]# I" u. I/ Q" y
EndPaint(hWnd,&ps);9 y9 d2 j# ?$ G" r
break;# ~9 V; ^: F) l+ G1 o3 n& G
case WM_DESTROY:
4 U  M8 v/ X$ z  LPostQuitMessage(0);
( z5 S& J1 A  D4 Qbreak;
- }# s, t1 y: tdefault:' L! Z! O- ?7 H1 o9 }* A
return(DefWindowProc(hWnd,messg,wParam,lParam));4 L2 Q7 X- @5 E! ~* P  W
break;
, S" N  ^/ U% H. |; d6 I2 D- N}
& i: A7 d$ `7 Freturn 0;
* n2 X4 i4 R# w1 i, v2 d& s}
: H. Y" I8 ?1 [% b 8 O6 |7 C$ Y7 Q0 }
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 02:35 , Processed in 0.018540 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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