Поиск:

Ответ в темуСоздание новой темы Создание опроса
> маска 0х0004 для GetState(), не хочет работать 
:(
    Опции темы
interesuuwiysia
Дата 22.2.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть значит у меня кнопочка button_1, с ней связана управляющая переменная типа CButton по имени m_button1. Создал функцию OnSpeedIncrement() которая запускается при одиночном щелчке мышкой на кнопочке. Так же можно обработать событие типа"двойной щелчок".
А вот как обработать событие типа кнопка нажата и удерживается (highlight). В MSDN наткнулся на уже изрядно мне надоевшую функцию GetState() с маской 0х0004. Но вот как этим воспользоваться так, чтоб узнать нажата и удерживается кнопка button_1 ???
Пытался делать так:

void CS1Dlg::OnSpeedIncrement()
{

int abc = m_button1.GetState() & 0x0004;
char string[10];
itoa(abc,string,10);
m_text.SetWindowText(string); // если выведет не 0, то кнопка удерживатеся

}

но это не правильно, так как я пытаюсь проверить удержание кнопки внутри функции, вызов которой является результатом одиночного клика по этой самой кнопке!

Короче, я нифига не пойму как воспользоваться ф-ей ГетСтэйт() для конкретной кнопки!!!!

PM MAIL   Вверх
Dreamer_0x01
Дата 22.2.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



можно попробовать так.

в СS1Dlg переопредели PreTrunslateMessage, и необходимые действия производи оттуда. То есть для начала, чтобы проврить работоспособность кода, ты можешь вообще не привязываться к конкретным сообщениям, а запихать туда такой код:
Код

int abc = m_button1.GetState() & 0x0004;
if(avc)
{
/*делаешь нужные тебе действия*/
}


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


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Earnest
Дата 22.2.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Проще всего повесить эту проверку на WM_TIMER.


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


Новичок



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

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



2 Dreamer 0x01: если тебя не затруднит - стукнись в асю: 299131523
PM MAIL   Вверх
interesuuwiysia
Дата 23.2.2006, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я последовал совету старшего товарища и сделал вот так:

Код



BOOL CS1Dlg::PreTranslateMessage(MSG* pMsg)
{
    switch (pMsg->message)
    {
        case WM_LBUTTONDOWN:
        {
            
            while (m_button1.GetState() & 0x0004)
            {
                UpdateData();
                m_speedinputfield_value++;
                UpdateData(false);
                Sleep(250);
            } 
            
            
        }
    }
    
    return FALSE;
}


Но всеравно я не могу добиться того, чтобы значение переменной m_speedinputfield_value инкрементировалось раз в четверть секунды, при зажатой кнопке button1!!!
Эта m_button1.GetState() & 0x0004 - не работает!!!!! Или я что-то не то делаю? Она вообще с этой маской используется для PushButton?
PM MAIL   Вверх
Coocky
Дата 23.2.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Ну намудрили.... smile
Код

void MyButt::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    GetParent()->SetWindowText("Нажата");
    CButton::OnLButtonDown(nFlags, point);
}

void MyButt::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    GetParent()->SetWindowText("Отпущена");
    CButton::OnLButtonUp(nFlags, point);
}




Это сообщение отредактировал(а) Coocky - 23.2.2006, 14:23


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 23.2.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(interesuuwiysia @ 23.2.2006, 01:18 Найти цитируемый пост)
Эта m_button1.GetState() & 0x0004 - не работает!!!!!

Все работает smile
Возвращает ноль,если не нажата(утоплена), и ОТЛИЧНОЕ от нуля значение, если утоплена
Добавлено @ 14:44
Просто поймать ее методами нажатия и отпускания с GetState()-не возможно smile
Делай, как я написал smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 23.2.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Вот лови, тренируйся. smile
Написал сходу

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  test2.rar 44,49 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
interesuuwiysia
Дата 25.2.2006, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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