Элементы управления вкладками и их дочерние окна - PullRequest
1 голос
/ 21 января 2011

Я использую вкладку управления (класс Windows "SysTabControl32") для организации элементов графического интерфейса в разрабатываемом приложении. В прошлом я перехватывал событие TCN_SELCHANGE, а затем решал, что должно быть видимым или нет, для каждого элемента графического интерфейса. Это довольно хорошо для небольших приложений с десятками элементов графического интерфейса, но мой текущий проект более сложный.

Я надеюсь, что есть более простое решение. То, что я хотел бы иметь, это вкладка управления с несколькими вкладками. Каждая вкладка будет иметь элемент-оболочку GUI, который я могу показать / скрыть по отдельности, а все соответствующие дочерние элементы станут видимыми / скрытыми. Я прочитал, что должен использовать диалоги, чтобы описать то, что я описываю, но не могу найти никаких примеров.

Диалоги - путь? Если так, где я могу найти простой пример? Если нет, что здесь нужно сделать?

Ответы [ 3 ]

1 голос
/ 21 января 2011

Читать о Листы недвижимости . Может быть, это решит вашу проблему.

1 голос
/ 17 февраля 2011

Спасибо Тиибу и Тергиверу за ответы, к сожалению, мне просто не нравится ни одно из этих решений.Вот что я решил сделать:

Когда новая вкладка добавляется в мой элемент управления вкладками, я создаю окно с классом BUTTON и стилем BS_OWNERDRAWN.Затем я заменяю оконные процедуры (GWL_WNDPROC) своей собственной версией (простите мою сборку):

ForwardMessageProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  .switch uMsg
    .case WM_NOTIFY
      invoke            WinProc, hWnd, uMsg, wParam, lParam
      xor               eax, eax
      .break
    .case WM_COMMAND
      invoke            WinProc, hWnd, uMsg, wParam, lParam
      xor               eax, eax
      .break
    .default
      invoke            DefWindowProc, hWnd, uMsg, wParam, lParam
      .break
  .endswitch
  ret
ForwardMessageProc endp

Все, что он делает - это отправляет сообщения графического интерфейса в родительское окно.Эти «рамки вкладок» будут фактической областью содержимого вкладок, поэтому я добавляю все элементы графического интерфейса непосредственно в эти вкладки.Затем, когда пользователь нажимает на вкладку, я могу показать / скрыть каждую рамку вкладки по отдельности, и элементы GUI, которые находятся на ней, будут следовать ее примеру.Пока все работает отлично, и я не нашел никаких проблем.

0 голосов
/ 21 января 2011

MSDN всегда хорошее место для старта: http://msdn.microsoft.com/en-us/library/bb760551.aspx#creating_tab_dialog_box

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