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

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

[复制链接]
发表于 2002-8-4 10:13:55 | 显示全部楼层 |阅读模式
windows编程通用的Win32类型和常见的结构
# C% k. A3 w2 V作者:雷神  6月20日  10:00
$ _3 }% w$ @. u. t; o+ y" A   CALLBACK 在应用程序的回调例程中取代FAR PASCAL# D, Q5 x2 H* S8 P$ Z( X; l4 x6 C
HANDLE 一个32位的无符号整数,用作句柄
1 u3 B+ c% U/ j5 FHDC 设备描述句柄
2 ], u% K0 T: b# n3 w5 S0 kHWND 一个32位的无符号整数用作窗口句柄
# s! \+ K' m" |3 n: V* JLONG 一个32位的带符号整数
5 p9 [/ t! l; Y2 p) A3 H+ G! kLPARAM 用于声明lParam的类型
; Z( ^  P" x! a0 aLPCSTR 与LPSTR类似,但用于只读字符串指针
6 X' Q$ ^# c6 }4 p9 KLPSTR 一个32位的指针
- x; {: u$ ^5 ^2 m$ h% nLPVIOD 一个普通指针类型等价于(viod *)& k% _: A/ B( g) S( G! `
LRESULT 子窗口过程的返回值5 M. [0 j- _$ A) J: U0 S
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数
7 m! F7 S4 `8 OUINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
6 R( H- V5 H4 S) C) g2 L3 T" RWCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
2 n& Z6 {1 x. q- J6 NWINAPI 在API的定义中取代FAR PASCAL- X$ V  u# {2 J! J
WPARAM 关于wParam的声明
, l, r0 e( p& c3 f% k2 {' T5 H# mWin32应用程序中常见的结构2 H3 h; ]; \% q! h% o: |; k, f! ~, T. n
结构 描述$ ~9 p2 J6 h& k$ B7 w7 S" L
-----------------------------------------------
. F5 d& g# V  CMSG 定义了输入消息域
0 i; N+ O; ?$ oPAINTSTRUCT 定义了在窗口内绘图时使用的绘图结构! H; l+ P) I1 o3 X8 I
RECT 定义一个矩形
$ E3 M" z7 q) m( i9 ^. g: UWNDCLASS 定义一个窗口类
5 u8 Y, _6 s; [- A5 G/ j2 L一个例子:
' t( h/ u" s! G6 j3 ~#include9 H# y, Y9 T7 k0 }* t/ Z
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  ~6 Z4 B6 {$ s- g2 d9 Uchar szProgName[]="rogName";4 X$ [& Y. i# O0 ^3 C' I1 z. p
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdline,int nCmdShow)# x1 t0 Z! m! v/ `) h5 J# Y
//Winmain()是应用程序开始和结束的地方。主要负责注册应用程序的窗口类型;执行必须的初始化过程;创建并初始化应用程序的消息循环(用以接收程序的消息队列);结束程序,通常是在接受了WM_QUIT消息时。
2 j6 L9 X4 Q2 O" \//从WINDOWS向WINMAIN()传递四个参数:! O! G  Q. u7 B0 d1 k5 C
//参数1hInst:是实例句柄,当应用程序在WINDOWS下运行时,这个数字标识了应用程序。
! k& s, f; L. p; A6 `9 z//参数2hPrevInst:将始终是一个NULL值,表示没有这个应用程序的其他实例在运行。
4 B/ n: u, Y( h4 x//参数3lpCmdline:
4 v4 {' N. x% N* L" Q+ |' ~$ N4 J# W//参数4nCmdShow:
8 J% Q" X, O9 C9 ~; F{- I8 X" @* c! S- s
HWND hWnd;2 S5 v" F2 w. R! V$ e
MSG lpMsg;& W3 E7 I3 U% [4 a% @  T* H) O2 r
WNDCLASS wcApp;  _9 }- I: V/ J  |/ L0 F" W
wcApp.lpszClassName =szProgName;
+ ]! J2 R; j! l* T; a: F: {5 NwcApp.hInstance =hInst;! i& r% D) I: g: w8 Z6 B
wcApp.lpfnWndProc =WndProc;
4 d' R  ^$ }% s* H- W; o, _& E& O9 `wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
5 O* l3 l$ o! y  J6 E+ F  c+ V: gwcApp.hIcon =0;! d" ^; e$ M3 ^/ _1 a4 [
wcApp.lpszMenuName =0;
" t, w( c0 ]$ @: Z: w9 iwcApp.hbrBackground =GetStockObject(WHITE_BRUSH);) G. L6 x$ R/ l9 n5 ]/ [9 i' k9 |
wcApp.style =CS_HREDRAW|CS_VREDRAW;
3 H7 c" M* ^- V& U, F6 r7 {# c. XwcApp.cbClsExtra =0;
4 r8 m4 o7 {6 k, ?% hwcApp.cbWndExtra =0;
  [% S# V" f1 oif (!RegisterClass(&wcApp))) ^6 a/ S9 z! d- Y# `2 K
return 0;; e- h6 S$ d+ W. K, N/ a
hWnd=CreateWindow(szProgName,"这是一个例子",
" w: D# a0 p" [5 i" j0 B+ ZWS_OVERLAPPEDWINDOW,2 C2 }8 W, F/ Y" O. D! Y
CW_USEDEFAULT,+ g! H) R% E) g. H/ R# I
CW_USEDEFAULT,' d' A. M% j0 Q+ [8 h2 u6 w0 n9 H
CW_USEDEFAULT,
! G- C- p- F5 ~9 y9 |$ v6 i- nCW_USEDEFAULT,
# L$ l2 m7 B0 p0 ^& D(HWND)NULL," ^0 R0 e& y( g
(HMENU)NULL,  \7 t+ A+ l8 P  _/ z
(HANDLE)hInst,0 R" m, b; |% d' O( X6 g  w  T
(LPSTR)NULL);
/ |4 D9 B5 ]2 A/ E- h# rShowWindow(hWnd,nCmdShow);
" {, S) e+ u; ^- KUpdateWindow(hWnd);+ h2 q, F" U7 e/ A9 \, x# R6 {
while (GetMessage(&lpMsg,0,0,0)){% }8 E+ c7 D' T2 y7 \# f
TranslateMessage(&lpMsg);
( ^) l* d$ A+ Q  c8 iDispatchMessage(&lpMsg);
7 ]& x# v& E- X4 R}
1 r' J% _# `" [2 |/ oreturn (lpMsg.wParam );( L+ U* _$ I4 `  f& `; z6 s; U
}
- _6 n+ X: r0 z* KLRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)1 ~" U" ]& Z* m$ a$ d4 Y. C
{3 y$ u% T7 t( ^2 l* S
HDC hdc;
8 q3 q& r" H/ [+ d* u% rPAINTSTRUCT ps;3 D1 `5 d6 T$ r& C. q$ t/ G0 t* P" x
switch (messg)* v  ]* t; f3 D; a& m
{- k/ @1 }5 L' ^0 E
case WM_PAINT:
* n8 a: p8 A/ O8 xhdc=BeginPaint(hWnd,&ps);
; n( s& Y1 T7 X0 [MoveToEx(hdc,0,0,NULL);
- D. ]1 R) i# O9 Q- ~, qLineTo(hdc,639,429);
( j9 U2 H+ u0 q9 hMoveToEx(hdc,639,0,NULL);
4 a6 [) H+ H5 a1 G' C/ ILineTo(hdc,0,429);
  O) I& c1 u7 p+ \TextOut(hdc,120,30,"一些线",6);0 y# g3 F& y4 n8 d) u
Chord(hdc,450,20,430,80,455,25,425,70);7 d& \1 ^1 z- m! Y
TextOut(hdc,470,30,"弧线",4);
( \6 q% K& C. O6 l% UPie(hdc,350,50,400,150,300,50,300,100);
! l2 C6 E# y9 }8 P. T9 tTextOut(hdc,350,50,"饼图",4);
  U; q5 X7 U5 i# A9 j1 BEllipse(hdc,100,100,400,400);0 _* |& P3 B# I7 _+ s
Ellipse(hdc,249,249,251,251);
8 e! ^8 {* T1 O: L1 C$ t) M- l; pTextOut(hdc,250,250,"圆心",4);0 `" b- h% n3 r9 @
Rectangle(hdc,50,300,150,400);/ Z/ E2 t) f. u- u1 w7 B
ValidateRect(hWnd,NULL);
5 H0 d% \8 L& f1 y+ J: W% t, yEndPaint(hWnd,&ps);
' i! I4 x  p; G" v# ^" h; Wbreak;
+ Z: j: K  k4 y/ K4 Ccase WM_DESTROY:
* a7 B: s2 k( qPostQuitMessage(0);
/ ^# R3 z; ~% _5 j- x/ pbreak;
8 }' ~5 A: p3 @, idefault:
8 q" z! c( Z5 y0 oreturn(DefWindowProc(hWnd,messg,wParam,lParam));
2 F- p1 \* o/ Y  M! _break;
9 n% R/ d$ r: }$ r}
0 Z* C9 ?. H  n* Yreturn 0;
" c) |( Z/ U2 R: @5 p4 {}
" E# d! y. G/ R1 s2 ]
6 h# H  \) r2 L& ~; ]3 ]
蒙面人  发表于 2002-9-4 09:48:32
NO GOOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-9 01:38 , Processed in 0.033816 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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