CreateDialog Win32 API呼叫的一個小問題
在老版本的VC編譯器上,關鍵呼叫是以下2句:
InitCommonDialogs();
HWND hwndDialog = CreateDialog(hInstance, "IDD_XXX", ...);
但是在新版本的VS上,InitCommonDialogs這個API似乎已經沒了,而CreateDialog還有,問題是,對話方塊的介面出不來,什麼原因呢?
推測InitCommonDialogs這個API註冊了預設的系統對話方塊視窗類,這樣CreateDialog的第二個引數才能以字串的形式引用,現在InitCommonDialogs雖然沒了,但必須要有一種機制傳進正確的視窗類。。。
按照這個思路再次確認資原始檔,測試專案首先通過resource.h引用.rc資原始檔,而.rc裡定義了一個名字叫IDD_XXX的對話方塊資源,這個地方沒有問題,
但是,資原始檔裡的IDD_XXX實質上是整數型別,而CreateDialog的第2個引數要求的卻是字串,這個地方似乎有問題。
再次確認MSDN裡的API文件說明,哈哈,果然,有一個MAKEINTRESOURCE巨集,可以把整數型別的IDD_XXX值轉換為字串型別(這裡我的感覺是新版本的Win32 執行時環境使用了不同的視窗類字串機制),改成下面的寫法就可以了:
HWND
hwndDialog = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_XXX), ...);
InitCommonDialogs不要需要。
相關文章
- 一個關於SessionBean呼叫的問題。SessionBean
- outlook express的一個小問題!Express
- 兩條命令搞定 ChatGPT API 的呼叫問題ChatGPTAPI
- 一個JAVA程式呼叫外部程式的問題!(急)Java
- 一個關於值傳遞呼叫的問題
- weblogic 一個小問題Web
- 記錄一個小問題
- pl/sql developer的一個小問題SQLDeveloper
- 一個小問題的解決方案
- 請問一個jndi連線的小問題
- 一個Intent與LinkedHashMap的小問題IntentHashMap
- 一個小問題 TestClient.javaclientJava
- PHP 呼叫 ES API 小插曲PHPAPI
- 問一個小的運算問題,請高手指教!
- 關於介面實現的一個小問題
- 使用sql*plus時的一個安全小問題SQL
- eval解析JSON字串的一個小問題JSON字串
- 呼叫遠端procedure的2個問題
- 在jsp中呼叫一個簡單工廠的問題JS
- 快速掌握iOS API的一個小技巧iOSAPI
- PHP array_column 引發的一個小問題PHP
- 一個執行計劃解析的小問題分析
- 一個使用SQL語句解決的小問題SQL
- 【求助】請教一個初學java的小問題Java
- 發現 postman 自動生成介面呼叫程式碼的一個問題Postman
- Laravel event 事件使用中 記錄的一個小問題Laravel事件
- VMware ESX 3.0安裝中遇到的一個小問題
- 兩個小問題深入淺出List的效能問題
- Struts2中Action動態呼叫DMI出現的一個問題
- Redis學習的幾個小問題Redis
- 圖靈社群的幾個小問題圖靈
- 搭建dataguard碰到的幾個小問題
- 在同一個類中呼叫另一個方法沒有觸發 Spring AOP 的問題Spring
- 一個非技術問題的問題
- ???做了一個CMP, 但透過sessionbean呼叫資料時卻有個奇怪的問題??SessionBean
- 監控資料庫連線遇到的一個小問題資料庫
- 請高手幫忙分析一個JSP小程式的問題JS
- asmcmd的一個問題ASM