我使用 LVCFMT_FIXED_WIDTH 样式来防止用户列大小。
m_ListCtrl.InsertColumn(0, _gszColumnLabel[0], _gnColumnFmt[0], LVCFMT_FIXED_WIDTH, _gnColumnWidth[0], -1);
我只通过 hasard 发现,这适用于 Unicode,但不适用于非 Unicode 应用程序。用户仍然可以调整列的大小。
我认为这与 stdafx.h 中的默认 Windows.Common-Controls 清单框架有关
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
不幸的是,非 Unicode 应用程序没有默认设置。
如果我也对非 Unicode 应用程序使用相同的清单,它会再次起作用。
但我很确定,如果这是正确的解决方案?我们可以为 Unicode 和 NON Unicode 应用程序使用相同的 Windows.Common-Controls 主程序吗?