DialogBoxIndirect создает диалоговое окно большего размера, чем было предложено

Для моего приложения мне нужно создать диалоговое окно без использования ресурсов. Я пытаюсь сделать это с помощью функции DialogBoxInderect . Код невероятно уродлив, но как-то мне это удалось.

Проблема в том, что диалог по какой-то причине намного больше, чем я просил, с гораздо более крупными шрифтами.

Вот как выглядит диалог, если я загружу его из ресурса: enter image description here

А вот диалоговое окно с тем же размером, указанным при вызове функции DialogBoxInderect . enter image description here

Вот как это определено в коде:

HGLOBAL             hGlobal;
LPDLGTEMPLATE       wlsDialogTemplate;
LPDLGITEMTEMPLATE   wlsDialogItemTemplate;
LPWORD              nextItem;
LPWSTR              itemString;
int32_t             itemStringLength;

// Check for memory allocation errors
hGlobal = GlobalAlloc(GMEM_ZEROINIT, 1024);
if (!hGlobal) 
    return -1;

wlsDialogTemplate = (LPDLGTEMPLATE)GlobalLock(hGlobal);

// Define a dialog box.
wlsDialogTemplate->style    = WS_CAPTION;
wlsDialogTemplate->x        = 0;
wlsDialogTemplate->y        = 0;
wlsDialogTemplate->cx       = 320;
wlsDialogTemplate->cy       = 115;

GlobalUnlock(hGlobal);
retCode = DialogBoxIndirect(0, (LPDLGTEMPLATE)hGlobal, 0, ActivateWlsMsgDialog);

А вот как это определено в RC-файле:

IDD_WLS_SMALL_MESSAGE_DLG DIALOGEX 0, 0, 320, 115
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",ID_CUSTOM_OK,175,95,120,15
    PUSHBUTTON      "Cancel",ID_CUSTOM_CANCEL,45,95,120,15
    CTEXT           "Static",IDC_HEADER_TEXT,120,10,170,70
    CONTROL         "",IDC_LOGO,"Static",SS_BITMAP,16,10,83,70
END

Как вы можете видеть, второй диалог намного больше, чем определено. Я пробовал поиграть с разными флагами стилей, но безуспешно (вот почему в большом диалоге есть красный крест).

С этим можно что-нибудь сделать? Спасибо!

5
задан Iron-Eagle 9 February 2012 в 08:19
поделиться