when use a button on dialog, i get trouble
-
there is a button uses IDC_BTN1 on my dialog, I write it's OnClick() function like follow code: CMyDialog::OnBtn1Click() { m_bState = !m_bState; // remember whether the // button highlights; m_btn1.SetState(m_bState); // set the button's state } there is another button uses IDC_BTN2 on my dialog, the problem is when I click m_btn2, if m_btn1 still highlights, the OnClick function of m_btn1 will be called. This is not what I want. Someone may tell me how to prevent this from happenning again. thanks a lot:cool:
-
there is a button uses IDC_BTN1 on my dialog, I write it's OnClick() function like follow code: CMyDialog::OnBtn1Click() { m_bState = !m_bState; // remember whether the // button highlights; m_btn1.SetState(m_bState); // set the button's state } there is another button uses IDC_BTN2 on my dialog, the problem is when I click m_btn2, if m_btn1 still highlights, the OnClick function of m_btn1 will be called. This is not what I want. Someone may tell me how to prevent this from happenning again. thanks a lot:cool:
And what happens if you press the second button without pressing the first button before ? That is not logical that OnBtn1Click gets called only when the button1 is in another state. Are you absolutely sure that OnBtn1Click gets called (did you use your debugger to check if it was inside this function) ? Alos an easy way to check is to display two different message boxes in each of the handler.
-
And what happens if you press the second button without pressing the first button before ? That is not logical that OnBtn1Click gets called only when the button1 is in another state. Are you absolutely sure that OnBtn1Click gets called (did you use your debugger to check if it was inside this function) ? Alos an easy way to check is to display two different message boxes in each of the handler.
I write this code in OnBtn1Click(): TRACE(".......state is %x........\n", m_btn1.GetState()); when I click the other buttons, if m_btn1 highlights, debugger will types".......state is 8........". And I just find, need not click the other buttons, if I switch to other application window, while m_btn1 highlights, debugger will type same message also. It's strange.:confused:
-
I write this code in OnBtn1Click(): TRACE(".......state is %x........\n", m_btn1.GetState()); when I click the other buttons, if m_btn1 highlights, debugger will types".......state is 8........". And I just find, need not click the other buttons, if I switch to other application window, while m_btn1 highlights, debugger will type same message also. It's strange.:confused:
Post the code of the message map of your dialog class (the part that starts with
BEGIN_MESSAGE_MAP(CYourDialog, CDialog)
and finishes withEND_MESSAGE_MAP()
Post also the code for the OnBtn2Click handler function -
Post the code of the message map of your dialog class (the part that starts with
BEGIN_MESSAGE_MAP(CYourDialog, CDialog)
and finishes withEND_MESSAGE_MAP()
Post also the code for the OnBtn2Click handler functionBEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_BN_CLICKED(IDC_BTN1, OnBtn1Click) END_MESSAGE_MAP() There is no code for m_btn2 I find something new, I am sure it because focus, when m_btn1 lost focus, if it hightlights, OnBtn1Click() is called. But I don't konw how to prevent it. My code is very simple, you may create a dialog application and put 2 buttons on dialog, I think you will find the same thing.;)
-
there is a button uses IDC_BTN1 on my dialog, I write it's OnClick() function like follow code: CMyDialog::OnBtn1Click() { m_bState = !m_bState; // remember whether the // button highlights; m_btn1.SetState(m_bState); // set the button's state } there is another button uses IDC_BTN2 on my dialog, the problem is when I click m_btn2, if m_btn1 still highlights, the OnClick function of m_btn1 will be called. This is not what I want. Someone may tell me how to prevent this from happenning again. thanks a lot:cool:
Why are you calling
m_btn1.SetState()
? If you're wanting a button that is alternately on and off, use a checkbox with the push button style. Windows will then take care of the button state automatically.Ryan
"Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
-
BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_BN_CLICKED(IDC_BTN1, OnBtn1Click) END_MESSAGE_MAP() There is no code for m_btn2 I find something new, I am sure it because focus, when m_btn1 lost focus, if it hightlights, OnBtn1Click() is called. But I don't konw how to prevent it. My code is very simple, you may create a dialog application and put 2 buttons on dialog, I think you will find the same thing.;)
What does the project's resource.h file look like? When was the last time you did a rebuild-all?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"We will be known forever by the tracks we leave." - Native American Proverb
-
there is a button uses IDC_BTN1 on my dialog, I write it's OnClick() function like follow code: CMyDialog::OnBtn1Click() { m_bState = !m_bState; // remember whether the // button highlights; m_btn1.SetState(m_bState); // set the button's state } there is another button uses IDC_BTN2 on my dialog, the problem is when I click m_btn2, if m_btn1 still highlights, the OnClick function of m_btn1 will be called. This is not what I want. Someone may tell me how to prevent this from happenning again. thanks a lot:cool: