1

[クラスの追加] オプションを選択すると、Visual Studio によって自動生成される CDialog (CNotificationDialog) から派生したクラスがあります。

CNotificationDialog (CWebNotificationDialog) から派生した別のクラスもあります。

私のコードは次のようなものです:

CNotificationDialog* dlg = new CWebNotificationDialog();
dlg->Display();

ダイアログは表示されますが、CWebNotificationDialog::OnInitDialog メソッドは呼び出されません。CNotificationDialog::OnInitDialog メソッドのみが呼び出されます。

そして、あなたが尋ねる前に、はい、それは仮想であると宣言されています。DECLARE_DYNAMIC、BEGIN_MESSAGE_MAP、および自動生成される他のすべてのマクロを追加しようとしましたが、うまくいきませんでした。

私は何を間違っていますか?

CNotificationDialog::OnInitDialog は次のようになります。

BOOL C1NotificationDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   HICON hIconBig = (HICON)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 32, 32, LR_SHARED); 
   CStatic *pPictureCtrl = (CStatic*)GetDlgItem(IDS_NOTIFICATION_DLG_LOGO);
   pPictureCtrl->SetIcon(hIconBig);

   return TRUE;
}

次のように宣言されています。

protected:
virtual BOOL OnInitDialog();
4

2 に答える 2