Проблема с кнопками
Мне нужно сделать чтото вроде спинера только с одной кнопкой.
Создал CButton кнопку и тут заметил проблему :
у кнопки есть таймер который в течении секунды после нажатия блокирует её.
Что здорово мешает изменять значения.
Вобщем люди добрые подскажите пожалуста как
отделаться от этого наказания.
у кнопки есть таймер который в течении секунды после нажатия блокирует её.
Чудеса какие-то...
При таком варианте:
{
int nm=GetDlgItemInt(IDC_EDIT1);
SetDlgItemInt(IDC_EDIT1,++nm);
}
мне даже не смотря на музыкальное образование не удавалось дважды нажать на кнопку так, чтобы значение edit'а изменилось на единицу.
Чудеса какие-то...
При таком варианте:
{
int nm=GetDlgItemInt(IDC_EDIT1);
SetDlgItemInt(IDC_EDIT1,++nm);
}
мне даже не смотря на музыкальное образование не удавалось дважды нажать на кнопку так, чтобы значение edit'а изменилось на единицу.
Мдааааааааааааааааааа
Мдааааааааааааааааааа
Что мда?
Что за таймер-то ты там раскопал, и кто его к кнопке приделал - непонятно.
Что за таймер-то ты там раскопал, и кто его к кнопке приделал - непонятно.
Дело принимает интересный оборот.
Кнопка создаётся от класса наследуюшего CButton
и при создании устанавливается BS_OWNERDRAW
Тоесть вот так:
[COLOR=darkblue]
m_bt.Create("Button"
,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW
,CRect(10,160,100,210),this,350);[/COLOR]
Именно при самостоятельной отрисовке проявляется этот таймер.
Дело принимает интересный оборот.
Кнопка создаётся от класса наследуюшего CButton
и при создании устанавливается BS_OWNERDRAW
Тоесть вот так:
[COLOR=darkblue]
m_bt.Create("Button"
,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW
,CRect(10,160,100,210),this,350);[/COLOR]
Именно при самостоятельной отрисовке проявляется этот таймер.
OK, теперь понятнее, таймер обнаружился :)
Мне кажется, что дело тут в том, что Button имеет
CS_DBLCLKS, и, похоже, нажатие при BS_OWNERDRAW
(WM_LBUTTONDOWN) обрабатывается несколько иначе,
чем без него, т.е. при BS_OWNERDRAW кнопка ждет,
вероятно, возможного второго нажатия...
Ну и рецепт борьбы со злом:
{
WNDCLASSEX sex;
sex.cbSize=sizeof(sex);
if(GetClassInfoEx(0,"Button",&sex)) //else - errors
{
sex.lpszClassName="MyButton";
sex.style&=~CS_DBLCLKS;
if(RegisterClassEx(&sex))
cs.lpszClass="MyButton";
}
return CButton::PreCreateWindow(cs);
}
Вроде, работает...
Или я опять чего-то не понял (По крайней мере,
на СЕКУНДНУЮ задержку полюбоваться не удалось)?