Пожалуйста не надо смеяться

Тема в разделе "WASM.BEGINNERS", создана пользователем dgs, 5 фев 2011.

  1. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Здравствуйте. А как отправить родителю WM_COMMAND?

    Код (Text):
    1.         id     dd WM_USER+1
    2. ...
    3.         mov     ebx, BN_CLICKED
    4.         shl     ebx, 16
    5.         add     ebx, [id]
    6.         invoke  GetParent, [hwnd]
    7.         invoke  SendMessage, eax, WM_COMMAND, ebx, [hwnd]
    я раззве ebx не правильно заполнил?
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    loword должен быть id контрола, а не WM_USER+1 (если они конечно не совпали случайно).
    Id задается при создании контрола.

    add ebx, [id] можно делать, если есть уверенность, что [id] содержит в старшем слове нули. Иначе получишь ошибочный WPARAM.

    Лучше вообще отказаться от WM_COMMAND и просто передавать WM_USER+XXXXXXX.

    Если у тебя возникла необходимость отправлять сообщение родителю - это повод переделать структуру программы. Что-то неоптимально у тебя организовано, иначе не пришлось бы прибегать к такому способу общения.
     
  3. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Кэк бы тэк случайно совпали, даже сам не пойму как... (программа сама себе WM_COMMAND отсылает)

    Ну как по другому?! Я пытаюсь (в целях саморазвития конечно) написать кнопку с нуля и запихнуть ее в длл естественно, но вот допустим вы нажали на нее и как мне сообщить родителю, что вы это сделали???

    id dd WM_USER+1 - написал для наглядности, а так беру значение из CREATEPARAM
     
  4. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    А простым mov ebx, [id] разве мы не заполняем LOWORD????


    Вообще ни чего не пойму(( В фасме работает:
    Код (Text):
    1. invoke  PostMessage, eax, WM_COMMAND, (0 shl 16) or 401h, 0
    А как 401h на [id] поменять?


    зы... Ошибка заключалась в получении id всем спасибо, простити за лишние хлопоты...
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Иногда надо отправить сообщение родителю - без этого не работало бы ни одно диалоговое окно или меню.
    Т.е. - один этот факт - не говорит о неправильности проектирования.