天天加油 - 助您成才
Win32编程基础知识
您正在看的经验技巧是:Win32编程基础知识。
串的指针。如在Win95的“开始”菜单中单击“运行”,输入“easywin hello”,则此参数指向的字符串为“hello”。

最后一个参数是nCmdShow,是一个用来指定窗口显示方式的整数。这个整数值可以是SW_SHOW、SW_HIDE、SW_SHOWMAXIMIZED、SW_SHOWMINIMIZED等,关于这些值的含义,将在下一节说明。

注册窗口类

一个应用程序可以有许多窗口,但只有一个是主窗口,它是与该应用程序的实例句柄唯一关联的。上面的例程中,创建主窗口的函数是InitWindow()。

通常要对填充一个窗口类结构WNDCLASS,然后调用RegisterClass()对该窗口类进行注册。每个窗口都有一些基本的属性,如窗口边框、窗口标题栏文字、窗口大小和位置、鼠标、背景色、处理窗口消息函数的名称等等。注册的过程也就是将这些属性告诉系统,然后再调用CreateWindow()函数创建出窗口。这也就象你去裁缝店订做一件衣服,先要告诉店老板你的身材尺寸、布料颜色、以及你想要的款式,然后他才能为你做出一件让你满意的衣服。

在VC的帮助中,可以看到WNDCLASS结构是这样定义的:

typedef struct _WNDCLASS {

UINT style; //窗口的风格*

WNDPROC lpfnWndProc; //指定窗口的消息处理函数的远指针*

int cbClsExtra; //指定分配给窗口类结构之后的额外字节数*

int cbWndExtra; //指定分配给窗口实例之后的额外字节数

HANDLE hInstance; //指定窗口过程所对应的实例句柄*

HICON hIcon; //指定窗口的图标

HCURSOR hCursor; //指定窗口的鼠标

HBRUSH hbrBackground; //指定窗口的背景画刷

LPCTSTR lpszMenuName; //窗口的菜单资源名称

LPCTSTR lpszClassName; //该窗口类的名称*

} WNDCLASS;

在Win95和WinNT的具有新界面特性的系统中,为了支持新的窗口界面特性,还有一种扩展的窗口类型WNDCLASSEX,它的定义如下:

typedef struct _WNDCLASSEX {

UINT cbSize; //指定WNDCLASSEX结构的大小

UINT style;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

HICON hIconSm; //窗口的小图标

} WNDCLASSEX;

WNDCLASS和WNDCLASSEX这两个结构基本上是一致的,只是WNDCLASSEX结构中多了cbSize和hIconSm这两个成员。WNDCLASS结构的各成员中,其注释后打了星号的表示该项应特别注意。

WNDCLASS结构的第一个成员style表示窗口类的风格,它往往是由一些基本的风格通过位的“或”操作(操作符位“|”)组合而成。下表列出了一些常用的基本窗口风格:

风格 含义 CS_HREDRAW 如果窗口客户区宽度发生改变,重绘整个窗口 CS_VREDRAW 如果窗口客户区高度发生改变,重绘整个窗口 CS_DBLCLKS 能感受用户在窗口中的双击消息 CS_NOCLOSE 禁用系统菜单中的“关闭”命令 CS_OWNDC 为该窗口类的各窗口分配各自独立的设备环境 CS_CLASSDC 为该窗口类的各窗口分配一个共享的设备环境 CS_PARENTDC 指定子窗口继承其父窗口的设备环境 CS_SAVEBITS 把被窗口遮掩的屏幕图象部分作为位图保存起来。当该窗口被移动时,Windows使用被保存的位图来重建屏幕图象

在EasyWin应用程序中,是按如下方式对WNDCLASS结构进行填充和注册的:

wc.style = CS_VREDRAW | CS_HREDRAW;

wc.lpfnWndProc = (WNDPROC)WinProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );

wc.hCursor = LoadCursor( NULL, IDC_ARROW );

wc.hbrBackground = GetStockObject(WHITE_BRUSH);

wc.lpszMenuName = NULL;

wc.lpszClassName = "EasyWin";

