设置
|
登录
|
注册
首页
>
Windows API吧
>
浏览帖子
回复帖子
|
只看楼主
目前共有
8
篇帖子。
【教程】用三行C++代碼讓Win32程序擁有XP風格控件,無需manifest文件或24資源
1楼
巨大八爪鱼
2015-12-5 14:34
首先,在Visual Studio 2012中,建立一個Win32空工程,再新建一個源文件,名叫Main.cpp:
【代碼】
#include <Windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"Hello World!", L"Hello", MB_ICONWARNING);
return 0;
}
然後編譯運行。
運行結果:
2楼
巨大八爪鱼
2015-12-5 14:38
可見目前該程序的控件沒有XP風格。
返回代碼編輯窗口。在文件包含部分加入#include <CommCtrl.h>。注意這個一定要放到#include <Windows.h>的下面,如果放反了的話,編譯時就會出現下面的錯誤:
3楼
巨大八爪鱼
2015-12-5 14:39
在WinMain函數前,加入如下代碼:
#pragma comment(lib, "Comctl32.lib")
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
4楼
巨大八爪鱼
2015-12-5 14:39
5楼
巨大八爪鱼
2015-12-5 14:40
最後,編譯並運行程序。
可見程序已經擁有了XP風格控件:
6楼
巨大八爪鱼
2015-12-5 14:41
本文參考資料:
http://www.bianceng.cn/Programming/cplus/201306/36676.htm
7楼
巨大八爪鱼
2015-12-5 16:47
這是微軟官方對這個問題給出的解答:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx
翻譯:Comctl32.dll第六版無需下載,它是一個Windows自帶的庫文件。在manifest裡面聲明一下就能在程序中啟用。
8楼
巨大八爪鱼
2016-5-24 16:10
【補充】
如果編譯的程序需要在XP系統下運行,最好在主函數里調用一下InitCommonControls();,否則控件可能在XP下完全無法顯示,而Win7上卻正常。
例如:
詳見:
https://zh.arslanbar.net/post.php?t=24058
内容转换:
不转换
大陆简体
台灣正體
港澳繁體
马新简体
回复帖子
内容:
用户名:
您目前是匿名发表
验证码:
看不清?换一张
©2010-2025 Arslanbar [手机版] [
桌面版
]
除非另有声明,
本站
采用
知识共享署名-相同方式共享 3.0 Unported许可协议
进行许可。