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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 , w5 |: q6 W3 [  O4 |
作者:雷神  6月20日  10:00
7 H& \$ i" _. ~   CALLBACK 在应用程序的回调例程中取代FAR PASCAL$ e* H2 D5 J) v8 M
HANDLE 一个32位的无符号整数,用作句柄
& K) I, |. D2 J: DHDC 设备描述句柄
( y! M+ _+ `/ Q/ ?' a# rHWND 一个32位的无符号整数用作窗口句柄
. n, t8 F, R9 h) C' ]LONG 一个32位的带符号整数' K, X! v% q: c4 _3 T& b
LPARAM 用于声明lParam的类型" F! P" [- w) l) n* U# }
LPCSTR 与LPSTR类似,但用于只读字符串指针5 C  v8 I# {8 C; h* i9 n
LPSTR 一个32位的指针
: E# ?% ?* f" }. l" l1 WLPVIOD 一个普通指针类型等价于(viod *)0 f0 N, o* u9 H  i- n0 {$ s
LRESULT 子窗口过程的返回值
2 J& ~4 Z4 p1 J' v3 V" P/ iNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
4 ~8 ^) u2 \7 vUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位# w# w  {6 [8 i8 E
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。! O% b' u" l  ]1 q1 |6 }: p
WINAPI 在API的定义中取代FAR PASCAL
' a! z/ w) A) I4 b' o" \) F/ }WPARAM 关于wParam的声明4 J; @3 |; I4 I
Win32应用程序中常见的结构
; e0 y! d! P) n: x( y结构 描述
! j1 X. X. N$ {2 w: Q# t8 z8 j-----------------------------------------------
' t3 E. N: }( {/ q8 a- D- aMSG 定义了输入消息域
+ M1 m1 B) F+ M; ^PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构; Z! B1 K( i5 s
RECT 定义一个矩形
  Q3 V: \; _# V" C0 yWNDCLASS 定义一个窗口类
% }5 N  k" ^# R* \' f" p一个例子:, a8 J: s  U9 y, S: l8 ^) j/ C
#include' X( U% g- m( A& z. }
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
( O* M8 M3 \- \: i  |7 O' _% n2 Tchar szProgName[]="rogName";
1 [' d2 k, w4 U9 j3 K6 C3 z# V. Qint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow): J" Z  U$ U, y
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。8 }# R1 U& N/ ^) e- |
//从WINDOWS向WINMAIN()传递四个参数:
& R' M. y$ D9 l; ?/ R" c$ Z//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
3 n+ f& Z! p$ O! ^- a//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。! I# P  Y2 k+ c+ y& N2 O
//参数3lpCmdline:
7 R0 H' w" i. M" y% x. H% B//参数4nCmdShow:
, k6 U4 r) U& M" Z3 Z4 y{
! D) D$ Q$ j6 @' _, ^$ N9 IHWND hWnd;% x: }2 f7 r) r6 f. F3 S3 ]6 p
MSG lpMsg;
1 J1 u$ v3 E: \4 \$ r( dWNDCLASS wcApp;
  ^5 G$ h. [& ]' Z2 _* @% `wcApp.lpszClassName =szProgName;7 @; l) O8 B& d1 m! x
