У меня есть приложение и файл ресурсов все работает супер просто в окне. но я добавил tab control , я получил его Handle и потом при открытии проги добавляю туда Итемы , итемы все класно добавляются !!! но вот все кнопки которые я разместил на таб вью не видны!!! Как только я навожу на одну из кнопок которая должна быть там ...она сразу появляется !!! если делать каждый Хэндл и потом команду push хэндл call _imp__SetFocus@4 то тогда каждый элемент на таб вью начинает быть виден !!! Но мне так кажется что я не должен запускать к каждому контролу на таб вью сет фокус ..если у меня 1000 контролов я закалибаюсь ...почему пропадают кнопки и все такое ??? Кто знает подскажите пожалуста , может надо в стиле таб вью что то поменять .....
я переделал но тогда не появляются кнопки таб вью самого , они пропали и не появляются посылаю вот так Код (Text): ; invoke MessageBox,NULL,ADDR textbox,ADDR AppName,MB_OK ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% mov ItemStruct.imask, TCIF_TEXT ; Text? image? what do you want? mov ItemStruct.lpReserved1, 0 ; Reserved mov ItemStruct.lpReserved2, 0 ; Reserved mov ItemStruct.pszText, OFFSET TabTitle1 ; pointer to string containing tab text mov ItemStruct.cchTextMax, sizeof TabTitle1 ; size of pszText mov ItemStruct.iImage, -1 ; index to tab control's image mov ItemStruct.lParam, 0 ; Extra info invoke SendMessage, hwndTab, TCM_INSERTITEM, 0, OFFSET ItemStruct ; Now we add the second Tab title mov ItemStruct.pszText, OFFSET TabTitle2 mov ItemStruct.cchTextMax, sizeof TabTitle2 invoke SendMessage, hwndTab, TCM_INSERTITEM, 1, OFFSET ItemStruct ; Now we add the third Tab title mov ItemStruct.pszText, OFFSET TabTitle3 mov ItemStruct.cchTextMax, sizeof TabTitle3 invoke SendMessage, hwndTab, TCM_INSERTITEM, 2, OFFSET ItemStruct .... хотя раньше то они работали ...
не сказал вот еще ! У меня создается все с помощю ресурсов а когда программно то такого нету ...думал в стилях окна дела все облазил не нашел
calidus У тебя WP_PAINT обрабатывается? Если да, то покажи, и WM_INITDIALOG тоже неплохо бы поглядеть.
WP_PAINT не обрабатывается! либо пустой !!! Либо с этим кодом ...но не то не другое проблемы не решает ((( .if uMsg==WM_INITDIALOG mov TabCtrlItem.imask,TCIF_TEXT ; Will be use TEXT header mov TabCtrlItem.pszText,offset first ; 1. text header invoke SendMessage,hwndTAB,TCM_INSERTITEM,0,offset TabCtrlItem ; add 1. Tab mov TabCtrlItem.pszText,offset second ; 2. text header invoke SendMessage,hwndTAB,TCM_INSERTITEM,1,offset TabCtrlItem ; add 2. TAB mov TabCtrlItem.pszText,offset third ; 3. text header invoke SendMessage,hwndTAB,TCM_INSERTITEM,2,offset TabCtrlItem ; add 3. TAB (and so on, how many do you wish?) .ELSEIF
Когда то я тоже потерял кучу времени создовая tabcontrol таким способом. Помог только пример от shoo вот сылка: http://www.wasm.ru/forum/attachment.php?item=1189
Спасибо !!! Но млин у меня то же самое все ....друшие контролы пропали пока не наведешь мышь ... сделал к кадому конотролу пока что сетфокус но это млин насилие
Проверь свой файл ресурсов, окно которое ты вкладываешь в Tabcontrol, должно иметь начальные координаты не 0,0,... , а скажем 4,20,.... Иначе действительно новое окно у тебя ляжет на Item-ы. В своей проге я делал обрботку сообщения WM_SIZE. Определяешь высоту Item-а Код (Text): sub esp,16 invoke SendMessage,tabhwnd,TCM_GETITEMRECT,0,esp mov eax,[esp+4] add eax,[esp+12] add esp,16 В регистре eax начальная точка по Y для твоего окна
мммм так у меня там не окно а кнопки разные чек боксы и контролы для текста !!!!!!!! а окон нету Но ок гляну , для проверки !!! малоли ......
Для примера кусок из файла ресурсов окна которое вставляется в TabControl Код (Text): 4000 DIALOGEX 4,20,100,100 ;Вот здесь задаются координаты вставляемого окна STYLE 0x40000400 EXSTYLE 0x00000000 FONT 8, "Time New Roman",700,0 BEGIN ; А вот здесь ты ресуешь все остальное CONTROL "Отменить",4001,BUTTON,WS_VISIBLE|BS_CENTER,75,32,70,11 END
Код (Text): #define IDC_EDT7 1058 LANGUAGE 25,1 IDD_DLG DIALOGEX 7,4,701,222 CAPTION "xd" FONT 8,"Arial Narrow",400,0 CLASS "DLGCLASS" STYLE 0x10CB0000 BEGIN CONTROL "",IDC_SBR1,"msctls_statusbar32",0x50000103,0,210,581,12 CONTROL "connect",IDD_TAB,"SysTabControl32",0x50018200,0,1,502,208 вот мои ресурсы ..вроде все ок ... в чем тогда дело ((((((
Выложи весь файл ресурсов, здесь у тебя я только вижу создание окна с SysTabControl32 и msctls_statusbar32 Где окна которые вкладываешь в TabControl?
Для примера: Добавляешь в ресурсы еще одно окно: Код (Text): IDD_DLG1 DIALOGEX 4,20,701,222 ;Обрати внимание на начальные координаты CAPTION "luisa" FONT 8,"Arial Narrow",400,0 CLASS "DLGCLASS" STYLE 0x10CB0000 BEGIN CONTROL "Upload",IDC_BTN5,"Button",0x50010000,280,179,58,8 CONTROL "Delete",IDC_BTN6,"Button",0x50010000,345,179,58,8 CONTROL "Rename",IDC_BTN7,"Button",0x50010000,410,179,82,8 END Во время обработки WM_INITDIALOG создаешь окно IDD_DLG1 и его hwnd добавляешь в [esp.TC_ITEM].lParam при создании страницы в TabControl Код (Text): mov PageTab,0 invoke CreateDialogParam,hinst,IDD_DLG1,hwnd,offset ControlProc,0 sub esp,sizeof TC_ITEM mov [esp.TC_ITEM].imask,TCIF_TEXT or TCIF_PARAM mov [esp.TC_ITEM].cchTextMax,256 mov [esp.TC_ITEM].lParam,eax mov [esp.TC_ITEM].pszText,offset NamePage invoke SendDlgItemMessage,hwnd,IDD_TAB,TCM_INSERTITEM,PageTab,esp add esp,sizeof TC_ITEM inc PageTab
ок попробую ... просто я думал что в одном диалоге не контролс инит сделал и все ...добавляй что хочешь...к томуже в примерах помню там каждый контрол в одном диалоге и называется функцией хайд сенд мессадж. Спасибо , пойду пробовать =)