Элемент управления WinApi не отображается в главном окне - PullRequest
0 голосов
/ 01 декабря 2010

привет У меня есть следующая программа win32, и у меня есть элемент управления EDITTEXT, который не отображается на экране.Предполагается, что в главном окне нарисованы два элемента управления EDITTEXT, но только один показывает, почему это так?два элемента управления.

case WM_CREATE:

            HWND chatbox_cntrl;
            HWND message_text;

            chatbox_cntrl = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",
                WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
                0,0,240,260,hwnd,(HMENU)CHATBOX,GetModuleHandle(NULL),NULL);

            message_text = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",
                WS_CHILD,0,270,240,10,hwnd,(HMENU)MESSAGETEXT,GetModuleHandle(NULL),NULL);

        break;

Ответы [ 3 ]

4 голосов
/ 01 декабря 2010

Текстовое окно сообщения не имеет таких же флагов стиля, как первоеВ частности, отсутствует WS_VISIBLE.Это может быть вашей проблемой.

0 голосов
/ 06 декабря 2013

Вы инициализировали элементы управления перед загрузкой его с InitCommonControlsEx?Попробуйте этот код один.

int InitControls() {
    INITCOMMONCONTROLSEX iccx;

    iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
    iccx.dwICC = ICC_WIN95_CLASSES;

    InitCommonControlsEx(&iccx);
}

Не забудьте включить заголовок commctrl.h и библиотеку comctl32.dll

Удачи!

0 голосов
/ 01 декабря 2010

Вы звонили InitCommonControlsEx() перед созданием окон редактирования? CreateWindow() возвращает действительное HWND?

INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(icc);
// Load one of the intrinsic User32 control classes.
// The user controls include button, edit, static,
// listbox, combobox, and scrollbar. 
dwICC = ICC_STANDARD_CLASSES;
::InitCommonControlsEx(&icc);
...