Bonjour,
Voulant éviter de faire des exécutables de taille énorme, qui se traînent et qu'il faut accompagner de dll énormes elles aussi, je développe en c avec les api win 32 dans Code::Block et avec MinGW. (J'explique car j'ai vu des questions à ce sujet : je souhaite rester proche du système. Et puis, je ne me suis pas plongé dans la programmation objet).
Je rencontre un problème d'affichage d'une bête boite de dialogue.
Déclaration dans le fichier rc :
IDD_NEWCOM DIALOG 0, 0, 317, 118
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_VISIBLE | WS_POPUP | WS_SYSMENU
etc...
Dans la "callback" de la fenêtre principale, je lance DialogBox lorsque l'on appuie sur un bouton :
DialogBox(hinst, (LPCTSTR)IDD_NEWCOM, hwnd, (DLGPROC)NewCommandeProc);
(j'ai essayé avec MAKEINTRESOURCE(IDD_NEWCOM) = pareil)
La "callback" de la boite dialogue est comme ceci :
LRESULT CALLBACK NewCommandeProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
hfontTitre = CreateFont(-24, 0, 0, 0, 700, FALSE, FALSE, FALSE, 1, 400, 0, 0, 0, "Titre Dlg");
SendMessage(GetDlgItem(hwndDlg, IDC_STATIC100), WM_SETFONT, (WPARAM)hfontTitre, FALSE);
SetDlgItemText(hwndDlg, IDC_STATUT_COM, "EN PREPARATION");
return TRUE;
case WM_CTLCOLORSTATIC: //Pour mettre le titre en rouge
switch(GetDlgCtrlID((HWND)lParam))
etc...
La boite de dialogue ne s'affiche pas !
Un MessageBox pour test dans le message WM_INITDIALOG ne s'affiche pas...
Curieusement, sur un autre PC sur lequel je partage ce petit développement, elle s'affiche !!
C'est le thème de Windows XP qui pose problème ; ils sont différents sur les 2 PC : l'un en thème XP, l'autre en thème win98.
Merci pour vos lumières...