edit+msctls_updown32

Тема в разделе "WASM.HEAP", создана пользователем dr_dred, 19 авг 2005.

  1. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    Вот начал изучать Property sheet. Решил написать программку для изменения некоторых параметров стиля оформления. Сделал в ресурсах один edit и один msctls_updown32. Но вот чудо! Они объединились в один элемент! И теперь вместе интереснейшим образом работают! Пробовал тоже самое сделать с DialogBoxParam'ом, ан нет, это работает только в Property Sheet (возможно я что-то упустил). Почему так?

    [​IMG] _80976523__sysinfo.zip
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Может сюда порыть:

    UDM_SETBUDDY

    UDS_AUTOBUDDY

    Должно с любым окном работать, не только Property sheet
     
  3. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    cresta

    А как установить пределы чисел? И что-то up и down перепутаны. Как исправить?
     
  4. cresta

    cresta Active Member

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



    2.Почему ж перепутаны? Нажатие нижней кнопки уменьшает число, верхней - увеличивает. Если не нравится, можешь отслеживать изменения в едите и корректировать по своему.
     
  5. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    cresta



    У меня наоборот почему-то получилось. Но UDM_SETRANGE все исправил.

    Какой самый простой способ узнать, изменилось ли значение edit'а? Неужели надо сверять его со старым?
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    вообще-то практически любой контрол посылает своему родителю те или иные сообщения, которые описывают в т.ч. и действия юзера, например нажатие кнопки. Если почитать msdn, можно найти в нём много интересного, например, что за сообщение такое UDN_DELTAPOS, и когда и кому оно посылается.
     
  7. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    cresta

    UDN_DELTAPOS смотрел. Оно посылается, когда значение хочет измениться. Даже если уже предел, член delta не равен нулю. Можно WM_HSCROLL | WM_VSCROLL, но тоже контролировать нужно значения. Вот думал, как попроще это делать.
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Position and Acceleration

    ...

    To retrieve the current position of an up-down control, use the UDM_GETPOS message. For an up-down control with a buddy window, the current position is the number in the buddy window's caption. Because the caption may have changed (for example, the user may have edited the text of an edit control), the up-down control retrieves the current caption and updates its current position accordingly.

    ...

    The UDM_SETPOS message sets the current position of a buddy window. Note that unlike a scroll bar, an up-down control automatically changes its current position when the up and down arrows are clicked. An application, therefore, does not need to set the current position when processing the WM_VSCROLL or WM_HSCROLL message.



    You can change the minimum and maximum positions of an up-down control by using the UDM_SETRANGE message. The maximum position may be less than the minimum, and in that case clicking the up arrow button decreases the current position. To put it another way, up means moving towards the maximum position. To retrieve the minimum and maximum positions for an up-down control, use the UDM_GETRANGE message.
     
  9. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    rmn

    Энто ясно. Как за изменением содержимого едита следить?
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dr_dred

    EN_CHANGE?
     
  11. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    q_q

    Тоже так думал, но если пробел нажат? Все равно приходится с исходным значением сверять.
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    dr_dred

    Пробел - изменение.



    Зачем вообще следить за edit'ом?
     
  13. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    q_q

    А зачем


    Нашел выход. Нуно просто стиль у едита поставить, чтобы цыфры только пускал и использовать вышеприведенное сообщение.