Глюк GUI или глю в голове 8)

Тема в разделе "WASM.WIN32", создана пользователем calidus, 28 сен 2007.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    У меня есть приложение и файл ресурсов все работает супер просто в окне. но я добавил tab control , я получил его Handle и потом при открытии проги добавляю туда Итемы , итемы все класно добавляются !!! но вот все кнопки которые я разместил на таб вью не видны!!! Как только я навожу на одну из кнопок которая должна быть там ...она сразу появляется !!! если делать каждый Хэндл и потом команду
    push хэндл
    call _imp__SetFocus@4
    то тогда каждый элемент на таб вью начинает быть виден !!! Но мне так кажется что я не должен запускать к каждому контролу на таб вью сет фокус ..если у меня 1000 контролов я закалибаюсь ...почему пропадают кнопки и все такое ??? Кто знает подскажите пожалуста , может надо в стиле таб вью что то поменять .....
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    У тебя окно таб контрол создается и показывается до создания кнопок
     
  3. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    я переделал но тогда не появляются кнопки таб вью самого , они пропали и не появляются посылаю вот так

    Код (Text):
    1. ;   invoke MessageBox,NULL,ADDR textbox,ADDR AppName,MB_OK
    2. ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3.  
    4.         mov ItemStruct.imask, TCIF_TEXT         ; Text? image? what do you want?
    5.         mov ItemStruct.lpReserved1, 0               ; Reserved
    6.         mov ItemStruct.lpReserved2, 0               ; Reserved
    7.         mov ItemStruct.pszText, OFFSET TabTitle1    ; pointer to string containing tab text
    8.         mov ItemStruct.cchTextMax, sizeof TabTitle1 ; size of pszText
    9.         mov ItemStruct.iImage, -1                           ; index to tab control's image
    10.         mov ItemStruct.lParam, 0                            ; Extra info
    11.         invoke SendMessage, hwndTab, TCM_INSERTITEM, 0, OFFSET ItemStruct
    12.  
    13.             ; Now we add the second Tab title
    14.         mov ItemStruct.pszText, OFFSET TabTitle2
    15.         mov ItemStruct.cchTextMax, sizeof TabTitle2
    16.         invoke SendMessage, hwndTab, TCM_INSERTITEM, 1, OFFSET ItemStruct
    17.  
    18.             ; Now we add the third Tab title
    19.         mov ItemStruct.pszText, OFFSET TabTitle3
    20.         mov ItemStruct.cchTextMax, sizeof TabTitle3
    21.         invoke SendMessage, hwndTab, TCM_INSERTITEM, 2, OFFSET ItemStruct
    .... хотя раньше то они работали ...
     
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    не сказал вот еще ! У меня создается все с помощю ресурсов а когда программно то такого нету ...думал в стилях окна дела все облазил не нашел
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    calidus
    У тебя WP_PAINT обрабатывается?
    Если да, то покажи, и WM_INITDIALOG тоже неплохо бы поглядеть.
     
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    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
     
  7. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Когда то я тоже потерял кучу времени создовая tabcontrol таким способом.
    Помог только пример от shoo вот сылка: http://www.wasm.ru/forum/attachment.php?item=1189
     
  8. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Решил продолжить тему.
    Как в TabControl сменить имя уже созданного Item-a?
     
  9. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Спасибо !!! Но млин у меня то же самое все ....друшие контролы пропали пока не наведешь мышь ... сделал к кадому конотролу пока что сетфокус но это млин насилие
     
  10. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Проверь свой файл ресурсов, окно которое ты вкладываешь в Tabcontrol, должно иметь начальные координаты не 0,0,... , а скажем 4,20,.... Иначе действительно новое окно у тебя ляжет на Item-ы.
    В своей проге я делал обрботку сообщения WM_SIZE.
    Определяешь высоту Item-а
    Код (Text):
    1. sub esp,16
    2. invoke SendMessage,tabhwnd,TCM_GETITEMRECT,0,esp
    3. mov eax,[esp+4]
    4. add eax,[esp+12]
    5. add esp,16
    В регистре eax начальная точка по Y для твоего окна
     
  11. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    мммм так у меня там не окно а кнопки разные чек боксы и контролы для текста !!!!!!!! а окон нету Но ок гляну , для проверки !!! малоли ......
     
  12. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Для примера кусок из файла ресурсов окна которое вставляется в TabControl
    Код (Text):
    1. 4000 DIALOGEX 4,20,100,100    ;Вот здесь задаются координаты вставляемого окна
    2. STYLE 0x40000400
    3. EXSTYLE 0x00000000
    4. FONT 8, "Time New Roman",700,0
    5. BEGIN   ; А вот здесь ты ресуешь все остальное
    6.     CONTROL "Отменить",4001,BUTTON,WS_VISIBLE|BS_CENTER,75,32,70,11
    7. END
     
  13. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. #define IDC_EDT7 1058
    2. LANGUAGE 25,1
    3. IDD_DLG DIALOGEX 7,4,701,222
    4. CAPTION "xd"
    5. FONT 8,"Arial Narrow",400,0
    6. CLASS "DLGCLASS"
    7. STYLE 0x10CB0000
    8. BEGIN
    9.   CONTROL "",IDC_SBR1,"msctls_statusbar32",0x50000103,0,210,581,12
    10.   CONTROL "connect",IDD_TAB,"SysTabControl32",0x50018200,0,1,502,208
    вот мои ресурсы ..вроде все ок ... в чем тогда дело ((((((
     
  14. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Выложи весь файл ресурсов, здесь у тебя я только вижу создание окна с SysTabControl32 и msctls_statusbar32
    Где окна которые вкладываешь в TabControl?
     
  15. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    вот 8)
     
  16. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Для примера:
    Добавляешь в ресурсы еще одно окно:
    Код (Text):
    1. IDD_DLG1 DIALOGEX 4,20,701,222    ;Обрати внимание на начальные координаты
    2. CAPTION "luisa"
    3. FONT 8,"Arial Narrow",400,0
    4. CLASS "DLGCLASS"
    5. STYLE 0x10CB0000
    6. BEGIN
    7.   CONTROL "Upload",IDC_BTN5,"Button",0x50010000,280,179,58,8
    8.   CONTROL "Delete",IDC_BTN6,"Button",0x50010000,345,179,58,8
    9.   CONTROL "Rename",IDC_BTN7,"Button",0x50010000,410,179,82,8
    10. END
    Во время обработки WM_INITDIALOG создаешь окно IDD_DLG1 и его hwnd добавляешь в [esp.TC_ITEM].lParam при создании страницы в TabControl
    Код (Text):
    1.     mov PageTab,0
    2.     invoke CreateDialogParam,hinst,IDD_DLG1,hwnd,offset ControlProc,0
    3.     sub esp,sizeof TC_ITEM
    4.     mov [esp.TC_ITEM].imask,TCIF_TEXT or TCIF_PARAM
    5.     mov [esp.TC_ITEM].cchTextMax,256
    6.     mov [esp.TC_ITEM].lParam,eax
    7.     mov [esp.TC_ITEM].pszText,offset NamePage
    8.     invoke SendDlgItemMessage,hwnd,IDD_TAB,TCM_INSERTITEM,PageTab,esp
    9.     add esp,sizeof TC_ITEM
    10.     inc PageTab
     
  17. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    ок попробую ... просто я думал что в одном диалоге не контролс инит сделал и все ...добавляй что хочешь...к томуже в примерах помню там каждый контрол в одном диалоге и называется функцией хайд сенд мессадж. Спасибо , пойду пробовать =)