Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spin Control + Edit Control, Форматирование строки в Edit 
V
    Опции темы
Kirow
Дата 15.5.2011, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2007

Репутация: нет
Всего: нет



В общем в чем суть... есть Spin Control, есть Edit Control, влепил в Edit Spin Control, добавил стандартный обработчик(который мне совершенно не понятен)
Код

void ClockDialog::OnDeltaposSpin2(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    // TODO: Add your control notification handler code here
    *pResult = 0;
}

И теперь по нажатию стрелок спина, у меня в Edit'e изменяются числа в поставленных мною рамках(1...10).(спин при этом стоит в режиме Buddy Integer)
Но, хотелось бы чтобы в Edit'e перед числом была еще и буква х.
Иными словами, как сделать чтобы в Edit'e отображались строки х1....х10 используя Buddy Integer?Либо как в обработчике проверять нажата ли кнопка вверх или кнопка вниз?
P.S. было бы не плохо объяснить мне что в обработчике вообще написано.
PM MAIL   Вверх
Earnest
Дата 16.5.2011, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



А в нем ничего и не написано - это пустышка, заготовка, которая ничего не делает.

Если эдит в режиме Integer, то вряд ли в нем будут отображаться всякие "x". Ты ведь не шестнадцатеричные числа имеешь в виду, а что-то типа умножения, масштаб? В любом случае, можно попробовать ловить уведомление эдита CN_UNDATE и немного менять строку. Или, еще лучше, делать все руками (разобраться, что там спин посылает эдиту).
Но вряд ли ты на данном этапе это сможешь, если просишь объяснить "что вообще здесь написано". Удовлетворись пока стандартным поведением, а потом, когда получше разберешься, сделаешь как хочешь.


--------------------
...
PM   Вверх
Kirow
Дата 16.5.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2007

Репутация: нет
Всего: нет



просил объяснить потому что нигде внятно не написано...распробовал все с помощью интелисенса и простых опытов.
решается все банально просто(хоть и немного не так как хотелось), просто нужно было найти где находится дельта в обработчике.

Объявил глобально интовскую переменную, убрал для Spin Control свойство Buddy Integer и дописал обработчик
Код

void ClockDialog::OnDeltaposSpin2(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    CString text;
    if(pNMUpDown->iDelta < 0 && multiplier < 10)
    {
        multiplier++;
        text.Format("x%d",multiplier);
        ed_multiplier.SetWindowTextA(text);
    }
    else if(pNMUpDown->iDelta > 0 && multiplier > 1)
    {
        multiplier--;
        text.Format("x%d",multiplier);
        ed_multiplier.SetWindowTextA(text);
    }
    *pResult = 0;
}

В идеале конечно было бы без глобальной переменной, а с включенным Buddy Integer и чтобы в обработчике считывало то что написано в эдите и дописывал к нему "х"(т.к. это избавит от двух проверок и 1 дополнительной переменной - экономия на лицо), но почему-то пока что не получается.


PM MAIL   Вверх
Earnest
Дата 17.5.2011, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Kirow @  16.5.2011,  13:21 Найти цитируемый пост)
но почему-то пока что не получается.

Скорее всего, когда Buddy Integer, эдиту добавляется стиль Integer (не помню как точно), который запрещает все кроме цифр.
Все у тебя нормально получилось, кроме глобальной переменной, но и ее можно убрать - сделай членом класса-диалога и все.

Какая экономия? Либо ты делаешь как тебе надо ручками, либо где-то во фреймворке стандартно, но суть примерно одинакова.
Ну проверки немного странно у тебя написаны (чуть-чуть избыточно), но это слезы...



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.