算了一天终于把CRC32算对了,也理解了boost库的做法

满满的一种“被坑了”的感觉。

CRC32不是有什么多项式、初始值、调换bit顺序、结果xor值、调换结果位序之类的参数吗,常用的这个

多项式:0x104C11DB7
初始值:0xFFFFFFFF
结果异或值:0xFFFFFFFF
调换输入字节位序:是
调换结果字节位序:是

CRC的理论也不难,我就一个比特一个比特处理,写了这样的代码

继续阅读算了一天终于把CRC32算对了,也理解了boost库的做法

对话框开不开

写了个心绮楼改名工具,其实就是给你转个内码改个文件名的东西,期间用到了开启对话框显示图形界面的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一下。所以我在创建对话框前加了这个函数。……结果问题解决了