2014-12-16 1 views
2

Я пытаюсь создать окно редактирования внутри своего приложения Win-32, но у меня проблемы. Он будет отображаться только при обстоятельствах, что моя мышь движется, перетаскивая в то же время, и это Виль мерцает и из видимостиРедактировать окно мерцание

Я создаю мое первоначальное окно, как это:

m_hWnd = CreateWindow(m_wWindowName.c_str(), m_wWindowName.c_str(), 
     WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, 0, 0, m_hInstance, this); 

А потом я пытаюсь создать новый Редактировать поле внутри существующего окна впоследствии:

CreateWindowEx(WS_EX_CLIENTEDGE, 
     TEXT("Edit"), TEXT(""), 
     WS_CHILD | WS_VISIBLE, 
     10, 80, 
     200, 20, 
     m_hWnd, (HMENU)1, NULL, NULL); 

EDIT: Я создаю начальное окно в своем классе, выполнив следующие

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, 
        PSTR cmdLine, int showCmd) 
{ 
    CApplication Application; 
    Application.Initialise(hInstance, MainWndProc, L"GUI Tool"); 

    return Application.Run(); 
} 

Инициализационная функция создает окно, а затем непосредственно после (все еще в функции initialize) Я пытаюсь создать окно редактирования.

Может ли кто-нибудь помочь, почему это происходит?

Благодаря

+1

Можете ли вы представить минимальный полный пример, который воспроизводит эту проблему? – andlabs

+0

Это заставляет меня думать, что вы создаете окна в неправильном месте вашего кода. –

+0

Я могу отредактировать сообщение, чтобы дать понять, как мой код связывается. – Matt

ответ

2

Это звучит, как вы рисуете поверх элемента управления в вашем WM_PAINT обработчик (или это делается DefWindowProc).

Самое легкое решение - установить стиль WS_CLIPCHILDREN в родительском окне, которое автоматически будет вырезать любые дочерние окна при рисовании.

Смежные вопросы