wcApp.hInstance =hInst;5 O. P3 C* K  r
wcApp.lpfnWndProc =WndProc;+ b, K/ R, h9 C% `) f9 |3 a6 B+ ~7 [
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);$ H1 H; [1 u. N0 m: N
wcApp.hIcon =0;
1 G# K3 q0 G& Z1 @, g, BwcApp.lpszMenuName =0;
. l* L2 n+ [8 C: R0 ]" }) ?9 UwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
( n9 C* F# u2 M. T- v, E3 i1 R) ?wcApp.style =CS_HREDRAW|CS_VREDRAW;! D: @& O7 ]. w+ ?# b' j& U# C
wcApp.cbClsExtra =0;2 C8 i/ h$ a5 K' c  g( @
wcApp.cbWndExtra =0;
: s. W4 u( a  T; h2 Cif (!RegisterClass(&wcApp))
2 m" E7 |  Y: Z& {return 0;
& K2 Z# L; c% d5 UhWnd=CreateWindow(szProgName,"这是一个例子",
  ~8 P% ?  H( V- a/ u. QWS_OVERLAPPEDWINDOW,
- r( _( e, F0 E5 j7 N9 U- [3 tCW_USEDEFAULT,
8 T  V& ^( x$ eCW_USEDEFAULT,1 p" @6 r, L% P0 t7 Y8 t
CW_USEDEFAULT,
, J: m6 |0 Y- aCW_USEDEFAULT,: X! @; E6 t$ g" x, S  @( s% n
(HWND)NULL,
6 ]# a5 F  \) {; U: T5 o; D(HMENU)NULL,
6 i, \! L. z, v. H(HANDLE)hInst,4 y3 t. j; c3 Y2 ?* b0 a6 V
(LPSTR)NULL);
4 _" z$ H6 O/ ?/ A4 hShowWindow(hWnd,nCmdShow);
9 T9 \3 n9 L9 ]9 @! a7 y! d+ O* [' DUpdateWindow(hWnd);. Q3 L- v5 B$ ]! Z
while (GetMessage(&lpMsg,0,0,0)){
! ~7 f- b+ P  {3 @- w: TTranslateMessage(&lpMsg);2 H* j8 y2 U! e8 F
DispatchMessage(&lpMsg);
0 O, n- X' C: |) B  O}
- D/ X$ @+ z1 Ereturn (lpMsg.wParam );+ D. F4 K& k; V' k- [/ V9 m
}
; `. t! q- ^: f; l, SLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
, `# c1 A2 M( l1 c5 r' v# a{" S0 |" u0 w5 |
HDC hdc;4 B/ k7 O+ [; u3 T
PAINTSTRUCT ps;1 _$ _) _  y0 D8 \- u5 ]" J+ ?
switch (messg)
2 C$ H* }1 v) @{0 X5 ~2 ]5 X2 V3 Y
case WM_PAINT:4 P) q. P* A, B4 D. q7 B
hdc=BeginPaint(hWnd,&ps);8 ~8 p" W" A+ ]- t) [
MoveToEx(hdc,0,0,NULL);% m" l. P. S& X2 z: A
LineTo(hdc,639,429);
0 d7 R5 n3 W$ ~; F1 uMoveToEx(hdc,639,0,NULL);2 `5 ~/ O) y- R0 K- w8 B$ y& t
LineTo(hdc,0,429);, W& |: \- u$ V' W
TextOut(hdc,120,30,"一些线",6);
( P* ?3 k1 ]' _! P' ]Chord(hdc,450,20,430,80,455,25,425,70);9 j, c& T% q" [: y8 t8 R; p+ |- ]6 x
TextOut(hdc,470,30,"弧线",4);
8 z3 N. K1 Q$ @, x- T1 X2 ?3 J7 _) F3 ]Pie(hdc,350,50,400,150,300,50,300,100);3 W2 E8 @$ B* J* B  V' p
TextOut(hdc,350,50,"饼图",4);
( j, n9 |4 Y4 s0 ?0 @Ellipse(hdc,100,100,400,400);
1 E8 T2 n" W1 F3 N7 ?3 L$ P- k$ PEllipse(hdc,249,249,251,251);
& n! V& r0 S4 bTextOut(hdc,250,250,"圆心",4);/ z; R0 C- g) H, F' q% d
Rectangle(hdc,50,300,150,400);
  ~. @+ P3 r+ i  K  yValidateRect(hWnd,NULL);, \- l4 E* E0 t  m( l$ N4 w
EndPaint(hWnd,&ps);8 W4 k. @2 h  @! S7 I- A: }
break;
, ?8 H; ?, T4 d% o5 o& ucase WM_DESTROY:
2 v0 x' ~6 ~  nPostQuitMessage(0);1 Z, W7 x' K& {7 l2 G7 v' Y
break;$ ^5 F3 C/ E# b- ?
default:; `. c$ {0 O# R6 v
return(DefWindowProc(hWnd,messg,wParam,lParam));6 z+ m0 A4 N$ G9 J/ D
break;
% T/ p8 P* ~9 E5 E}
* X2 p& ^/ H. oreturn 0;
- h( u5 I# U! A2 ?2 X9 ]} * D; p' O( n; U+ E. v9 N
8 d( N0 o- p; I# q
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 15:12 , Processed in 0.015566 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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