Доброго всем времени суток.
у меня такая проблема:
нужно сделать MDI интерфейс на чистом винапи. Причем, клиентская область должна занимать лишь часть главного окна - там еще есть туллбары, строка состояния и т.п. Но, при создании клиентского окна ("MDICLIENT"), координаты и размеры создаваемого окна игнорируются. Т.е. несмотря на то, что я указываю X=100 и Y=100, клиентское окно размещается на все главное (FRAME) окно. А в результате, например тулл бар расположен прямо поверх клиентского окна, и дочерние MDI окна, залезают под него.
Пишу на VC++ 6.0, вот куски кода создания окон:
создание главного окна:
hWnd = CreateWindow)szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_MAXIMIZE | WS_CLIPCHILDREN,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL:;
это - при инициализации главного окна:
CreateStatusWindow )WS_CHILD | WS_VISIBLE, "hello", hWnd, ID_STATUS_LINE:;
ccs.hWindowMenu = GetSubMenu)GetMenu)hWnd:, 1:;
ccs.idFirstChild = ID_MDI_CHILD;
child_hwnd = CreateWindow) "MDICLIENT", )LPCTSTR: NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | WS_CLIPSIBLINGS,
100, 100, 200, 200, hWnd, )HMENU: 0xCAC, hInst, )LPSTR: &ccs:;
это - при открытии нового сеанса:
new_hwnd = CreateMDIWindow)"MDI_CHILD_WINDOWS_CLASS", "mdi1", MDIS_ALLCHILDSTYLES | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | WS_CLIPSIBLINGS ,
300,100,300,300,child_hwnd,hInst,NULL:;
тоесть, все практически один-в-один согласно примерам из МСДН-а... :?
Вот и вопрос, а как это, сообственно, делается-то по-хорошему?
ЗЫ: после долгих мучений получилось отучить дочерние окна разворачиваться на все главное окно (путем ввода ограничений на перемещения окна - по мессаге WM_MOVING и WM_SIZING + координаты развернутого окна при обработке WM_SIZE сообщения), но этот вариант очень плохо смотрится, если включить ХР-шный интерфейс - ведь нужно, чтобы заголовок дочернего окна "прятался" под тулбар, а в разных темах рабочего стола по видимому разные размеры этого заголовка
ЗЫЫ: и еще вопросик... глупый :oops:
что за "(HMENU) 0xCAC" указывается при создании клиентского окна? В МСДН-е это в примере стоит, хотя пробовал поставить 0 - все нормально! :?
Спасибо.