可以看到,wc.style被设为CS_VREDRAW | CS_HREDRAW,表示只要窗口的高度或宽度发生变化,都会重画整个窗口。

第二个成员lpfnWndProc的值为(WNDPROC)WinProc。表明该窗口类的消息处理函数是WinProc()函数。这里,要指定窗口的消息处理函数的远指针,输入消息处理函数的函数名称即可,必要时应该进行强制类型转换,将其转换成WNDPROC型。

接下来的cbClsExtra和wc.cbWndExtra在大多数情况下都会设为0。

然后的hInstance成员,给它的值是由WinMain()传来的应用程序的实例句柄,表明该窗口与该实例是相关联的。事实上,只要是注册窗口类,该成员的值始终是该程序的实例句柄,你应该象背书一样记住它。

下面的hIcon,是让你给这个窗口指定一个图标,调用 LoadIcon( hInstance, IDI_APPLICATION ),可以调用系统内部预先定义好的标志符为IDC_APPLICATION的图标作为该窗口的图标。

同样,调用LoadCursor( NULL, IDC_ARROW )为该窗口调用系统内部预先定义好的箭头型鼠标。

hbrBackground成员用来定义窗口的背景画刷颜色,也就是该窗口的背景色。调用GetStockObject(WHITE_BRUSH)可以获得系统内部预先定义好的白色画刷作为窗口的背景色

上一页  1 2 3 4 5 6 下一页

排行

  1. Windows Vista SP1截图曝光
  2. Windows Vista:透视未来桌面远景
  3. 不同:Windows Vista的关机组合快
  4. 如何恢复Windows Vista/XP双启动
  5. Vista系列技巧:Vista侧边栏安装
  6. Vista解惑之防火墙10个注意事项
  7. 官方谈Vista OEM盗版激活 承认破
  8. 仅需三分钟 便可轻松破解Vista登
  9. 浅述单核CPU跑Vista 占用率高的原
  10. Vista Areo界面全攻略
  11. 从1.01到Vista Windows启动画面图
  12. 新手不用慌:Vista官方驱动程序大
  13. 切勿病急乱投医Vista疑难杂症诊解
  14. 再谈WindowVista如何调整硬盘分区
  15. 找回WindowsVista系统自带的游戏
  16. 低配置电脑安装WindowsVista后优
  1. Winodws下Apache+PHP+MySQL的安装
  2. 快照 RegSnap
  3. HKEY_USER 根键(一)
  4. 20:8!超宽屏Vista截图抢鲜
  5. Vista服务优化攻略
  6. Windows Vista:透视未来桌面远景
  7. 不同:Windows Vista的关机组合快
  8. 如何恢复Windows Vista/XP双启动
  9. 用Vista工具箱手动优化WindowsVi
  10. Vista系列技巧:Vista下输入法的
  11. Vista系列技巧:Vista侧边栏安装
  12. 在Vista的多重启动中设置默认系统
  13. 高效管理时间 用好Vista系统日历
  14. Vista解惑之防火墙10个注意事项
  15. 官方谈Vista OEM盗版激活 承认破
  16. 轻松玩Vista!常用FTP工具兼容测
  1. Winodws下Apache+PHP+MySQL的安装
  2. 20:8!超宽屏Vista截图抢鲜
  3. Vista服务优化攻略
  4. 妙用Windows9x的Desktop.ini文件
  5. Windows Vista:透视未来桌面远景
  6. 不同:Windows Vista的关机组合快
  7. 如何恢复Windows Vista/XP双启动
  8. Vista系列技巧:常遇系统故障解决
  9. Vista系列技巧:Vista侧边栏安装
  10. Vista解惑之防火墙10个注意事项
  11. 官方谈Vista OEM盗版激活 承认破
  12. 仅需三分钟 便可轻松破解Vista登
  13. 浅述单核CPU跑Vista 占用率高的原
  14. Vista Areo界面全攻略
  15. 从1.01到Vista Windows启动画面图
  16. 新手不用慌:Vista官方驱动程序大

最近更新

  • 推荐阅读
  • 经验技巧《Win32编程基础知识》Win32编程基础知识
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM