对话框开不开

写了个心绮楼改名工具,其实就是给你转个内码改个文件名的东西,期间用到了开启对话框显示图形界面的API函数DialogBox。但是似乎在某个用户的系统里,对话框连开都开不起来。这里面有什么学问实在不知。本来是想用GetLastError让该用户协助一下的,不过在那之前我去qq上敲了Riatre一下,想试试能不能敲诈出什么现成的经验来。

结果居然是大有收获。我用Resedit制作的对话框资源,和Visual Studio自带的资源编辑器制作的资源比起来,对话框少了DS_NOFAILCREATE样式( http://msdn.microsoft.com/en-us/library/windows/desktop/ff729172(v=vs.85).aspx 或者VS帮助文档的Windows desktop app development -> windows application ui development -> dialog boxes -> dialog box styles)。这样式看名字,不太像是正常情况下需要开启的啊……但是VS自带的资源编辑器居然会给你加这个!坑爹啊……

Resedit在对话框的属性里有一个No Fail Create,设为true即可。

另:据说当年萃梦想的config打不开也和没有这个样式有关

 

但是事情还没完,加上这个样式以后,那个人还是跟我说没解决。但是设置成兼容win2000可以。我就觉得很奇怪。突然间想起来xp样式那边,好像除了加清单文件,还要InitCommonControls一下。所以我在创建对话框前加了这个函数。……结果问题解决了