Edit # 2:
Pour définir l'icône de cette fenêtre (essentiellement un écran de démarrage), vous pouvez envoyer à la fenêtre un message WM_SETICON
avec l'icône souhaitée.
Pour une boîte de dialogue, vous pouvez le faire en OnInitDialog()
. Voici un extrait qui utilise l'icône d'informations de Windows par défaut comme indiqué ici: LoadIcon @ MSDN.
// CHelperDlg message handlers
BOOL CHelperDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 32516 is also known as IDI_INFORMATION
HICON hIcon = LoadIcon(0, MAKEINTRESOURCE(32516));
// 0 in WPARAM is 'small version'
::SendMessage(GetSafeHwnd(), WM_SETICON, 0, (LPARAM)hIcon);
// 1 in WPARAM is 'large version'
::SendMessage(GetSafeHwnd(), WM_SETICON, 1, (LPARAM)hIcon);
// No cleanup as HICONs are free from disposal rules.
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
-
Edit:
J'ai créé un deuxième projet pour imiter votre mise à jour, mais je ne vois aucune différence, sauf l'inclusion de DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS) dans mon. fichier rc. Ces définitions de style de boîte de dialogue n'affectent pas l'affichage de la boîte de dialogue.
J'ai téléchargé des parties clés pour mon exemple minimal à http://gist.github.com/461057 pour votre référence, au cas où vous voudriez essayer d'ajouter cette boîte de dialogue avant la votre pour le tester.
En outre, j'utilise VS2010. J'ai VS2008 disponible si vous souhaitez que je répète ce test dans cette version aussi.
-
Original:
Essayez spécifiant la fenêtre de bureau (via CWnd::GetDesktopWindow()
) que la fenêtre parent lorsque vous créez la boîte de dialogue.
// Member Variable
CHelperDlg *dlg;
// Meanwhile, elsewhere...
dlg = new CHelperDlg();
dlg->Create(IDD_HELPERDLG, CWnd::GetDesktopWindow());
dlg->ShowWindow(SW_SHOW);
// or...
// dlg->DoModal();
En outre, ne pas oublier de détruire la boîte de dialogue lorsque vous avez terminé avec elle, que ce soit dans le destructor du propriétaire de classe, ou un autre endroit pratique.
Clever, mais il va échouer quand quelqu'un a des tailles de bordure non standard. Ceux-ci sont configurables, vous savez. –
Hmm, un moyen d'obtenir le décalage de la zone client? – Lodle