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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 ( k3 I# ~- `4 L' F: C$ E- f
作者:雷神  6月20日  10:00
2 g) O) B9 j: F( g4 Y: ]8 k   CALLBACK 在应用程序的回调例程中取代FAR PASCAL4 D- A, d3 i3 q1 w7 ^1 ]
HANDLE 一个32位的无符号整数,用作句柄
& e& M# l2 x8 O, D! V& f3 j5 z. ~HDC 设备描述句柄
5 |0 o( U) b1 ~; {& v$ @8 xHWND 一个32位的无符号整数用作窗口句柄
1 Y3 D: y; ]% T/ DLONG 一个32位的带符号整数
7 n* I* E8 l$ @# DLPARAM 用于声明lParam的类型
: e6 b/ S( }5 K5 eLPCSTR 与LPSTR类似,但用于只读字符串指针% }# e. Y' p4 R! N! r7 X3 F+ G
LPSTR 一个32位的指针
* x8 s) ^( ?$ @0 a# ALPVIOD 一个普通指针类型等价于(viod *)) E4 R! |' \; r* U# z
LRESULT 子窗口过程的返回值; b$ S) v5 I  Z. C
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数
: j# P0 K' P7 n6 U2 g9 ^: WUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位4 c* t3 _* q7 A' s8 W1 \4 x
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。6 M; t; Q% Q0 v% i+ r
WINAPI 在API的定义中取代FAR PASCAL& G- k$ @% b& }# _& R# M- W* _
WPARAM 关于wParam的声明
1 ^( l" W+ V+ W1 v( {$ vWin32应用程序中常见的结构& J$ b; M# w1 ~6 y% x: u
结构 描述
3 a& [2 J. o5 U& p( [% w------------------------------------------------ P3 N) a7 ~, Z$ }& t1 M
MSG 定义了输入消息域
) s, d# V+ t# R1 L+ WPAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构8 q- c& d7 r3 {2 M  a& {: }
RECT 定义一个矩形2 u/ T# x0 k. @# P& ?
WNDCLASS 定义一个窗口类
4 @% Z& p6 A7 I- |6 E一个例子:& R0 J" \: @& R4 I" c* q# `
#include1 X" b) N3 A5 j( ?8 V
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);6 u( Q+ z5 b; L. ]% o8 u5 L
char szProgName[]="rogName";" a0 W- F5 B$ p& @
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
0 Y0 C. P. l+ v2 U3 f//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。- o9 {. M2 e0 ~6 C
//从WINDOWS向WINMAIN()传递四个参数:. a1 P  J+ H3 ?0 b( i7 p) n
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
& B* w* h) m; Z//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
. R1 W% d! }: H" x: S//参数3lpCmdline:/ Y3 d! l# D" F2 k! n
//参数4nCmdShow:3 ?& L8 H  K7 y+ [1 {3 ^" p: @4 |
{4 v- I+ R; x+ p# N. d
HWND hWnd;
4 \/ e0 d4 l/ @3 ^MSG lpMsg;8 t$ ]9 e& T/ D) D; b. U
WNDCLASS wcApp;: d* A4 ^2 e" t! g
wcApp.lpszClassName =szProgName;+ w" C5 }! @9 C3 c6 r0 r# j- Y
wcApp.hInstance =hInst;
+ N1 ?3 x- r/ j3 N+ WwcApp.lpfnWndProc =WndProc;5 D( T) ^3 f) c, c, X
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
! C& U+ n  K- ywcApp.hIcon =0;
  z8 X/ \9 B( Z+ I+ l$ Q' E, M9 jwcApp.lpszMenuName =0;
- \' Y6 i$ Q( ]0 Z( }" m; P- bwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
. g( r& p/ o5 q$ @5 T9 i& ?wcApp.style =CS_HREDRAW|CS_VREDRAW;' e- }6 q  {1 [* P7 n$ ^
wcApp.cbClsExtra =0;1 Y. J  I4 K) F! A- D) E
wcApp.cbWndExtra =0;8 N6 J5 p9 Z: N! N: @
if (!RegisterClass(&wcApp))
4 \7 {  u/ t6 f' E# G1 kreturn 0;9 I# F0 U/ o! N0 \  r& k, x
hWnd=CreateWindow(szProgName,"这是一个例子",
& q- ]# W+ K' L2 dWS_OVERLAPPEDWINDOW,/ F, S  [8 _* [1 b& P
CW_USEDEFAULT,9 ?# H( V0 d6 ~( g* G3 H
CW_USEDEFAULT,
) M8 K% R% A  H# R- K  R7 }; ~CW_USEDEFAULT,& j1 O" X  l: C. G
CW_USEDEFAULT,# G: F0 h+ H0 @/ p; O
(HWND)NULL,
+ b6 O- E0 j! b8 Z(HMENU)NULL,
) A7 J" @( S$ v$ D1 [(HANDLE)hInst,
3 y% L; h- x" s! O(LPSTR)NULL);
4 t# N' O0 q5 O1 ^0 E+ SShowWindow(hWnd,nCmdShow);4 i7 n" \2 }1 [; q
UpdateWindow(hWnd);1 [. [' B; ^% K1 z% _, w6 c7 t
while (GetMessage(&lpMsg,0,0,0)){, b& q, `1 B5 L) Z
TranslateMessage(&lpMsg);
  E* R) r9 [- Y7 P+ O# X3 D8 QDispatchMessage(&lpMsg);
: m! O  a( p/ d/ b}
* Z" I: [2 ^" \return (lpMsg.wParam );" X( Y. p* v& `) F
}( L' L8 h; F) k$ N+ G4 T
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)! F- I5 ~. O! R* j
{9 G% C! z& |* V' @' N9 O
HDC hdc;
  j2 g9 P: Q- w0 ?. g9 i! v: aPAINTSTRUCT ps;6 Y5 ]! C9 f# x& [' z% D
switch (messg)
9 L9 _  ]" g3 g# r& ?{3 h" V, l1 Z, d+ y( U5 e! ^: B- n
case WM_PAINT:
5 [8 y; f# u3 ?& f3 I' P2 qhdc=BeginPaint(hWnd,&ps);
+ N! o$ F, i0 i1 D8 P0 L6 cMoveToEx(hdc,0,0,NULL);( w* n4 c% ~# N( _0 Q
LineTo(hdc,639,429);
% U0 a3 j* s, j" ~1 xMoveToEx(hdc,639,0,NULL);1 U% J, [, s. i( a5 o# M
LineTo(hdc,0,429);
. Y6 }4 W4 B( o4 f: Z* ~5 ^TextOut(hdc,120,30,"一些线",6);# N+ B9 m9 M- B3 m; R8 v- D
Chord(hdc,450,20,430,80,455,25,425,70);
! g  a1 v7 A2 z* d: w' H% d1 STextOut(hdc,470,30,"弧线",4);
  X) o; ]5 F% Q: `7 ZPie(hdc,350,50,400,150,300,50,300,100);
) V7 Z8 b( D; P  |. I  ~TextOut(hdc,350,50,"饼图",4);2 {8 f$ ?. _9 {% G8 L' D
Ellipse(hdc,100,100,400,400);
  l9 }7 R; u, }( _Ellipse(hdc,249,249,251,251);
3 }' v5 v! w: k  Y& p0 H5 oTextOut(hdc,250,250,"圆心",4);
+ f4 g6 n, m/ w( S+ s6 }. C( RRectangle(hdc,50,300,150,400);
( G% U/ Z6 y6 N4 C9 NValidateRect(hWnd,NULL);: n, [- a0 O% G) z  [2 G* p
EndPaint(hWnd,&ps);8 g! ^+ b. r% h+ t* ^3 ]7 `( ^
break;
9 f! \" r- [/ j8 Y# X: Z5 `" D% ucase WM_DESTROY:) q4 s: x/ e$ Q/ c, e0 E
PostQuitMessage(0);
9 F% L1 |; k8 ~  dbreak;
, |) ]8 w( _4 odefault:
8 {0 p2 [9 e1 f! N! N! @2 treturn(DefWindowProc(hWnd,messg,wParam,lParam));5 O: e; [7 E- E6 G8 J5 A0 w
break;
* c# b& f# n4 u$ ~) ?6 g9 \& N}
  [- Y- }8 D2 H+ |$ Freturn 0;$ Y; m- P( L' T3 `
}
: s" t5 s/ R1 Y4 ], G1 J# a; U
4 V2 `9 s3 ]0 T
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-15 14:43 , Processed in 0.018147 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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