edit + ws_tabstop

Тема в разделе "WASM.WIN32", создана пользователем Xorbit, 3 фев 2005.

  1. Xorbit

    Xorbit New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2005
    Сообщения:
    4
    создаю через CreateWindowEx пару edit ов :



    invoke CreateWindowEx,0,Editcl,editCls,

    WS_CHILD+WS_VISIBLE+WS_TABSTOP,10,50,150,90,hWnd,0,hinst,NULL

    mov edit1,eax



    invoke CreateWindowEx,0,Editcl,editCls,

    WS_CHILD+WS_VISIBLE+WS_TABSTOP,30,50,150,90,hWnd,0,hinst,NULL

    mov edit2,eax



    при нажатии таба фокус не переходит на следующий едит ??(извените я только учусь) разанее спасибо :)
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Xorbit

    В обычном окне Tab не работает. Подробнее — читаем Iczelion'a в главе о суперклассинге.
     
  4. Xorbit

    Xorbit New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2005
    Сообщения:
    4
    совсем невеселый ответ сожать на каждую форму суперклассинг :dntknw:( может есть еще выход ну и через RC нехочется делать короче я ужасно ленивый :)
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Xorbit

    Нет, если у тебя диалог - IsDialogMessage тебе в руки.

    Если обычные окна — придётся играть по правилам WinAPI…
     
  6. Xorbit

    Xorbit New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2005
    Сообщения:
    4
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    EM_SETTABSTOPS - это совсем не то, это установка позиций табуляции в multiline edit'ах
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    IceStudent





    Я как раз тут с кучей едитов ковырялся, окно - не диалог, обычное, через CreateWindowEx создано, у него 5 дочерних, также через CreateWindowEx, и в этих дочерних сидят едиты, от 3 до 7 шт в каждом, и ТАВ вполне прилично работает, правда пришлось немного переделать message loop, как раз с IsDialogMessage:


    Код (Text):
    1.     .WHILE TRUE
    2.         invoke GetMessage, ADDR msg,NULL,0,0
    3.         .BREAK .IF (!eax)
    4.         invoke IsDialogMessage,hAddr,ADDR msg
    5.         test eax,eax
    6.         jnz @NextMessage
    7.         invoke IsDialogMessage,hTask,ADDR msg
    8.         test eax,eax
    9.         jnz @NextMessage
    10.         invoke IsDialogMessage,hDedt,ADDR msg
    11.         test eax,eax
    12.         jnz @NextMessage
    13.         invoke IsDialogMessage,hCred,ADDR msg
    14.         test eax,eax
    15.         jnz @NextMessage
    16.         invoke IsDialogMessage,hNote,ADDR msg
    17.         .if (!eax)
    18.             invoke TranslateMessage, ADDR msg
    19.             invoke DispatchMessage, ADDR msg   
    20.         .endif
    21.         @NextMessage:
    22.     .ENDW




    И никаких суперклассингов не надо, т.к.

    Although the IsDialogMessage function is intended for modeless dialog boxes, you can use it with any window that contains controls, enabling the windows to provide the same keyboard selection as is used in a dialog box.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    cresta

    Да, век живи, век учись..



    А хэндл главного окна нельзя передать в IsDialogMessage? Чтобы избавиться от цепочки вызовов этой функции?
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Не получается без цепочки, фокус передается почему-то в OutputWindow RadAsm'a :dntknw: Почему - пока не понял.
     
  11. Xorbit

    Xorbit New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2005
    Сообщения:
    4
    снова трабла, повесил я на мульти едит сабкасс при нажатии таба фокус передается куда нужно но в едит попадает знак таба, можно ли обрабатывать клавишу до попадения в едит