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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 ( ^. x6 u, u- c0 v; S
作者:雷神  6月20日  10:00
+ i$ F$ |% }: Z$ ]9 N& P$ S   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
% ~" l6 j& e! UHANDLE 一个32位的无符号整数,用作句柄
* n- `* I: d9 [8 K, zHDC 设备描述句柄  E5 u% q4 {: @1 f9 D& i
HWND 一个32位的无符号整数用作窗口句柄
3 y: D- F) R9 ^3 s5 J# V' t; NLONG 一个32位的带符号整数$ k2 ~8 R" h' Z8 I6 i+ C# V9 m
LPARAM 用于声明lParam的类型
0 p6 U3 z; G1 |LPCSTR 与LPSTR类似,但用于只读字符串指针
' b4 S! j3 t, o! |0 H! S6 k$ jLPSTR 一个32位的指针
3 p) t/ n! ?8 M* L. @# _" vLPVIOD 一个普通指针类型等价于(viod *)
0 g  @! K6 M4 W' g/ x  j. jLRESULT 子窗口过程的返回值
) W! e$ y) [; V3 [5 UNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
' Y. p' T* [. w0 r3 t4 W4 RUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
$ N1 F! B+ |) i+ y* UWCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。$ b( t' c+ c1 E- }; X
WINAPI 在API的定义中取代FAR PASCAL  R9 V, t" C' F! ?& n
WPARAM 关于wParam的声明" A0 t1 `0 j3 n9 v8 b& k
Win32应用程序中常见的结构+ S$ |( T3 Z4 D/ s" K! p
结构 描述
  _3 K' ~( s3 b# u! o1 c5 M6 C-----------------------------------------------9 A# u0 D9 W" a  o, ?# ~
MSG 定义了输入消息域
  j) U7 T. y, ^9 S' wPAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
! j8 v/ O$ X9 j* f% [RECT 定义一个矩形
7 g: V9 D+ P6 U8 W, h5 H) [& V* SWNDCLASS 定义一个窗口类
/ y* l6 F% F: V* s一个例子:" q/ z4 ~, a0 N0 p# p+ h5 P  I+ K
#include
3 H, H4 n  |: i; K' ~# x; hLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
0 g0 l1 ~) z0 {- ?6 o' h1 Tchar szProgName[]="rogName";2 Q7 W. v% [+ x( y6 R- o( w/ N
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)* @. L; ]4 w" g
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。4 b# G4 H! B/ s+ o) m' L" ]' k. ?; W, `
//从WINDOWS向WINMAIN()传递四个参数:
1 Z. f2 U8 n1 J$ P//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
5 h9 c7 ]+ R# N0 Y( Q//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
/ `$ f  X3 J; l" O5 ^//参数3lpCmdline:
1 Z& X; G9 t1 l: @& F" l( J//参数4nCmdShow:
4 J9 I9 E; ]( C{
, @  N# B) Q6 ?$ ]HWND hWnd;
9 V/ l3 {, c( `% xMSG lpMsg;( }: ~* Z% b' Q( Z7 I/ P
WNDCLASS wcApp;
  ?7 S! S, L* c; h; M" D& K* OwcApp.lpszClassName =szProgName;# F* M' N5 {5 Z7 s/ u+ t
