2009-06-07 100 views
18

這是我第一個遠離VC6的MFC應用程序,我感覺有點蠢:VS 2008,MFC:添加OnInitDialog - 如何?

如何添加OnInitDialog處理程序? (我知道如何手動添加,但從長遠來看這是一個痛苦)。

雙擊對話框 - 什麼也沒有。 右鍵單擊對話框 - 「添加事件處理程序」被禁用。 屬性 - 消息有「正常」的消息,但不是WM_INITDIALOG 屬性 - 事件只持有 右擊類視圖從包含的控件的通知 - 「添加...」只有函數和變量

劃痕頭

[編輯]德哦 - 這是在MFC中的虛函數,但仍...

回答

32

不要覺得愚蠢,我花了永遠摸不着頭腦,當我第一次從VC6到VS2008感動!

不管怎麼說,也爲我自己參考,這裏是添加一個對話框和重寫OnInitDialog方法的完整步驟:

  1. 選擇資源視圖和擴大rc文件。
  2. 右鍵單擊樹視圖中的Dialog條目,然後選擇插入對話框
  3. 選擇屬性窗口。 (注:如果您沒有看到這個窗口中,選擇查看>其他窗口>屬性窗口菜單項。)
  4. 屬性窗口,設置ID爲對話框,例如, IDD_MYDIALOG
  5. 右鍵單擊資源編輯器中的對話框,然後選擇添加類。注意:如果您安裝了IE8,則可能會產生Internet Explorer腳本錯誤。有關如何解決此問題的詳細信息,請參閱this blog post
  6. MFC類嚮導對話框中輸入的類名,例如,CMyDialog,選擇CDialog作爲基類,然後按完成。這將創建名爲MyDialog.cppMyDialog.h的文件並將它們添加到您的項目中。

要覆蓋在CMyDialog類的OnInitDialog方法:

  1. 打開文件MyDialog.h
  2. 選擇屬性窗口。
  3. 將光標放在讀取class CMyDialog : public CDialog的行上。(屬性窗口的頂部應顯示「CMyDialog VCCodeClass。」 - 這是很重要的,因爲屬性窗口是高度上下文敏感的,和你根據光標在編輯器中的位置不同選項)
  4. 點擊覆蓋圖標屬性窗口。
  5. 向下滾動屬性窗口找到OnInitDialog
  6. 單擊此條目的向下箭頭並選擇<添加> OnInitDialog。這應該創建您的CMyDialog::OnInitDialog函數。

我希望這有助於!

+0

只是想提一下,在我從VC6遷移到VS2008後,很長一段時間,這也讓我無法迴避。它可能需要一些習慣。 – adzm 2009-06-08 17:05:03

+0

找到了! :-D 它總是有助於知道你並不孤單。 – peterchen 2009-06-08 22:00:26

1

看來,你甚至不必打開頭文件並且在放置光標時出現混亂......在創建類之後,在ClassView窗格中選擇類,然後可以在屬性中更改覆蓋/消息/事件如上所述。