Как создать нормальный элемент управления для редактирования win32? - PullRequest
4 голосов
/ 11 июня 2009

Я пытаюсь создать элемент управления для редактирования с обычной 3D-рамкой вокруг него (в любом случае в классическом стиле Windows), но вокруг него просто черная граница 1px. Вот мой CreateWindowEx звонок:

return CreateWindowEx(0, "EDIT", "E:\\bk",
                      WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
                      87, 81, 150, 17,
                      main_window.hwnd,
                      (HMENU)5, hInstance, NULL);

Если я исключу WS_BORDER, тогда это просто белая коробка. Есть идеи, что здесь не так?

Обновление

WS_EX_CLIENTEDGE сделал свое дело. Я ничего не знаю о файлах манифеста или о том, как заставить окно использовать более современные темы Windows (например, XP) вместо объемных трехмерных границ. Но когда я все это изучу, WS_EX_CLIENTEDGE заставит их использовать эти темы вместо этого или обеспечит трехмерный вид?

Ответы [ 3 ]

7 голосов
/ 11 июня 2009

Попробуйте использовать WS_EX_CLIENTEDGE. Это создаст встроенную трехмерную границу окна в типичных ситуациях.

return CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "E:\\bk",
                      WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
                      87, 81, 150, 17,
                      main_window.hwnd,
                      (HMENU)5, hInstance, NULL);

Также см. Следующую ссылку для остальных доступных флагов для CreateWindowEx.

CreateWindowEx на MSDN

3 голосов
/ 11 июня 2009

Он прав WS_EX_CLIENTEDGE сделает 3D-границу.

1 голос
/ 11 июня 2009

Я думаю, вы имеете в виду стиль 'WS_EX_DLGMODALFRAM E'. Это делает его похожим на старый стиль 3d рельефного типа. В сочетании с 'WS_BORDER' он выглядит как 3d-рамка вокруг элемента управления.

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