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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
8 U7 z- H1 k4 e  i# D/ K8 d作者:雷神  6月20日  10:00   p7 d" Z& E) Q' p# B4 y8 ~
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL
3 P: G1 j# A' w4 _" @% w1 }HANDLE 一个32位的无符号整数,用作句柄
$ ]  B2 M: S% o: vHDC 设备描述句柄7 N+ V; B1 j, R% n( @* B
HWND 一个32位的无符号整数用作窗口句柄
5 j2 U& D6 N% p) U: h) I# t& eLONG 一个32位的带符号整数
0 A; a, a0 F$ E7 i; R5 pLPARAM 用于声明lParam的类型
; p$ |) V; V% c5 K$ D' ~LPCSTR 与LPSTR类似,但用于只读字符串指针
* z/ B" ?2 n; t' |2 QLPSTR 一个32位的指针5 {  d0 d7 W9 h  F  T0 w: W6 }
LPVIOD 一个普通指针类型等价于(viod *)
7 F9 h* z! W7 _% _$ w: vLRESULT 子窗口过程的返回值4 X0 H, X+ q5 Q, P9 s
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数& Z$ I/ W/ v* k6 }" V
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位1 M! N3 b# {" G/ ?% a5 d" E
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。6 [% P  K6 T4 \3 I  r2 q
WINAPI 在API的定义中取代FAR PASCAL
9 ~5 Z0 @7 ]: d' u( ]( [WPARAM 关于wParam的声明) w' I- Q# n" K; o/ E% v# I# _# [
Win32应用程序中常见的结构
. w/ A6 b3 y' Z2 ~3 y6 o" ?" Y结构 描述
3 C5 A& Y/ s# w  p-----------------------------------------------  D" O* x/ q0 v3 w( x5 ]* O/ y
MSG 定义了输入消息域1 N# U: v. w- I  G: H
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
: H- L% r( h4 |: sRECT 定义一个矩形9 z9 D( m# J6 h4 @1 Y. H; W" |
WNDCLASS 定义一个窗口类
5 R$ n& ?# ?& N" P( A  B- g( I一个例子:1 r% z: [2 b5 T4 h2 T* u8 U( v
#include
" p1 N0 ?4 Q+ o, T; O) zLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  a- `3 p7 S) J/ k* pchar szProgName[]="rogName";6 \# \  `" w  ~% L# E; ]9 D4 N9 v2 U
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
$ j$ d7 O7 B+ t" a' T//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。/ L4 E9 A. {9 p0 o6 e" V1 H! n4 v
//从WINDOWS向WINMAIN()传递四个参数:% I4 h2 O! Q- A0 V0 ]. c3 v$ h, L
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
' W3 u( g$ n) {. \0 [' D//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
. w. Z" o: J9 j+ w1 X5 k' ^//参数3lpCmdline:5 r( ^8 m1 {4 f4 B- u7 E3 X' X
//参数4nCmdShow:5 W$ f& J- N3 X  k4 B- ~) a
{% O1 H8 e3 N5 X( ^1 t* Z
HWND hWnd;
7 U7 O0 z4 r+ y& u9 MMSG lpMsg;- S. X! O  U8 g/ y$ [0 z
WNDCLASS wcApp;
" c7 a0 u$ H, ~. H% f0 nwcApp.lpszClassName =szProgName;
7 g3 h9 {# W% K, L, xwcApp.hInstance =hInst;# U( I5 `5 \* X; B4 ~2 I7 l( b
wcApp.lpfnWndProc =WndProc;
. K" F/ f; s/ w9 v& q5 RwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
6 d+ y8 g4 m/ e. [! q% ZwcApp.hIcon =0;
' R4 {" ]9 S" z* d& uwcApp.lpszMenuName =0;
+ p: R5 z* P, P: E2 ]& D% GwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
5 l+ h% u6 {; A3 _$ e+ S+ e4 [wcApp.style =CS_HREDRAW|CS_VREDRAW;
% n9 W4 R* g/ I4 R; U$ X+ p' [wcApp.cbClsExtra =0;- U8 \: O) i8 z- U
wcApp.cbWndExtra =0;
8 ~- `4 ~/ x5 n: ~# g5 o/ Dif (!RegisterClass(&wcApp))' ?3 a+ c" F( ^8 u% B) ]3 G; w
return 0;5 o# q" b: A1 [7 @/ E4 @
hWnd=CreateWindow(szProgName,"这是一个例子",
. {% o7 g0 Z1 `3 gWS_OVERLAPPEDWINDOW,
+ d' ]  i- h' \( T' s1 I6 O' tCW_USEDEFAULT,) T( \9 T6 \3 `7 I
CW_USEDEFAULT,2 ^0 [( J6 n4 p% ?6 N
CW_USEDEFAULT,
  G; {0 R2 }) b, }2 h& NCW_USEDEFAULT,
3 E9 ~" m! Q/ d: L, w(HWND)NULL,
. C- F: Y9 l* ]: g; ^  z2 l(HMENU)NULL,# B" B& x6 e6 Q/ V. B# Q  q; d
(HANDLE)hInst,$ I+ V1 V3 b3 q8 N
(LPSTR)NULL);2 ^7 n+ R3 M( y3 p% k7 s# [
ShowWindow(hWnd,nCmdShow);+ o0 h- Q* F+ q0 [) d
UpdateWindow(hWnd);# \4 F5 G- A- u) Z/ ~0 b3 g
while (GetMessage(&lpMsg,0,0,0)){$ L( c0 n9 r6 ^+ G2 @" w) ?' o+ s0 b
TranslateMessage(&lpMsg);9 A/ A" d' `3 K% D2 T/ k9 W$ _
DispatchMessage(&lpMsg);+ y2 R! d) ^* ?! O: ?
}
: I% m0 M3 r5 V3 y8 z+ v" Ireturn (lpMsg.wParam );
4 C) i! ]% L9 f& z& o}  n1 Z. z- O. j; X5 Q, L8 A" |
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
: c* Y, z/ {, E# H2 [/ h( l9 r{
7 }/ U6 T' @# W: O: j1 QHDC hdc;
# L; q* m3 i5 L9 ?* s6 R. e" bPAINTSTRUCT ps;
) l; d4 X8 K: |) Wswitch (messg)
; f: t  i4 H; J9 {$ j& a3 W9 M+ X{
) A8 W/ i  K. O6 z: t4 y1 fcase WM_PAINT:
2 d5 b' u! j- ]# ]3 ?$ H# Hhdc=BeginPaint(hWnd,&ps);
: z! C' Z+ d# V6 u8 s8 iMoveToEx(hdc,0,0,NULL);8 Z! B; L) F, B) O. u
LineTo(hdc,639,429);2 W' ?8 t! Z/ q' R/ n2 v6 g
MoveToEx(hdc,639,0,NULL);; f0 T) z, J, s, e, J# {
LineTo(hdc,0,429);' r4 R8 D3 q0 C) e6 [- V. L6 `; R
TextOut(hdc,120,30,"一些线",6);
" i$ }# `! r9 ?) @Chord(hdc,450,20,430,80,455,25,425,70);
( l5 o# D; K: D! [TextOut(hdc,470,30,"弧线",4);
/ k6 K4 n  m. a' U- e9 KPie(hdc,350,50,400,150,300,50,300,100);. g$ p$ f& l( h1 n+ a  k
TextOut(hdc,350,50,"饼图",4);
9 p% A/ R6 h9 O3 ~! t" gEllipse(hdc,100,100,400,400);! `  M, _" `0 B+ S3 A. R3 H+ ^
Ellipse(hdc,249,249,251,251);
, a7 {# ^8 W6 \3 K/ j0 L5 tTextOut(hdc,250,250,"圆心",4);2 G8 f$ R1 d5 w$ B
Rectangle(hdc,50,300,150,400);0 j' _4 F# [+ C* c- a5 F( @& n
ValidateRect(hWnd,NULL);+ a& O$ X- z: P
EndPaint(hWnd,&ps);
! H4 F( B2 ~: g) g) F1 ]4 Ibreak;
4 Z- \+ K) M2 O7 s4 @7 Y$ w( X* p! hcase WM_DESTROY:
. Y6 h/ q# q: q  ?2 L3 _PostQuitMessage(0);! i, ~( v) n5 L$ _
break;
1 W* D  a. {7 P* I# d) ddefault:
+ Y  P2 Y6 J2 s9 Areturn(DefWindowProc(hWnd,messg,wParam,lParam));
4 Q0 |+ S0 A4 F' h5 U6 P( obreak;; }" V" v. t/ \& M9 P' l# I
}- e8 k' y! x& A  _; F/ Q
return 0;
7 b1 t) Y) D  [5 m+ Z- N0 e) G}
0 h* w5 m4 ~( R: x$ Z- m7 ? % u- b" D$ q7 D* ^
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-15 06:15 , Processed in 0.018277 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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