2013-03-22 64 views
1

我不是新的C++,但這是我第一次開發Win32程序。它必須是圖形化的,所以我一直在嘗試使用輸入/對話框來獲取用戶輸入,但沒有成功。使用對話框以圖形方式檢索用戶輸入

我已閱讀this topic on MSDN,發現它很有幫助,但我得到一個關於IDD_PASSWORDIDE_PASSWORD沒有被定義的錯誤。在resource.h中聲明它們並給出任意值(如110,111)不會產生任何結果。其他嘗試我試圖修改自動生成的關於框,這也沒有結果修改後,我注意到,如果我更改IDD_ABOUTBOXresource.h從103的值,這也不起作用。我也嘗試在資源視圖下使用.rc,但仍然沒有結果。

所以我想知道資源盒模板是否有預定義的常數,我必須使用,如果是這樣,因爲我也搜索過,或者如果有另一種方式來獲得窗口應用程序中的用戶輸入。我只想獲得一個整數,就是這樣。

+0

它必須是C++嗎?對於第一個GUI努力,我會推薦C#。這很容易,很多次。 – 2013-03-22 05:57:41

+0

是的,謝謝。除了我無法獲得用戶輸入外,我已經能夠解決這個問題了。 – ac3hole 2013-03-22 06:08:33

回答

3

分配給資源的號碼沒有什麼魔力。這些數字是代碼實際用於識別資源的內容。 Visual Studio允許您通過使用C宏(即#define)將符號名稱分配給這些數字,以使您的代碼更易於閱讀。這些值都是按照慣例在文件resource.h中定義的,雖然您可以手動修改該文件,但通常不應該這樣做 - 讓Visual Studio資源編輯器爲您處理該文件。

您遇到的問題是,您實際上必須先創建這些資源,然後纔會有數字意味着什麼。當您創建一個新的Win32項目時,Visual Studio會自動創建一個關於對話框並給它一個符號ID IDD_ABOUTBOX。但是,在新項目中默認情況下不會創建此類對話框,並且Windows中沒有內置對話框。

您可以使用對話框編輯器(Visual Studio的資源編輯器的一部分)自己創建此對話框,這很容易實現,因爲它允許您在所見即所得的對話框中拖動控件。當您爲項目資源添加一個新對話框時,您可以選擇任何您喜歡的名稱。如果需要,您可以使用IDD_PASSWORD或任何其他名稱。數字ID將根據算法自動分配;通常使用最低的可用數量。

您鏈接的文章假設您已經添加了一個對話框到您的項目中,其符號名稱爲IDD_PASSWORD(這可能是作者的錯誤)。它所顯示的只是它作爲項目資源的一部分存在時如何顯示該對話框。


通過閱讀MSDN文檔,學習Win32編程會有些困難。我強烈建議您閱讀一本能更清楚,更合理地解釋它的書。規範文本是Charles Petzold的Programming Windows, 5th Edition。請注意,您需要確保獲得第5版,如the newer editions digress from their Win32 roots and start talking about completely unrelated things like C# and Silverlight

如果您絕對必須通過反覆試驗和MSDN學習,請開始閱讀關於對話框資源here

+0

哇這真的很有幫助,謝謝科迪格雷。如果我已經付出足夠的關注,唯一一次我看到一個GUI設計師是當我在資源視圖中查看.rc文件。你一直很好的幫助。 – ac3hole 2013-03-22 06:12:18

+0

是的,如果雙擊資源視圖窗口中的對話框資源,它會顯示出來。在資源視圖中右鍵單擊您的項目以添加一個新的對話框(或任何其他資源)。 – 2013-03-22 06:12:52

+0

謝謝,通過本書和你提供的鏈接,有用的資源......我很快就要畢業了,申請了一份工作,然後他們給我發了一份需要win32代碼和可執行文件的評估,但我沒有經驗。你的信息真的很有幫助 – ac3hole 2013-03-22 12:29:46