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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
3 ?% P2 D# |9 r3 F% `* O8 _8 |作者:雷神  6月20日  10:00
3 q. A* j( ?9 r1 ^3 c' @   CALLBACK 在应用程序的回调例程中取代FAR PASCAL, N$ u" G3 i8 G2 N- _
HANDLE 一个32位的无符号整数,用作句柄
8 l3 k& f9 D6 c6 KHDC 设备描述句柄& U1 H1 V# I. k! T' p4 Q
HWND 一个32位的无符号整数用作窗口句柄0 L4 r1 R" f3 R: q4 S7 D- m+ j) J; I+ F/ ^
LONG 一个32位的带符号整数; i8 r* b% o" V5 U
LPARAM 用于声明lParam的类型
& v  _: C1 d# {7 l5 k9 }LPCSTR 与LPSTR类似,但用于只读字符串指针
1 s- |" w; V  m6 @LPSTR 一个32位的指针' v* N6 S! s( c$ h. e, j
LPVIOD 一个普通指针类型等价于(viod *)
; O6 [, |% i2 A1 |LRESULT 子窗口过程的返回值% k) ]/ U3 y1 L
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数5 s4 {" Y# I+ H, a8 {+ m
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位; I8 r8 n% X; c# |2 A7 ^. d
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
9 }  T5 t% e- f8 ~, P, y; L9 OWINAPI 在API的定义中取代FAR PASCAL; y* h& S" i$ l
WPARAM 关于wParam的声明
  \' I$ e5 P3 {- JWin32应用程序中常见的结构
. m2 S& ?& A8 {! ^结构 描述3 p- h$ U8 }8 }7 j% A: W9 j! F
-----------------------------------------------
9 e' f2 v0 {0 g& E, AMSG 定义了输入消息域
0 G+ k# d/ H+ b7 h" t% ~PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
! F3 F8 V& Y' {; B; ]( ~/ zRECT 定义一个矩形2 J% s! G/ Y7 Z7 l. D$ l0 c
WNDCLASS 定义一个窗口类
) x2 p; b4 q5 ?4 q一个例子:
2 V( \8 N7 B" Q: z#include" G& Y# m- b/ T$ c5 C3 m! V
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
; g7 `; B6 k9 `) cchar szProgName[]="rogName";6 @0 s- J8 b. y' B" N: U
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)1 R5 t3 ?1 o3 P& ^$ F; u
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
1 x4 I! |$ R) p# s( I/ |//从WINDOWS向WINMAIN()传递四个参数:8 \3 w. q* B/ Y, d+ l$ |: I9 A
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。  M3 E. t5 q) ?. c+ h1 Y, e
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。% m3 m3 c( T7 N0 p9 p9 R4 I
//参数3lpCmdline:% Y! O( o* i* h# Y& S: ]0 l( S+ `
//参数4nCmdShow:* O. K( h( K, u7 F1 X) F' L& U; x
{8 f8 m( G  {, a: ]$ j* P9 Z
HWND hWnd;) k  q9 Y& {) Z- S  r" }1 Q
MSG lpMsg;) h5 s; F! \& n! {0 }7 K7 ]
WNDCLASS wcApp;& E4 b3 b7 V& e5 {! O5 b+ B& f
wcApp.lpszClassName =szProgName;
- d( g1 j' n$ f# \5 S  J# {wcApp.hInstance =hInst;
+ u, m' T! G# P3 F) d& {3 B2 BwcApp.lpfnWndProc =WndProc;
, v( n$ U. V% _( w; H3 Q+ DwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);6 W6 ?# l/ Y4 e3 B7 a
wcApp.hIcon =0;
* P; d* [  `5 v2 i+ q2 f1 ^wcApp.lpszMenuName =0;
  ^, c$ v$ ?8 c* v* |& j3 rwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
! Z6 c( D$ [* |- JwcApp.style =CS_HREDRAW|CS_VREDRAW;
7 {$ H* T# k; [* ywcApp.cbClsExtra =0;  O) G2 W* ^- p* N5 v& u# B7 u
wcApp.cbWndExtra =0;& b6 _+ N# g' k. J9 w
if (!RegisterClass(&wcApp))8 p$ ]' T  I( B1 g# w! m- A
return 0;: t0 D! c/ V8 u
hWnd=CreateWindow(szProgName,"这是一个例子",
( v* @" n( D/ ~/ LWS_OVERLAPPEDWINDOW,1 [0 h. N2 l+ w. m0 W5 N+ B
CW_USEDEFAULT,
  P7 o! v3 F$ {' |* p2 HCW_USEDEFAULT,1 A: S$ i% l: T) E9 S
CW_USEDEFAULT,
0 m8 j7 q, O! {6 P$ W0 o* t; dCW_USEDEFAULT,
/ w& V+ \4 r2 B' k0 M3 a3 O+ o) Z9 Z(HWND)NULL,
! O& L0 n' _4 M; j2 w8 |0 _(HMENU)NULL,' I, z) R$ M7 q% m
(HANDLE)hInst,
: c% o* U! G9 z1 C(LPSTR)NULL);
) ]; n5 h6 \' Q$ V, u, ~$ JShowWindow(hWnd,nCmdShow);
( |: F# q8 `) Z$ e- EUpdateWindow(hWnd);
+ Y6 s% |$ Q( C6 X" d; x7 h0 I% G, Twhile (GetMessage(&lpMsg,0,0,0)){$ z) ~/ t0 P5 T. M$ t1 |
TranslateMessage(&lpMsg);
/ f% {1 F& R' A9 g4 rDispatchMessage(&lpMsg);
6 W+ `' ?+ U  T$ _9 O}! I6 C4 K( `7 V8 M2 a' b' @. \
return (lpMsg.wParam );: |8 t+ N4 d; g. r
}
5 E6 ^# g+ o+ E8 t, h6 PLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)
. ^) \) O$ ?$ D. r# {% [0 B{
6 c# Q# a. F2 }  h6 c2 OHDC hdc;
' T" v! p6 ?# Q/ x( H8 ePAINTSTRUCT ps;
8 i$ T$ e7 n9 X7 s( D  w' N6 iswitch (messg)
2 G. K) q& n: W, @3 j) I8 p{! @) t1 U9 x8 N+ }& S! g
case WM_PAINT:
/ a1 _$ T* G2 V) d- p$ D0 _hdc=BeginPaint(hWnd,&ps);$ p9 n0 v0 V1 V5 E
MoveToEx(hdc,0,0,NULL);
8 _# c& |- s: m4 O0 r3 D+ KLineTo(hdc,639,429);) x. w8 B0 C( ~% p" Q9 D' v& q
MoveToEx(hdc,639,0,NULL);
% F& R2 A. x: D+ RLineTo(hdc,0,429);) q. @: ]7 r3 B( a
TextOut(hdc,120,30,"一些线",6);* r9 y* d! @) Q( r3 o5 s, D' Q
Chord(hdc,450,20,430,80,455,25,425,70);
' d) |# C9 L* {$ sTextOut(hdc,470,30,"弧线",4);* O& t8 N5 c% t! u* F
Pie(hdc,350,50,400,150,300,50,300,100);
$ P+ S  f5 s$ F/ K7 E1 i+ cTextOut(hdc,350,50,"饼图",4);: }! p, z. A3 y0 C" T6 B6 i: Q
Ellipse(hdc,100,100,400,400);" `1 p8 U3 ^( \; q3 Q
Ellipse(hdc,249,249,251,251);% e; g- t9 `) y5 N7 C8 v" w0 V
TextOut(hdc,250,250,"圆心",4);+ O* ~9 x* Z" L/ l- D1 J0 s
Rectangle(hdc,50,300,150,400);
% v. {* @2 ?) [; v5 XValidateRect(hWnd,NULL);1 |4 \6 ]0 [- x5 V5 u2 i8 u
EndPaint(hWnd,&ps);" G9 q: ^7 G% g/ O
break;$ M3 f2 R. L  \
case WM_DESTROY:
8 Y$ r) k$ A/ F/ J2 ]+ c* CPostQuitMessage(0);
9 J9 G) q8 Q1 d. p1 Bbreak;
. B) c( K( ]/ Ndefault:: o; e, `: }% k- R
return(DefWindowProc(hWnd,messg,wParam,lParam));
" i0 s1 e5 Y8 F' I: Tbreak;
# w( j( m3 l* Z' b3 [; Z/ |}& \( l) V# N1 z2 {# p
return 0;
& G% o( a: d1 B! @4 A, t; X}
/ q1 ?6 Z6 w* I- Z( r6 r
9 e" H8 t* p& ?& z
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 10:21 , Processed in 0.018380 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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