用MASM32寫了一個小程序F,程序在運行時會調用MessageBox()彈出一系列對話框。這個程序在Windows 7,10下運行正常,但在Win XP下運行時只能聽到對話框彈出的聲音,對話框卻沒顯示,這種只聞其聲不見其形的故障以前也從未遇到過,程序運行時無聲無形的情況倒是遇到過幾次,但都是出現在使用自定義窗口的程序上,其原因是資源文件中的自定義窗口信息ID與程序中調用ID值不一致,從而導致窗口沒能創建出來。
小程序雖然沒有使用自定義窗口,但仍然使用了資源文件rsrc.rc,定義了文件版本信息等內容,難道又是資源文件作怪?
把資源文件rsrc.res刪除,重新編譯連接再運行,對話框應聲而出。果然又是資源文件作怪。
檢查資源文件rsrc.rc,找到了問題的根源:
1 VERSIONINFOFILEVERSION 0, 0, 0, 1PRODUCTVERSION 0, 0, 0, 1FILEFLAGSMASK VS_FFI_FILEFLAGSMASKFILEOS VOS__WINDOWS32FILETYPE VFT_APP{ BLOCK "StringFileInfo" { BLOCK "080404b0" { VALUE "CompanyName", "PurpleEndurer | 紫郢劍俠㊣ /000" } } BLOCK "VarFileInfo" { VALUE "Translation", 2052, 1200 }}1 24 DISCARDABLE "XPStyle.xml"VERSIONINFO和XPStyle.xml的ID重復了,而在Windows xp中,XPStyle.xml規定了程序界面顯示,所以引發了這個奇怪的故障。
把XPStyle.xml的ID改成另外一個值就行了。
新聞熱點
疑難解答