Unwanted radio button click
-
Hello, I have programmed a MFC utility with some radio buttons on the main window. When I click on a radio button the BN_CLICKED message is captured by the handler and does some task. I have seen an unexpected behaviour: when I open another window (hard disk explorer, control panel, speaker volume and also a generic folder) and then I close it, the radio button clicks even I haven't clicked the mouse on the radio button. I suppose that this is caused by my program's window that get the focus when I close the other window. How can I block this behaviour?
-
Hello, I have programmed a MFC utility with some radio buttons on the main window. When I click on a radio button the BN_CLICKED message is captured by the handler and does some task. I have seen an unexpected behaviour: when I open another window (hard disk explorer, control panel, speaker volume and also a generic folder) and then I close it, the radio button clicks even I haven't clicked the mouse on the radio button. I suppose that this is caused by my program's window that get the focus when I close the other window. How can I block this behaviour?
This behavior is, or at least used to be, by design. When [de]activating the window, the radio buttons do not know that. All they know is that they got focus, and the behavior for radio buttons is to auto-select on focus. See the
WM_SETFOCUS
message here."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
This behavior is, or at least used to be, by design. When [de]activating the window, the radio buttons do not know that. All they know is that they got focus, and the behavior for radio buttons is to auto-select on focus. See the
WM_SETFOCUS
message here."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
Ok, I have read the WM_SETFOCUS page and now I disable all the radiobuttons when the window lose focus. This works but it seems a strange solution to me. I wonder if there is a better way to solve the problem. I want to discard message from radiobuttons when they are launched by focus changes.
-
Ok, I have read the WM_SETFOCUS page and now I disable all the radiobuttons when the window lose focus. This works but it seems a strange solution to me. I wonder if there is a better way to solve the problem. I want to discard message from radiobuttons when they are launched by focus changes.
I just put together a dummy MFC app with four radio buttons, and an
ON_BN_CLICKED()
handler for each. With the app running, I open various other windows and then switch back to it, none of the four handlers are fired. Hmmmm"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
I just put together a dummy MFC app with four radio buttons, and an
ON_BN_CLICKED()
handler for each. With the app running, I open various other windows and then switch back to it, none of the four handlers are fired. Hmmmm"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
Dear David, they aren't fired because you switch from one window to another without have a focus on radiobutton. If you click on a radio button with the mouse the radio button gets focus: if you switch frome one window to another you will see that the handlers are fired. If you never click on radiobutton with mouse this doesn't happen.
-
Dear David, they aren't fired because you switch from one window to another without have a focus on radiobutton. If you click on a radio button with the mouse the radio button gets focus: if you switch frome one window to another you will see that the handlers are fired. If you never click on radiobutton with mouse this doesn't happen.
Nope, radio button had focus.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles