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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
: S0 |/ _; {; c- m1 U6 C作者:雷神  6月20日  10:00 2 p6 t( c7 l$ x6 H' S
   CALLBACK 在应用程序的回调例程中取代FAR PASCAL; f$ D, D2 z9 J( f* Y- M
HANDLE 一个32位的无符号整数,用作句柄
" V" c. h5 X" U4 N* wHDC 设备描述句柄9 }/ l6 d' t0 D1 |& v
HWND 一个32位的无符号整数用作窗口句柄- }$ G) B9 F9 l8 W8 }
LONG 一个32位的带符号整数7 c; N+ z  a1 \" D$ {
LPARAM 用于声明lParam的类型$ |4 w0 o8 Y1 h& K% t9 ]1 }
LPCSTR 与LPSTR类似,但用于只读字符串指针
" }# E2 p* E- ?LPSTR 一个32位的指针" U' q& v! N) o6 _
LPVIOD 一个普通指针类型等价于(viod *). B1 A- Z+ w0 w3 G+ L; i3 d
LRESULT 子窗口过程的返回值
/ z5 G6 H; E+ P6 ^" yNULL 一个整型的0值,常常用于激活函数的缺省动作和参数
: F! L, U  ]. J" P5 B& i1 r, E% X7 PUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
- h2 M& A# k$ v( t- Y. T# tWCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。* G" R# B4 p* y  N5 K+ n
WINAPI 在API的定义中取代FAR PASCAL5 l# V: ?- f/ X+ n4 r% m
WPARAM 关于wParam的声明
" H. c! j% U3 Y) M( U9 a: O3 O8 AWin32应用程序中常见的结构
$ s! w" I* \  w+ e结构 描述, _5 v$ [: S6 P' U1 S
-----------------------------------------------2 Q1 O' @6 o. r' Z
MSG 定义了输入消息域$ I  X; E' W1 H5 g# d* h4 F1 J2 C. v
PAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构
8 d# u1 P9 N0 U4 ARECT 定义一个矩形
; F, F" x" y0 N- h+ @! z# fWNDCLASS 定义一个窗口类
$ W/ y3 W8 E% ~& A一个例子:
- u9 m3 l- h  Q#include
( O1 f3 [$ p, \% c% ILRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);) P2 W9 b% m, f$ R3 e) k( ^
char szProgName[]="rogName";
4 s* H+ w/ ^+ S; `- ^; Fint WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)
, l) t$ ^3 G1 L- }//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。' b+ r% K2 m1 q+ j
//从WINDOWS向WINMAIN()传递四个参数:
! [' x0 S5 p( T  F2 d) ]//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。8 ]  X/ \7 A' J& x+ x1 Y% e) K
//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
! k) l7 p" U' G, {0 X! L2 a//参数3lpCmdline:
7 g1 L7 B" O' M" M3 E. i: }, g7 k//参数4nCmdShow:
7 f* y# N  M! j  |* w+ h* x  Q{
2 ?' |3 U+ \2 U, M- @  oHWND hWnd;
$ E: [" A/ ?/ _# q9 kMSG lpMsg;" C! A% x  _+ m) W
WNDCLASS wcApp;
! g8 x1 ^4 n" ewcApp.lpszClassName =szProgName;. W# L/ U2 Q8 B. @3 k2 n" F1 h4 @1 Y
wcApp.hInstance =hInst;
/ x- Q) C$ M$ `$ A2 b+ rwcApp.lpfnWndProc =WndProc;
6 F2 M  u! O; I* O" l! pwcApp.hCursor =LoadCursor(NULL,IDC_ARROW);5 r0 o: p" y+ M  {6 K& A) w
wcApp.hIcon =0;
8 g, u, ]5 p. d% k6 P. \2 q( OwcApp.lpszMenuName =0;
4 |+ E& \4 a/ J3 X; ]0 @# d0 twcApp.hbrBackground =GetStockObject(WHITE_BRUSH);
+ ?& ]  a5 g6 H3 NwcApp.style =CS_HREDRAW|CS_VREDRAW;
% j; u. v+ m/ |9 {wcApp.cbClsExtra =0;
3 G: i' Q0 p- F6 e+ v  EwcApp.cbWndExtra =0;9 A6 X! s& l6 ]4 m7 `9 I
if (!RegisterClass(&wcApp))% |/ s8 g7 {6 n9 F' B, q3 u8 E
return 0;
* F8 P+ ~1 ^/ }hWnd=CreateWindow(szProgName,"这是一个例子",
1 ~9 L" R4 P' e+ O2 z" m* L" zWS_OVERLAPPEDWINDOW,
0 ?( m! c0 J3 v  {  @9 xCW_USEDEFAULT,- V( ?0 \6 \& q) V* w0 g4 T: W
CW_USEDEFAULT,7 M0 @7 f/ w/ i, A% R* Y
CW_USEDEFAULT,
8 S2 @  }+ q- K: Z$ z( {; fCW_USEDEFAULT,
1 y$ {) h9 `. y8 j(HWND)NULL,, R5 D" P# }7 s* P2 z1 O! S+ ]
(HMENU)NULL,1 P6 F  w. w& ]1 Y7 n  z, Z
(HANDLE)hInst,: X# }- _, X7 a) ?
(LPSTR)NULL);/ {) m1 Y+ z5 B# z4 b% T1 W6 g+ e
ShowWindow(hWnd,nCmdShow);. ]' j1 T5 @, K5 T- k( e
UpdateWindow(hWnd);8 I: ^8 h: y: ^) X' V/ o5 f
while (GetMessage(&lpMsg,0,0,0)){
; I4 {, @2 g9 t- x" I  J/ }TranslateMessage(&lpMsg);
4 a3 ]; q' B* |' _# SDispatchMessage(&lpMsg);2 }  v$ S- i7 t. G) b  K+ x
}7 i5 q) W" g* V* x1 t  Z
return (lpMsg.wParam );7 x" N6 O% j, g
}# l$ s3 U7 z* ^3 z5 W
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam), H2 o8 u' o2 x$ X& C' d
{3 A! h+ b, Z- j, L2 r
HDC hdc;
$ z5 S. ~1 ^( K  bPAINTSTRUCT ps;: e1 l6 i& F3 M' [9 H
switch (messg)& P7 W8 N" w0 A
{& o; ~- F2 R8 g! c
case WM_PAINT:
; `3 |( q# m! c6 p+ z, |. shdc=BeginPaint(hWnd,&ps);( d0 N  b% ^$ i; [8 P2 {& Q
MoveToEx(hdc,0,0,NULL);
) J8 g! l4 j- Y6 S) N7 r4 C, BLineTo(hdc,639,429);
4 w$ m3 Y, A' {. F6 N3 gMoveToEx(hdc,639,0,NULL);
6 ~+ c! j1 l# @7 Y! @+ {! _LineTo(hdc,0,429);" t0 _; C5 N8 a  `
TextOut(hdc,120,30,"一些线",6);
( @# D: j' v8 s" K7 m: _1 JChord(hdc,450,20,430,80,455,25,425,70);9 }5 ?; g* d- v* o) k; p, K3 D
TextOut(hdc,470,30,"弧线",4);6 \6 ~8 j% E% `; p$ Y* p) p
Pie(hdc,350,50,400,150,300,50,300,100);8 W* R3 E- Y2 B( [, B3 i* U, j
TextOut(hdc,350,50,"饼图",4);; _1 b2 h. R( o1 N% g  k
Ellipse(hdc,100,100,400,400);
' t$ N$ `6 p( pEllipse(hdc,249,249,251,251);) t9 e- l3 T8 {
TextOut(hdc,250,250,"圆心",4);
) \' N. _5 C* b5 j7 \Rectangle(hdc,50,300,150,400);
" c, m1 S! F5 kValidateRect(hWnd,NULL);, D" I; r0 Y# `1 f
EndPaint(hWnd,&ps);
9 _/ O  K% \8 ~) Cbreak;
9 q0 I; m# j" Xcase WM_DESTROY:
& [  d! D- o% x/ HPostQuitMessage(0);
9 [3 A/ d) u0 n  T' }  u( Gbreak;
, D5 i/ a2 P& E$ P8 F: j6 Zdefault:, V, n+ _6 m4 `7 t
return(DefWindowProc(hWnd,messg,wParam,lParam));
# o& Q% x' R! L" f- tbreak;0 S. b5 ~; Y% ^0 |: P1 M. A6 Q
}# h6 i1 V5 u# j' ^3 k9 e
return 0;
* ^" R' j1 V% z& z} & b5 L6 ?( f* n5 f
7 A$ x: N% A8 E& E
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 11:47 , Processed in 0.018943 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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