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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
& Z5 @6 f# }5 x- @作者:雷神  6月20日  10:00 # i5 y/ S( a2 |) R
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL3 P  g1 u2 K0 M' I8 H! `8 k% E
HANDLE 一个32位的无符号整数,用作句柄# S$ m8 O% q( h. ^: V
HDC 设备描述句柄
- T% L# g- S! d% BHWND 一个32位的无符号整数用作窗口句柄: d! I0 H3 f$ U2 {; x$ E; [! T: V" L
LONG 一个32位的带符号整数4 f$ M$ E! u6 O9 {% m. I
LPARAM 用于声明lParam的类型
1 d& E& R' p. u( |: y5 yLPCSTR 与LPSTR类似,但用于只读字符串指针
7 w  F. c; c' M& Z0 F4 pLPSTR 一个32位的指针; L: h+ x+ |! P+ M
LPVIOD 一个普通指针类型等价于(viod *)9 x2 L  U  H* S
LRESULT 子窗口过程的返回值
0 H+ e3 M$ Y. n+ x  zNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
! x, T% s; o0 y! rUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位3 F# Y+ i; e; P2 m' D" }
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。6 w  j2 m1 M# i
WINAPI 在API的定义中取代FAR PASCAL
5 ]" R- i9 v; K- `  IWPARAM 关于wParam的声明, ]9 I1 Q1 h3 ]  C, l9 _2 n
Win32应用程序中常见的结构
6 ]  n& S0 Y' V1 g' m8 c6 q* [结构 描述; i- I$ f" W- R/ V: x9 p  I
-----------------------------------------------
4 R& i& d% _( v! w7 Q( LMSG 定义了输入消息域
8 @  D8 j% `$ r  j4 j  p. ]PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构" c5 n! E- G$ y. t+ j
RECT 定义一个矩形
0 z1 p8 @* r( O1 }" I. l8 _. [WNDCLASS 定义一个窗口类
$ [' G3 [0 f% t一个例子:
. r9 Q* b5 M& g: G/ x6 y1 d, F#include3 y( A1 S! [/ P/ b. j
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
& F( U. o8 l, \& \  F9 Zchar szProgName[]="rogName";
; p! r3 ~* @4 f- ?# @1 N2 Sint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)' O* k  a3 }6 M, M
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
/ D- B3 Q1 c0 U# o7 B+ a: x- X. Q//从WINDOWS向WINMAIN()传递四个参数:
% ^2 L) }1 \+ s7 z% \! V0 A6 v  \" x//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
" Y  y  }9 W0 g0 y0 W$ Y2 z! \% V//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。3 q' o2 P+ N+ k" _9 L
//参数3lpCmdline:
3 N6 S; z( ~, P* p! N  f; v//参数4nCmdShow:
! Q( @5 t7 e3 U  R{
( b7 T# U) c7 G# qHWND hWnd;2 C) k  X) t2 D- l
MSG lpMsg;
0 a% j" I+ k  [6 j/ FWNDCLASS wcApp;
5 a# W7 w; u& _  @# y) r9 cwcApp.lpszClassName =szProgName;5 l6 ]. ]" X) L7 A' h) Y
wcApp.hInstance =hInst;
! R) g. R. s. S9 m, r  t8 o' i: P7 cwcApp.lpfnWndProc =WndProc;
  _0 F% M$ i! o' w2 F7 @7 j2 J7 c8 JwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);8 C. b; e; b6 j! H7 s+ t
wcApp.hIcon =0;6 [" {. W" ?8 c- N1 y
wcApp.lpszMenuName =0;) O' |6 ]7 x) y4 h8 X3 Y
wcApp.hbrBackground =GetStockObject(WHITE_BRUSH);9 E3 ?" I- k" ]: [5 D4 z9 e3 d
wcApp.style =CS_HREDRAW|CS_VREDRAW;  {( I7 t6 X' b6 O$ _0 X
wcApp.cbClsExtra =0;* H3 H6 O& v- n7 I
wcApp.cbWndExtra =0;
6 I4 p, f+ f0 j8 @3 Q, r5 D  tif (!RegisterClass(&wcApp))8 _2 F$ h; M; _! r8 b( x6 p
return 0;1 ~0 l3 o$ Y6 l2 n
hWnd=CreateWindow(szProgName,"这是一个例子",  ?6 n+ @! F9 f+ {: T& ~* l
WS_OVERLAPPEDWINDOW,6 T2 J5 D5 [' Y" u* |  @' X4 ]
CW_USEDEFAULT,
9 `( ~) F$ [" ]8 T% kCW_USEDEFAULT,0 U$ T) z( J; X  i
CW_USEDEFAULT,
! |- @. \# g8 KCW_USEDEFAULT,0 d# N2 k9 V# m' c+ j4 {- N4 a* ]
(HWND)NULL,& {5 t* U- T# o* f* @- B6 n4 C
(HMENU)NULL,
6 o- n# y+ A5 q# I  m, r(HANDLE)hInst,5 W/ h: e0 ~, x* J: I* n
(LPSTR)NULL);  N0 s: m' O8 F  y4 s* @& L+ c% D& @1 e
ShowWindow(hWnd,nCmdShow);5 h& D. ]/ N! Q) B
UpdateWindow(hWnd);
4 h! q% g' A2 ]- W1 pwhile (GetMessage(&lpMsg,0,0,0)){8 g7 b6 y3 J7 w0 O$ G  S
TranslateMessage(&lpMsg);2 _5 M5 V1 i, u( d7 I: |
DispatchMessage(&lpMsg);
1 c) Y; S0 h) C; _# h$ p}
* M5 N" t  e4 z2 Ereturn (lpMsg.wParam );
. ?/ k3 j7 u0 k5 ^}
$ d  c2 ^: v8 m: d% z$ }LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
0 a! `7 n; n, w/ V6 Q( e8 g{
# X: e# B' z+ z9 d5 ^4 h5 A: JHDC hdc;
  [1 }5 j  \: q/ N7 s3 m4 \1 JPAINTSTRUCT ps;
+ ~" g: P! y2 kswitch (messg)
8 J5 a, Z6 w& e  E{
  x4 g8 ]4 S! tcase WM_PAINT:, h" I$ D% e" {& ]
hdc=BeginPaint(hWnd,&ps);6 t0 E0 R  {2 e, c  _
MoveToEx(hdc,0,0,NULL);( v$ B( f* ]# n3 C
LineTo(hdc,639,429);9 B& p4 O2 c; O& [, q* h
MoveToEx(hdc,639,0,NULL);$ f9 @8 k' E/ _% m+ D! R
LineTo(hdc,0,429);# {- w$ J6 o" B3 Y  j
TextOut(hdc,120,30,"一些线",6);' ~4 {# z5 A: L$ T, K6 [, c
Chord(hdc,450,20,430,80,455,25,425,70);5 n$ h2 d0 x8 P1 M
TextOut(hdc,470,30,"弧线",4);
) v; }, {2 a3 {) M3 O" A, OPie(hdc,350,50,400,150,300,50,300,100);) k2 w# E2 V2 d6 t
TextOut(hdc,350,50,"饼图",4);
& w0 M+ T2 f* N* O" j: i' KEllipse(hdc,100,100,400,400);
+ c* @! j7 }( [  f0 G; qEllipse(hdc,249,249,251,251);7 L, ]. I! I$ Z" _" D0 \4 D( u
TextOut(hdc,250,250,"圆心",4);: q$ k0 Z+ U' ?
Rectangle(hdc,50,300,150,400);
+ ^9 B" |$ H0 pValidateRect(hWnd,NULL);
1 D2 G  W/ m, g! E( L5 |EndPaint(hWnd,&ps);
' [0 d2 q  [8 ?6 B) @& S  @" V" `break;
5 z5 C$ _% q, _2 D( Icase WM_DESTROY:
- L$ n  D. \* f# E- O+ XPostQuitMessage(0);
5 T8 t. t  L  V2 K1 dbreak;6 |3 i% u& U8 O5 q# y
default:
. I5 L; M- a0 G% X, Ereturn(DefWindowProc(hWnd,messg,wParam,lParam));3 Z  c' U* h0 t% h' K
break;$ N6 u! _- }# d- C% W! ^# O- q
}( I) H$ t/ d# B% U) R
return 0;: O8 B% Z& |1 K' D& S
} ! i( G4 {7 m. H9 S/ O2 R4 z% \0 j
# N  `4 k$ L0 n9 t4 N
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-9 04:13 , Processed in 0.035728 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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