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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
0 O) w- Y( {: E6 T; ~/ ]  W* U作者:雷神  6月20日  10:00 / ^5 N& c0 v: g0 `/ ~; C
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
% S: {0 k7 t0 l9 D* eHANDLE 一个32位的无符号整数,用作句柄1 q8 f1 O, m" M5 l1 l+ U, y
HDC 设备描述句柄
- V/ X$ q# P& |HWND 一个32位的无符号整数用作窗口句柄
5 H4 _* N& F5 v; yLONG 一个32位的带符号整数, q+ c9 s. \1 o) d1 i  D( _
LPARAM 用于声明lParam的类型
+ _+ g/ \" [0 M4 t0 w4 j$ _LPCSTR 与LPSTR类似,但用于只读字符串指针. Z! G& _7 G6 |2 d" W
LPSTR 一个32位的指针$ r* I6 F# [4 ?- |) \: W! J
LPVIOD 一个普通指针类型等价于(viod *)
. g, u8 N% `. V# O- ?# t/ VLRESULT 子窗口过程的返回值. V" B5 B! B$ a
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数
- n! n' h7 i4 aUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位. |, {7 [8 t( Y3 |* j- _( W
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。8 Z5 {7 U, |, u% Z, r& ^
WINAPI 在API的定义中取代FAR PASCAL
$ E, ^* F* c) q0 P4 xWPARAM 关于wParam的声明
0 u2 o  P% i, rWin32应用程序中常见的结构9 g5 k3 F- D) ^6 t. }2 _
结构 描述, Y' ^% r3 P: X8 \# d, R
-----------------------------------------------8 }) D7 B) p8 K9 b# a' Y
MSG 定义了输入消息域' Y7 Q; C- d5 k
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
* _! m0 P  N4 ?" g5 y4 n( RRECT 定义一个矩形
) A7 V7 r  V- u* NWNDCLASS 定义一个窗口类
6 {& z: W- n, O8 ~% N/ T" e: M一个例子:
( o5 q9 W7 {+ o3 H7 {& c#include
' T. d$ n; }3 x9 |4 \5 w7 A& yLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
3 i6 k5 q. k$ u2 ?+ S8 w0 `char szProgName[]="rogName";
# m, T& ^6 c4 `int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
5 L1 n% q  J. ~; _% p. O//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。3 v1 s8 \. z% I4 J1 _0 a  ~- U
//从WINDOWS向WINMAIN()传递四个参数:5 V* `- n: a  O: Q
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
& |8 }6 R: C+ V' x1 c//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
9 N" w2 i6 G" p, R//参数3lpCmdline:5 a2 N3 h& B9 d
//参数4nCmdShow:
: J6 c. ?$ H+ E! q; [7 ]1 \{: Q0 i& J  |& t4 d
HWND hWnd;
9 J0 a! ^$ v/ r# k3 A. \# \MSG lpMsg;
" i3 e5 I& B! m; Y) X" s+ c2 g! r' S: sWNDCLASS wcApp;
  ]: Z! Y) Z2 z) OwcApp.lpszClassName =szProgName;
  _/ t2 Z7 v( p. s5 ~1 ZwcApp.hInstance =hInst;
, b; p: C+ R0 {wcApp.lpfnWndProc =WndProc;/ S1 l/ I" b6 d9 \3 ?
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);3 x! u$ Z3 ^$ B( X1 V- k
wcApp.hIcon =0;. |; N, X9 p- O) s" ~1 W: w' X
wcApp.lpszMenuName =0;$ V. E" V9 ^. u. P( l' v. Q+ L
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);3 T5 A: a( o  S  Y
wcApp.style =CS_HREDRAW|CS_VREDRAW;
- [1 B! ~+ {) l) r0 p" q$ P: JwcApp.cbClsExtra =0;  [9 {7 ^4 y, ]
wcApp.cbWndExtra =0;0 e- d3 r7 Q, W7 h  a+ F7 @
if (!RegisterClass(&wcApp))
" X+ D  t8 [, u) Kreturn 0;$ x8 W& M% c0 v3 h1 o
hWnd=CreateWindow(szProgName,"这是一个例子",
  D+ H$ h9 p2 q! A6 E6 ~WS_OVERLAPPEDWINDOW,& O; W  l, x6 H6 l& N" |
CW_USEDEFAULT,
8 o1 p# P/ z) y7 m3 p* tCW_USEDEFAULT,
+ B( ^1 O# I, m1 m) fCW_USEDEFAULT,3 C' }. @2 d7 \0 Q9 k0 P
CW_USEDEFAULT,
& k7 o  I& k+ h3 q9 {% {(HWND)NULL,) q4 t& r8 @* V8 T
(HMENU)NULL,0 e' `, R# h( k) ?3 U, J: x6 A2 v
(HANDLE)hInst,
# g& u% P3 z9 J2 p/ l8 v; k' o& E2 f(LPSTR)NULL);
4 T' P' E$ o- C( }. a( ?5 X. xShowWindow(hWnd,nCmdShow);) u: O( j" [  N* h
UpdateWindow(hWnd);% E* S; y( n, J$ T6 B
while (GetMessage(&lpMsg,0,0,0)){
1 g) a! ^3 q2 M' x9 KTranslateMessage(&lpMsg);
7 a9 E- z: u# nDispatchMessage(&lpMsg);- N- d2 k( ^& _3 R; {; x' b1 s
}9 z  ]: j' u8 T
return (lpMsg.wParam );$ N# s! s- P* g$ ?6 A2 k. O
}
! P0 v% ?1 ^' o4 D1 ZLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)$ M* Q; O* @$ a, I/ i% ~
{) P8 F0 D- E! O3 [
HDC hdc;
' m) H1 e3 G. H8 I, }PAINTSTRUCT ps;7 N7 R% B: b6 x7 E
switch (messg)6 v! R; \+ Y1 i  X, T
{* @% S7 B( \! ~  M
case WM_PAINT:
% q( K0 X- s. R/ }, C# zhdc=BeginPaint(hWnd,&ps);9 [2 o  ?6 y& r( C
MoveToEx(hdc,0,0,NULL);
2 ?  B% S' y- H1 v5 M8 b7 i5 d# ZLineTo(hdc,639,429);
( W4 `+ g% M7 _6 ~0 `MoveToEx(hdc,639,0,NULL);2 X% E5 a9 p7 C0 a& O& z
LineTo(hdc,0,429);
) Z* e7 `' W. Y4 \+ C& CTextOut(hdc,120,30,"一些线",6);
  p0 ?7 A4 |/ A% h$ [, G! C. cChord(hdc,450,20,430,80,455,25,425,70);! F  c3 M& C# ~$ H; |3 O
TextOut(hdc,470,30,"弧线",4);
& v; r! j5 U( M0 MPie(hdc,350,50,400,150,300,50,300,100);
* k: i7 K' p1 v+ j0 s; c& z8 P. zTextOut(hdc,350,50,"饼图",4);
2 Y6 P  H- Z# Y* P( W" OEllipse(hdc,100,100,400,400);
% }  P  F7 I$ F4 YEllipse(hdc,249,249,251,251);
3 g/ l& a7 B- b& E$ O; @# d: MTextOut(hdc,250,250,"圆心",4);
7 f8 H( ~: ~- L/ ]% ARectangle(hdc,50,300,150,400);; F8 I6 M! A$ S$ T; a
ValidateRect(hWnd,NULL);
5 X- q; d# o8 \" C/ c+ H* REndPaint(hWnd,&ps);
9 F$ s& M. g& Y/ a8 f0 tbreak;+ t, h$ g5 D; R0 M' L6 @
case WM_DESTROY:2 Q4 K1 F: u$ G, R# k* o
PostQuitMessage(0);5 X# k% S: i$ s0 `: ]
break;! B' c" T- o$ l0 S- e: z
default:
4 d! ^% _$ w/ ^; ~8 n  Ireturn(DefWindowProc(hWnd,messg,wParam,lParam));. O+ v7 Y* J1 H; @- Z
break;+ s& P8 Z( d, G2 F% e" b4 \
}% ~4 `2 }! |+ P$ b' m8 t
return 0;: h3 C/ L/ |, [8 L( t
}
8 d6 t0 q5 f6 q+ G8 a, x0 x 6 v/ e3 m. p" j% [
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 10:26 , Processed in 0.018826 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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