设为首页 加入收藏

TOP

视窗和讯息(十五)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17279
Tags:视窗 讯息
一个问题:如果用定义的UNICODE识别字编译了程式,程式将呼叫RegisterClassW。该程式可以在Microsoft Windows NT中执行良好。但如果此程式在Windows 98上执行,RegisterClassW函式并未真地被执行到。函式有一个进入点,但函式呼叫後只传回0,表明错误。对於在Windows 98下执行的Unicode程式来说,这是一个通知使用者有问题并终止执行的好机会。这是本书中多数程式处理RegisterClass函式呼叫的方法:

if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

由於MessageBoxW是可在Windows 98环境下执行的几个Unicode函式之一,所以其执行正常。

当然,这段程式假定RegisterClass不会因为其他原因而呼叫失败,诸如WNDCLASS结构中lpfnWndProc栏位被设定成NULL之类的错误。GetLastError函式会帮助您确定在这样的情况下产生错误的原因。GetLastError是Windows中常用的函式,它可以在函式呼叫失败时获得更多错误资讯。不同函式的文件将指出您是否能够用GetLastError来获得这些资讯。在Windows 98中呼叫RegisterClassW时,GetLastError将传回120。在WINERROR.H中您可以看到,值120与识别字ERROR_CALL_NOT_IMPLEMENTED相等。您也可以在/Platform SDK/Windows Base Services/Debugging and Error Handling/Error Codes/System Errors - Numerical Order查看错误。

一些Windows程式写作者喜欢检查所有可能发生错误的函式呼叫的传回值。这么做确实有点道理,相信您也非常习惯在配置记忆体後检查错误。而许多Windows函式需要配置记忆体。例如,RegisterClass需要配置记忆体,以保存视窗类别的资讯。如此一来,您就应该要检查这个函式的执行结果。另一方面说来,如果由於RegisterClass

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

评论

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