Сделать окно статическим, а также разрешить добавление текста с помощью CreateWIndowEx () - PullRequest
0 голосов
/ 27 июня 2009

Я использую функцию CreateWindowEx () для создания окна «РЕДАКТИРОВАНИЕ», то есть, где пользователь может печатать.

g_hwndMain = CreateWindowEx (0, WC_TEXT
NULL,
WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL
0, 0, 400, 200,
phwnd, NULL, g_hInstance, NULL);

Но я бы тоже хотел, чтобы окно было статичным. Есть ли способ сделать это при создании окна? Или любая другая функция, которая может быть использована после создания окна? Я попытался использовать функцию SetWindowPos после создания окна, используя SWP_NOSENDCHANGING и SWP_NOREPOSITION, но это не сработало. ЛЮБЫЕ идеи?


Нет, я имею в виду Неподвижное окно. По сути, окно, которое я создаю, должно быть способным принимать текст и быть неподвижным одновременно.

Ответы [ 2 ]

0 голосов
/ 30 июня 2009

Спасибо за вашу помощь. Хорошо, пока я сделал это для обработки сообщения WM_WINDOWPOSCHANGING

BOOL OnWindowPosChanging(HWND hwnd, WINDOWPOS *pwp)
{

    return 0;
}

LRESULT CALLBACK
WndProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uiMsg) {

        HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, OnWindowPosChanging);
    }

    return DefWindowProc(hwnd, uiMsg, wParam, lParam);
}

и когда я создаю свое окно, я делаю это:

g_hwndMain =  CreateWindowEx(0,
                            TEXT("EDIT"),
                            NULL, 
                            WS_BORDER,
                            0, 0, 400, 200,
                            phwnd, NULL, 
                            g_hInstance, NULL);

                    if (!g_hwndMain) {
                        RemoveImages(spHTMLDoc);//Just so I know that the window has been created properly
                    }
                    else{                           

                        SetWindowPos(g_hwndMain, HWND_TOP, 500, 500, 300, 300,  SWP_NOSENDCHANGING | SWP_SHOWWINDOW );
                    }

Флаг SWP_NOMOVE не позволяет коду изменять положение окна, но пользователь все еще может изменить положение окна, перемещая его с помощью мыши. Но это именно то, что я хочу предотвратить. Окно должно быть static . В моем коде чего-то не хватает, или есть предложения?

0 голосов
/ 27 июня 2009

Вам нужно обработать сообщение WM_WINDOWPOSCHANGING для этого окна, а затем установить флаг SWP_NOMOVE члена flags структуры WINDOWPOS, прежде чем отправлять его вперед.

В этом сообщении в блоге есть пример (хотя он предотвращает изменение размера, техника та же).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...