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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构 + |) N/ |; v9 e3 R: ~. {
作者:雷神  6月20日  10:00 0 F7 e( }1 g5 `( m) h1 l
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL7 u6 s: q( j& k1 X" P
HANDLE 一个32位的无符号整数,用作句柄2 m! E: E1 V" q  R- f( H
HDC 设备描述句柄) e0 J+ }, E! @8 Q% X
HWND 一个32位的无符号整数用作窗口句柄4 f  u. M, ]; `$ h" H
LONG 一个32位的带符号整数
' Y, Z( d* D6 y1 }1 I9 ]LPARAM 用于声明lParam的类型
% G2 Q" c7 i% B& k( @LPCSTR 与LPSTR类似,但用于只读字符串指针
4 N1 R, c* T# ?- N7 R$ _: i2 hLPSTR 一个32位的指针- V! G- N) U. N! {2 j
LPVIOD 一个普通指针类型等价于(viod *)
1 g# V; y+ C0 M; p3 PLRESULT 子窗口过程的返回值
" F5 O; ~+ u3 y( QNULL 一个整型的0值,常常用于激活函数的缺省动作和参数9 }( g1 C4 Q% ?# |. X- S
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
, v8 }" p$ m7 o7 \WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
/ R& t0 w2 b/ W% r5 rWINAPI 在API的定义中取代FAR PASCAL7 t& F& P0 D6 r+ u( L. B( p
WPARAM 关于wParam的声明9 K# W5 k4 L" B
Win32应用程序中常见的结构
3 {& k: U2 V7 c. x# l( K/ w结构 描述
' ^3 C1 m& \, @0 K, E$ p-----------------------------------------------
! N- J0 L) i! x/ K9 J  ^4 v6 qMSG 定义了输入消息域& J) p0 l  U1 a5 j( H2 R# R1 S7 b
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构& w6 u  `+ q5 q2 `
RECT 定义一个矩形
! N$ d! E( h& N, dWNDCLASS 定义一个窗口类8 ~8 O4 i, c" o% o
一个例子:! B( e3 J! m' t
#include
! V  e  h" B( XLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
5 _7 K. ?; j4 echar szProgName[]="rogName";) w6 P6 E+ i6 `2 I3 y
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
+ j* \0 ~0 K0 j7 @8 L  R//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。* E# X+ M/ U7 W& j
//从WINDOWS向WINMAIN()传递四个参数:
4 R2 O1 z: j- F9 s- M  J7 _//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。4 ^  Z0 m% {7 o8 C3 z" i+ J
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
* a; T) c& S9 C3 L1 F3 n) N//参数3lpCmdline:
$ P  v6 ?1 M2 I6 L//参数4nCmdShow:! O2 t9 Q4 ?% n
{
' w- m& O" P( q' ]3 J" b2 V; q  c7 VHWND hWnd;
! M8 T2 Y, t; b& `" t9 |MSG lpMsg;
% l( B: F7 i7 jWNDCLASS wcApp;
9 k  A5 o: p! F0 K9 C& AwcApp.lpszClassName =szProgName;
; N$ c4 G0 T2 j- d& ^wcApp.hInstance =hInst;4 X) R9 Z: _3 M2 c5 h
wcApp.lpfnWndProc =WndProc;4 ~7 a8 U/ t7 W0 [  P4 _
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
2 F8 i% t- H6 J% ^# NwcApp.hIcon =0;6 O% V9 I* ]/ `; R  X  B
wcApp.lpszMenuName =0;
3 s* A+ `; I. @9 N) Y5 WwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
  `/ M: ]  Z8 @* e- @. M/ r4 uwcApp.style =CS_HREDRAW|CS_VREDRAW;& r( @5 E1 e. ~* G( ~8 [* n
wcApp.cbClsExtra =0;
+ f6 n1 i" G% n3 y+ ?% ?wcApp.cbWndExtra =0;" j& X4 w- Q) n+ t5 O
if (!RegisterClass(&wcApp))
8 v2 L/ `1 p8 e2 L" p- Mreturn 0;) Q9 s$ }; o0 |9 P9 `, `
hWnd=CreateWindow(szProgName,"这是一个例子",+ K, m2 ]: T( T5 R
WS_OVERLAPPEDWINDOW,
* O  I$ g+ ]3 sCW_USEDEFAULT,
$ Z, x; Z- A* M/ S8 I1 i% DCW_USEDEFAULT,
. |' U6 M1 @% P/ wCW_USEDEFAULT,
9 a' \/ C; D6 Q4 v! Y# VCW_USEDEFAULT,1 P8 g- D; d: `+ Z5 {0 K
(HWND)NULL,4 }5 x) `& ]1 v9 H
(HMENU)NULL,% x' R7 y6 h$ O0 Z( K7 {
(HANDLE)hInst,9 o% t, u% [, F6 C+ D
(LPSTR)NULL);. B' v4 y9 P/ F( g$ A
ShowWindow(hWnd,nCmdShow);
  C9 T  ^2 r6 A% DUpdateWindow(hWnd);: m2 z% \1 {0 K/ N# ?7 y& f' q
while (GetMessage(&lpMsg,0,0,0)){
2 b4 }# j. h; a4 k. |# X3 @TranslateMessage(&lpMsg);
) X' {9 H- F- T" n$ M: m! \/ SDispatchMessage(&lpMsg);
5 E0 W) w4 r$ D) [' e. L8 ^4 A. c! g}3 ]" f) n3 n( o4 p6 O; ~8 ^0 [$ v
return (lpMsg.wParam );
9 J% w4 D! H0 i8 x9 U7 [9 \}4 A9 X  \8 J2 v& a0 Z% h2 y- D
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)4 z/ C9 u3 x4 L- v: }( N
{
9 P# N' Q5 n$ P5 E& [6 qHDC hdc;, U# g6 ~; ]& _
PAINTSTRUCT ps;  D+ Y1 {# B1 y8 M! O. q5 a
switch (messg)* P7 `1 R2 z' I' {# N* `! ^0 N! a
{: ]( B4 _" V  N7 M: l
case WM_PAINT:1 L! q' T( F4 T( z+ Q
hdc=BeginPaint(hWnd,&ps);! J* V/ ?' S9 Z+ V) ]. a
MoveToEx(hdc,0,0,NULL);
0 i+ y5 v2 _) e: a# O# g5 l5 hLineTo(hdc,639,429);1 `! [$ M) V* R" l
MoveToEx(hdc,639,0,NULL);7 Z9 @" }( D2 m4 ]: A
LineTo(hdc,0,429);
2 X" ^# w/ J$ a7 A1 q( F( I( fTextOut(hdc,120,30,"一些线",6);
  ]$ v+ [! `8 M% I1 UChord(hdc,450,20,430,80,455,25,425,70);% {5 B$ G3 s, U
TextOut(hdc,470,30,"弧线",4);
4 ?" G. k3 \5 d; V( t8 mPie(hdc,350,50,400,150,300,50,300,100);
5 n- A& e2 g$ @+ T. f% b1 yTextOut(hdc,350,50,"饼图",4);4 B) ^! }& J% e. A$ x1 ~
Ellipse(hdc,100,100,400,400);* M& ]5 `) n! K6 f' z( d0 K
Ellipse(hdc,249,249,251,251);  k+ s( ?8 ~$ u  `; Q* L* \- M
TextOut(hdc,250,250,"圆心",4);
& B" F0 k  c9 \" m: e4 N4 FRectangle(hdc,50,300,150,400);2 L. C' k7 E5 A. z& f& w
ValidateRect(hWnd,NULL);
; x$ Z: a/ D3 M5 x( n+ oEndPaint(hWnd,&ps);
0 G* Q3 R2 k' ^: M& I+ Abreak;
+ d( ~) u- F) }1 d: \case WM_DESTROY:
3 N) |2 G" Z) B, [3 NPostQuitMessage(0);  Z9 t, G+ q' S4 z: d4 ^: E, O
break;0 S- k7 S$ [, F7 M8 P3 j- i: k
default:
& ?" q7 ~% C' k: Y4 lreturn(DefWindowProc(hWnd,messg,wParam,lParam));) G0 i# F, F& y4 z
break;
" t( Q/ C* R. v, M4 P}% n, C) w% z2 A0 Y$ ]8 T& D
return 0;
; J: q+ e/ V1 Q! \}
- L! x  ~6 M, R: U
# d4 u' i/ q; M# x9 q7 @0 q
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-15 10:27 , Processed in 0.017436 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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