wcApp.hInstance =hInst;7 p7 _; N2 h/ O- H% C7 {
wcApp.lpfnWndProc =WndProc;0 K. i3 |; Y6 @5 c. a1 w( w
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
& c8 m$ Q# k& U; N, K+ lwcApp.hIcon =0;' Y5 U  W- K, @/ l* t
wcApp.lpszMenuName =0;% j& j( y; X( \# r/ c# R9 S1 k
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);5 ~6 i5 z( M5 s! S% H- z: U
wcApp.style =CS_HREDRAW|CS_VREDRAW;' |/ k, Z/ |4 e* r* Z" A
wcApp.cbClsExtra =0;) {9 i  x' m% t7 @
wcApp.cbWndExtra =0;
4 Q- U5 E, G6 Oif (!RegisterClass(&wcApp))0 _* E# y/ x% Q) S# ]5 w
return 0;
7 f; S6 T) n! H5 PhWnd=CreateWindow(szProgName,"这是一个例子",
9 ^# m# r- k6 W1 P/ k* IWS_OVERLAPPEDWINDOW,7 T+ f( b, j  \5 U: \3 G5 n
CW_USEDEFAULT,
+ H* @  P% H$ y% @" X+ s- qCW_USEDEFAULT,  g! x8 Q9 \! \7 I; a
CW_USEDEFAULT,
: {7 Y3 f9 S6 k8 pCW_USEDEFAULT,
. Q6 ^1 P0 K  p# r(HWND)NULL,# z" J. r* @6 l; m( L- L& }9 H
(HMENU)NULL,
* c  l9 w  R! I  J* R& o' P! m(HANDLE)hInst,
9 p, Z4 ?, L3 q+ \# C(LPSTR)NULL);% Y9 M- i  ]% H- H, L- \9 T% P" a: x! U
ShowWindow(hWnd,nCmdShow);+ t- h. |$ M. U# ]1 N
UpdateWindow(hWnd);
0 I3 y# B1 C/ y; {while (GetMessage(&lpMsg,0,0,0)){
, F# I+ C) A/ i+ v4 r2 |TranslateMessage(&lpMsg);2 g. x* {6 D  |. r" l! K
DispatchMessage(&lpMsg);/ B: V3 u2 T- n% R* M( U8 }
}4 f6 j  s* d  I8 Y2 M4 Q
return (lpMsg.wParam );
9 q( K2 s, S$ r1 _: T7 c! \, y}! ?0 l% m- ]; @6 U0 r
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
! i! O" O' E+ w' D1 O( F{
1 k' J, I. T; E  d; [, ZHDC hdc;
$ {, R1 q4 `3 L: |0 L4 NPAINTSTRUCT ps;* u" ?6 a; z" ?& I% Y* g: Q: B
switch (messg)! |) q" \1 i/ H& q2 d
{4 L: g- k# h9 u* v$ b
case WM_PAINT:
2 `3 d0 _0 T; o  r+ v7 h* ~. u& J' [hdc=BeginPaint(hWnd,&ps);
/ q; e8 J! f6 D5 a& Z( {  J+ j6 |9 qMoveToEx(hdc,0,0,NULL);6 B$ F5 Q- h* B1 F9 I8 V7 t
LineTo(hdc,639,429);
( H: S4 J0 c' N9 eMoveToEx(hdc,639,0,NULL);/ Y; d+ Q4 y5 Q" E+ e" ]0 p5 ^& K/ J
LineTo(hdc,0,429);
6 p3 |# n) e+ F* q  B% m2 oTextOut(hdc,120,30,"一些线",6);  [# p+ a+ L- T. ^: I9 {7 T) B
Chord(hdc,450,20,430,80,455,25,425,70);
' _  {; I5 r: N  u3 ^TextOut(hdc,470,30,"弧线",4);
* k& F5 @  v  U/ u8 C9 NPie(hdc,350,50,400,150,300,50,300,100);, {- a  E& g, b2 f. u3 W7 O2 |
TextOut(hdc,350,50,"饼图",4);6 s4 ?, T6 X, ~& ]$ C( D
Ellipse(hdc,100,100,400,400);' j) M' W4 O& M7 H3 }
Ellipse(hdc,249,249,251,251);
! R' U$ d) V# n0 p) K" ^( Z' hTextOut(hdc,250,250,"圆心",4);
5 R  [( _1 \) _+ L/ gRectangle(hdc,50,300,150,400);
% E* [7 Z6 ]/ R0 ^1 }4 d- LValidateRect(hWnd,NULL);
1 h5 o# }. E# H# {' TEndPaint(hWnd,&ps);* e/ I: e9 R+ B9 P7 `3 ^, y
break;. q; Q2 P' E, O5 ]$ E
case WM_DESTROY:
! h+ K9 D, {4 j8 M" O; c; G6 hPostQuitMessage(0);
3 [; k% M5 h; `, f. Dbreak;0 g5 J' `$ `1 v
default:) s3 p5 b0 u4 p9 V6 C
return(DefWindowProc(hWnd,messg,wParam,lParam));8 Y4 U0 m: M4 J4 y) `* b
break;
. E: k) ]% u5 \3 C}/ Q0 ?+ h2 X$ k  d* G
return 0;* }' @8 e$ S. _* f; }) ?
} ' Y$ C0 ?6 S5 m" R0 `4 k) x# y7 t3 c

4 d, @: F) c- s' Y( a
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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