首页 > 学院 > 开发设计 > 正文

MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障

2019-11-06 06:23:04
字体:
来源:转载
供稿:网友

  用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改成另外一个值就行了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表