设为首页 加入收藏

TOP

视窗和讯息(十六)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17278
Tags:视窗 讯息
不能得到所需要的记忆体,它会宣告呼叫失败,而Windows大概也快当掉了。

在本书的范例程式中,我做了最少的错误检查。这不是因为我认为错误检查不是一个好方法,而是因为这会让我们在程式举例中分心。

最後,一个老经验是:在一些Windows范例程式中,您可能在WinMain中看到以下程式码:

if (!hPrevInstance)
{
wndclass.cbStyle = CS_HREDRAW | CS_VREDRAW ;

初始化其他 wndclass

RegisterClass (&wndclass) ;
}

这是出於「旧习难改」的原因。在16位元的Windows中,如果您启动正在执行的程式的一个新执行实体,WinMain的hPrevInstance参数将是前一个执行实体的执行实体代号。为节省记忆体,两个或多个执行实体就可能会共用相同的视窗类别。这样,视窗类别就只在hPrevInstance是NULL的时候才注册,这表明程式没有其他执行实体。

在32位元的Windows中,hPrevInstance总是NULL。此程式码会正常执行,而实际上也没必要检查hPrevInstance。

建立视窗
 

视窗类别定义了视窗的一般特徵,因此可以使用同一视窗类别建立许多不同的视窗。实际呼叫CreateWindow建立视窗时,可能指定有关视窗的更详细的资讯。

Windows程式设计新手有时会混淆视窗类别和视窗之间的区别,以及为什么一个视窗的所有特徵不能被一次设定好。实际上,以这种方式分开这些样式资讯是非常方便的。例如,所有的按钮视窗都可以依据同样的视窗类别来建立,与这个视窗类别相关的视窗讯息处理程式位於Windows内部。由视窗类别来负责处理按钮的键盘和滑鼠输入,并定义按钮在萤幕上的外观形象。从这一点看来,所有的按钮都是以同样的方式工作的。但是并非所有的按钮都是一样的。它们可以有不同的大小,不同的萤幕位置,以及不同的字串。後面的这样一些特徵是视窗定义的一部分,而不是视窗类别定义的。

传递给RegisterClass函式的资讯会在一个资料结构中设定好,而传递给CreateWindow函式的资讯会在函式单独的参数中设定好。下面是HELLOWIN.C中的CreateWindows呼叫,每一个栏位都做了完整的说明:

hwnd = CreateWindow (szAppName, // windo
首页 上一页 13 14 15 16 17 18 19 下一页 尾页 16/29/29
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出文字 下一篇Unicode简介

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: