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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
( `8 b7 A  o5 U5 R作者:雷神  6月20日  10:00
9 ~1 p8 s  \4 M. ?5 Y: H   CALLBACK 在应用程序的回调例程中取代FAR PASCAL: z4 [0 i: {$ b7 |. }' T0 p
HANDLE 一个32位的无符号整数,用作句柄
% @5 s- y: x+ f) K+ j1 THDC 设备描述句柄+ Y. W. V. `% Z; c
HWND 一个32位的无符号整数用作窗口句柄
6 r: m- q: s. d; w6 QLONG 一个32位的带符号整数* i$ J1 S+ y1 q
LPARAM 用于声明lParam的类型! K+ V1 T1 w8 c/ @6 h- \
LPCSTR 与LPSTR类似,但用于只读字符串指针: |. n5 d- D+ g
LPSTR 一个32位的指针: a0 q9 U- w8 x; v
LPVIOD 一个普通指针类型等价于(viod *)
* V- d4 ~) p' S7 m, X9 WLRESULT 子窗口过程的返回值
0 T% _: r% F& q; G% a2 h0 DNULL 一个整型的0值,常常用于激活函数的缺省动作和参数% e0 n: M0 B8 p
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位% b! U6 D- S2 u2 C
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
. A- T  S! r) @' j3 U3 AWINAPI 在API的定义中取代FAR PASCAL
+ [2 m5 ?- L# MWPARAM 关于wParam的声明
2 |1 N: X* x) A$ {Win32应用程序中常见的结构
* v6 n  s* m0 C. W8 ^8 Y9 m# k结构 描述
9 X! W% N7 ?. d+ Q-----------------------------------------------6 D6 ]( Q' \/ D8 t* L1 s. ?) G/ Z; I
MSG 定义了输入消息域
' V! X' d7 p9 j9 E& _PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构7 f" V5 ~0 x3 X$ B+ `2 t
RECT 定义一个矩形( ^3 r) e& |% B) Q7 A2 G! z
WNDCLASS 定义一个窗口类( U5 h4 G% o6 A; `
一个例子:) @8 g( W1 x  \0 f) ]# A
#include$ j4 t, X9 v, i: ?- Z+ `0 g  o9 K% D
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
: c) A+ ~/ b8 dchar szProgName[]="rogName";
6 x- v; A7 s3 eint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)$ c9 M, I' h; ^; ~5 {2 w
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。/ A9 V" {3 _1 j7 q; f
//从WINDOWS向WINMAIN()传递四个参数:
& s. }8 y* D% L4 C8 z//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
: X' ]" w% M. w. z) \" F( I. r! w' O0 {. [//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
3 g! Q5 k& V( K! R//参数3lpCmdline:/ }7 |1 V% F# r! {6 \
//参数4nCmdShow:
. n5 r+ g% e! u: `2 \0 u" Y{
0 u1 I- m9 a: c  }/ M, G* T! @# J% uHWND hWnd;* H+ }/ t% i0 f& F# D
MSG lpMsg;0 i" L# E, o8 _
WNDCLASS wcApp;
( F# o2 {0 _5 j, [5 I  q! G3 T' XwcApp.lpszClassName =szProgName;
+ V  j$ }7 e3 d; L% _wcApp.hInstance =hInst;9 _/ M$ W( @$ D, J. F5 b
wcApp.lpfnWndProc =WndProc;1 N! G" o$ U9 R
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
# L' {9 X9 g( w8 WwcApp.hIcon =0;& v" p6 C; v5 T$ @6 A' @
wcApp.lpszMenuName =0;5 j$ {  v. t- X/ k' b# A$ z+ K! I
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
! G3 _4 `6 \" \& J2 b: X# NwcApp.style =CS_HREDRAW|CS_VREDRAW;% R# _' g( R# M. {0 B/ b. g
wcApp.cbClsExtra =0;& s* a0 h! `& D0 g
wcApp.cbWndExtra =0;
. J9 z9 {! `+ ]5 }1 {7 c: {, ^if (!RegisterClass(&wcApp))
  f. a# x# p. T" {' Breturn 0;0 y& w0 @0 ^$ x1 L+ e8 P
hWnd=CreateWindow(szProgName,"这是一个例子"," Z! \+ A9 F. Y$ P0 s: z
WS_OVERLAPPEDWINDOW,
) M$ ]/ V6 |5 g: L8 M* w& RCW_USEDEFAULT,
& g# C6 l9 J, tCW_USEDEFAULT,8 }& a3 V5 s4 y
CW_USEDEFAULT,* c" _" P2 l; J+ U
CW_USEDEFAULT,
  b- h' w( k* F; v(HWND)NULL,
( Q. E! t* P5 `$ e(HMENU)NULL,' P/ W) X# ?/ b
(HANDLE)hInst,
+ Z4 Y! F1 B6 }) Z2 r9 v0 X(LPSTR)NULL);
+ v2 D4 U: E  w: D, `. n- u  u7 JShowWindow(hWnd,nCmdShow);
0 T* ~6 s8 z$ k9 [; pUpdateWindow(hWnd);: u# r" @4 H5 L$ ~% @" S! o3 ~
while (GetMessage(&lpMsg,0,0,0)){+ V; q' K6 {& Q$ h0 w3 E6 x
TranslateMessage(&lpMsg);: F# l% w2 t  n7 N  R. e$ G
DispatchMessage(&lpMsg);7 X& b6 G1 u3 i
}0 G9 c, N, C: j6 O
return (lpMsg.wParam );
9 c. s$ k" o3 Y: t! e0 V}) Y( t: Z2 \. ]
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam); M5 `6 G7 v) o! t
{
. U  N% Y. M4 T  O8 x. K8 D7 MHDC hdc;% |+ z) w& O/ L. f% c: K1 j
PAINTSTRUCT ps;) f. b6 ~4 V6 g1 j# N$ ?
switch (messg)
! a4 v5 D* P5 t: Y- ~, A" E{- C2 Z) p& F3 Z
case WM_PAINT:  Q6 u8 A3 V3 v5 U# |9 v$ {: H* K
hdc=BeginPaint(hWnd,&ps);$ w  \. w) G1 T9 F
MoveToEx(hdc,0,0,NULL);: s1 s6 B7 ~6 h! E; R  u  d
LineTo(hdc,639,429);
) I1 z/ U% K2 q; EMoveToEx(hdc,639,0,NULL);
5 c% C7 r8 F& K0 Y% ELineTo(hdc,0,429);9 A& g6 [5 f9 c' B% G& l
TextOut(hdc,120,30,"一些线",6);4 C3 _) W3 P: @- }- K1 z
Chord(hdc,450,20,430,80,455,25,425,70);% k- s. n; E/ B
TextOut(hdc,470,30,"弧线",4);7 Z& k, p* V6 L* Z
Pie(hdc,350,50,400,150,300,50,300,100);2 {& v- ~, N7 M- v8 _* v
TextOut(hdc,350,50,"饼图",4);
: Z  G* I, X9 D" n1 HEllipse(hdc,100,100,400,400);& T9 s, ~8 E0 F* n8 b3 H  U
Ellipse(hdc,249,249,251,251);! T/ H2 {1 {5 m' G% e% S* `6 }4 g* n9 |
TextOut(hdc,250,250,"圆心",4);7 t% d) }3 E4 y
Rectangle(hdc,50,300,150,400);4 D1 }1 d' O0 I! ^* f' `' t
ValidateRect(hWnd,NULL);
; a0 j. n: |  u0 mEndPaint(hWnd,&ps);- G0 q* D5 q; D7 \9 l) R% P" [. D
break;
2 y7 O3 |  t! B7 }4 [- V9 C# \+ Kcase WM_DESTROY:- V8 E8 i' Z" Q
PostQuitMessage(0);
3 w, b7 y+ p, S8 Z0 ebreak;3 O: s& W3 ?5 L( o( L
default:0 C( q* O& Z/ k1 g% _
return(DefWindowProc(hWnd,messg,wParam,lParam));/ K# j( o) C! g5 N# X- L
break;8 w2 `) k! m4 F. l0 R
}
3 E0 v; z9 R9 X& B1 Hreturn 0;1 C4 X6 q8 X4 e
}
% t! v) b; d$ q* i9 _4 @' @% \9 q , L5 _/ L3 `! i
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-20 05:26 , Processed in 0.037189 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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