programming windows上说,由于unicode问题,在NT下编译的程序,在98下不能运行,可是我能运行呀。我加上了#define UNICODE,在win2003 + vc.net和dev-cpp上编译后,都能在98下执行,为什么呢???
programming windows 3.1.4, 中文版 p50页最後,必须给出一个类别名称。对於小程式,类别名称可以与程式名相同,即存放在szAppName变数中的「HelloWin」字串。wndclass.lpszClassName = szAppName ;
至於该字串由ASCII字元组成或由Unicode字元组成,取决於是否定义了UNICODE识别字。在初始化该结构的10个栏位後,HELLOWIN呼叫RegisterClass来注册这个视窗类别。该函式只有一个参数,即指向WNDCLASS结构的指标。实际上,RegisterClassA函式将获得一个指向WNDCLASSA结构的指标,而RegisterClassW函式将获得一个指向WNDCLASSW结构的指标。程式要使用哪个函式来注册视窗类别,取决於发送给视窗的讯息包含ASCII文字还是Unicode文字。现在有一个问题:如果用定义的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函式之一,所以其执行正常。