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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 8 M9 k9 h* h6 f. h8 G; i
作者:雷神  6月20日  10:00 ( S2 C0 K9 `  F& h3 f7 d. |
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
+ t+ G6 Z! |$ {! H* I- CHANDLE 一个32位的无符号整数,用作句柄
* h+ W' G- f: `2 k1 Q* k  CHDC 设备描述句柄
2 N( o" r# n  T% H' WHWND 一个32位的无符号整数用作窗口句柄
' ?4 W6 v8 @5 YLONG 一个32位的带符号整数. T. _) \3 m5 Q  s
LPARAM 用于声明lParam的类型) B* w# c3 O: S, V3 k5 D3 [
LPCSTR 与LPSTR类似,但用于只读字符串指针3 N% B0 @, j& J6 z1 r( L( L
LPSTR 一个32位的指针6 ?2 u4 E, |! I: _- A
LPVIOD 一个普通指针类型等价于(viod *)  A( _0 U2 C6 \( V# C
LRESULT 子窗口过程的返回值1 h: e& Q& u! Q2 j
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数2 |& _& D0 o, v- Z' ?
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位* ]# N6 l3 m! T; u) ~$ D* l1 _
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
9 m2 v0 g0 q6 a. J& B8 DWINAPI 在API的定义中取代FAR PASCAL
4 o* A' [# N% a7 W( XWPARAM 关于wParam的声明! d* G+ v- y$ \+ r
Win32应用程序中常见的结构
2 h) k9 Y; p6 z* a* {结构 描述
! |6 _4 P* w! b- {7 B-----------------------------------------------
) v- u) m3 w' s  u+ E( hMSG 定义了输入消息域' m1 O2 [, G  W4 f" ?5 h" @* l
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构* s2 Q, ~7 j* C
RECT 定义一个矩形6 u. ^; S8 q. Z3 S) h5 L5 _/ C2 u8 G
WNDCLASS 定义一个窗口类8 m3 {9 }5 D6 L5 g* {, O* [: w
一个例子:
) x* }& s8 d; F) X#include6 m; p; ?+ ~# |8 R: I, s" y0 V+ I" k
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
2 z( W% @. s) g/ J8 Fchar szProgName[]="rogName";3 V1 D% Q( K: z- ^& e# q
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
/ P  r' j5 [- t. ~+ ~8 I, }$ l//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。  C' K  _9 }% s/ i9 ~
//从WINDOWS向WINMAIN()传递四个参数:
9 H8 I& p/ k/ a+ M4 P* c//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
8 M8 q, r$ p9 P' d/ U- ?//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
% Z9 Z  }4 D' d8 w  _+ _//参数3lpCmdline:' a6 i' n; A* U# n5 Z
//参数4nCmdShow:
$ K2 m8 I# Q& D- ?: I{& c3 u1 t) r5 w- o, I6 B9 ~$ ?
HWND hWnd;
4 {5 g0 c, R! _MSG lpMsg;8 w; f' i9 W$ e) d& h6 _8 m
WNDCLASS wcApp;8 ?# b* {& @! a3 c
wcApp.lpszClassName =szProgName;
; k3 t4 b0 _" E* Z* twcApp.hInstance =hInst;; g+ j+ @1 t* @; p
wcApp.lpfnWndProc =WndProc;) t" {( l! y( l1 s5 w
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);( \* h7 j& q5 j6 S6 K# x* T
wcApp.hIcon =0;
" Y) [) R. B9 W8 S4 gwcApp.lpszMenuName =0;
0 j8 Q' k0 c5 S' O$ m+ e* Y6 K  [9 ewcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
1 m5 i* i+ V9 a; R+ }; t/ xwcApp.style =CS_HREDRAW|CS_VREDRAW;
6 o7 F* q7 ?8 k4 U" _& XwcApp.cbClsExtra =0;$ n; c/ Z& Y: A1 u. o& r
wcApp.cbWndExtra =0;
! J8 `/ u3 T* @6 {9 j5 s8 k+ Qif (!RegisterClass(&wcApp))
! l- k2 N+ G6 V0 N4 Yreturn 0;
, B6 k8 }4 w6 V  z1 r3 f; }6 ThWnd=CreateWindow(szProgName,"这是一个例子",, s1 u) q9 R5 v/ r* P% M8 [3 y
WS_OVERLAPPEDWINDOW,0 S# W5 e1 h- e9 Q
CW_USEDEFAULT,7 M/ v; e7 I* p
CW_USEDEFAULT,5 @; W7 L, {: r' |1 V
CW_USEDEFAULT,8 m' n( F2 y6 `0 _5 ?
CW_USEDEFAULT,
4 ?- L5 K' V8 {! u! n0 W( D+ _- g9 w(HWND)NULL,( L9 i4 z* [$ y; \( n
(HMENU)NULL,
/ ]! a& f& o, I) m) f0 j(HANDLE)hInst,/ h9 a  r, `, \: F
(LPSTR)NULL);$ w9 I+ N" S7 d2 N& y
ShowWindow(hWnd,nCmdShow);
: g$ E3 c0 ?6 B4 X7 LUpdateWindow(hWnd);, u2 C/ v6 @! r0 B- [
while (GetMessage(&lpMsg,0,0,0)){3 f3 a. M/ Q( s# Z% C
TranslateMessage(&lpMsg);4 j4 x% ^' K" E9 t, X
DispatchMessage(&lpMsg);
2 k7 v# ?/ E* i( {# B}
8 g2 V5 _5 I3 z3 W! k: wreturn (lpMsg.wParam );4 ~; g$ z( b) H5 q( ?. }
}5 g+ _# q2 [. E" \3 Q+ K
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
7 n. m4 R4 S% W" R{! m% ^5 ~$ b2 Z( f  u1 Z0 c: H8 Z
HDC hdc;
! F: T) H& q* ?! }9 PPAINTSTRUCT ps;! O0 a! L) S; P2 v4 a
switch (messg)
7 b& C7 c1 _) [8 k6 x{
8 f7 {' `8 n& d) ?! Xcase WM_PAINT:2 _* P% K: _( x4 ]# ~' o4 Z# M
hdc=BeginPaint(hWnd,&ps);! u3 Z  u1 V1 i- P5 e) ?
MoveToEx(hdc,0,0,NULL);
6 I3 i; X8 Z$ @4 w7 b, YLineTo(hdc,639,429);4 r9 ]# P2 b3 Q
MoveToEx(hdc,639,0,NULL);- G5 q5 ~/ c2 ^, A" F6 P' D2 r0 x
LineTo(hdc,0,429);0 O: Q- x4 c3 F' J2 s+ Z
TextOut(hdc,120,30,"一些线",6);+ M' ~1 G6 U: [% B
Chord(hdc,450,20,430,80,455,25,425,70);
3 A/ ]; a% f4 E4 R" H3 ?3 X9 ~5 FTextOut(hdc,470,30,"弧线",4);
: r, T- ~9 ?& E0 F5 R8 lPie(hdc,350,50,400,150,300,50,300,100);
5 e. _/ d5 ?+ A# d8 j8 tTextOut(hdc,350,50,"饼图",4);$ G* t$ ^! Z7 x8 _8 V
Ellipse(hdc,100,100,400,400);1 Z6 h9 h% o+ U+ H
Ellipse(hdc,249,249,251,251);7 u) j! Z" L( \
TextOut(hdc,250,250,"圆心",4);
- W8 Q. n: J9 h* n7 F2 {1 NRectangle(hdc,50,300,150,400);
7 q2 I, G6 ]' V! L: qValidateRect(hWnd,NULL);5 i: M/ P3 P& O" d
EndPaint(hWnd,&ps);
- o( n  S; v; U" e0 rbreak;. Z( o* f8 K; L% [$ S8 s
case WM_DESTROY:
( B0 U3 r% W8 }/ @5 fPostQuitMessage(0);9 `4 g' j2 M) D+ h7 p2 l9 h3 g
break;* o# u; {% m: Z! ~$ S$ P- e
default:; ~' z- v) _0 ^
return(DefWindowProc(hWnd,messg,wParam,lParam));* ]1 C2 B) |, k/ K
break;- F& h! v. k9 ^2 k7 R; P, a
}. H6 z' D. K! ?
return 0;" k* H4 ]3 e0 e. D4 s* |
} * p- g5 C  W0 q# L! U6 i. X
6 i  V; w( ^: G% r3 S; \4 p8 Y  D
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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