I have many control on dialog box.
I added one push button on dialog box.
When I run my code newly added push button is in default state.
Following things i have done
I checked my source file if I have disabled it by code. but I didn't
disabled by code.
I have checked all property of button,disable is off there also.
I have replaced the id of newly push button with old push button. push button gets enable.
Is there a Chance that you disabled the button in the resource temaplte?
Launch the test mode of the dialog in the resource editor and check how ist state is set.
Related
I have a dialog with radio button with groups of 4 buttons.
DDX_Radio(pDX, D_RADIO_GROUPLEAD, intToStore) in DoDataExchange is there for saving and loading.
It works perfectly fine.
Selection changed, DoDataExchange called, stores and loads data no problem.
Problem occurs when I hide one of the radio button (hide it via ShowWindow(SW_HIDE). Let's just call it 3rd button for reference. And previously, the selection was this 3rd button.
I have logic that will automatically select the default one (one with Group flagged as true in the editor). I call the button's SetCheck(1).
Visually everything seems to be working.
However, when I click on 2nd button, then try to call DoDataExchange (hence DDX_Radio), it will causes debug assertion failure. (dlgdata.cpp Line 286)
AND
the data is not properly populated back in intToStore.
Why could this be and how can I avoid this issue?
Thank you.
The problem is, that the auto radio button stuff in Windows skips buttons that are disabled. In detail. You click on button 2 while button 3 is selected and disabled. Button 2 gets selected but button 3 is not unchecked.
The next problem occurs when DoDataExchange runs. It doesn't check if a button is enabled or disabled. DDX_Radio just loops over all radio buttons, and it find 2 buttons in the group are enabled. This causes the ASSERT. DDX_Radio don't care if a button is enabled or disabled.
My advice: Use a custom OnClick handle by yourself, and disable all other buttons manually.
Using MFC in Visual Studio 2012
I want to use a CMFCColorButton in a dialog in my application.
I added the CMFCColorButton button to my dialog in the resource editor (test it, works OK); click on the button and the underlying CMFCColorPopupMenu is display and stay displayed until manually dismissed (choosing a color or clicking somewhere else).
When I build my application and try the button in the dialog, it works differently, when I click the button, the underlying CMFCColorPopupMenu is displayed and immediately dismissed. If I want to select a color, I need to keep the mouse button down.
I tried in a different application (default MFC application) and I get the desired behavior (click and the CMFCColorPopupMenu stay visible).
I am not certain what could trigger the behavior difference.
I try toggling the CMFCColorButton::m_bAutoSetFocus value of the button and there is no change of behavior. ( I am not certain what is the purpose of this variable, but that is another subject)
Any ideas? hints/tips?
Thanks,
Max.
I have a C++ MFC MDI application. I have a tool bar with some buttons on it. I need to add some check boxes to this toolbar and i need them to have custom bitmaps just as my buttons do. Thanks
EDIT:
By bitmpas i refer to the pixel images that can be created using the tool bar editor in visual stuidos 2008. I would like a picture (of my creation) instead of the usual tick box.
You don't use checkboxes on toolbars.
You should rather use regular buttons in Check mode. That means that the button stays pressed when user releases it. Clicking it a second time releases the button. This is the same behaviour as a checkbox.
You can either set a toolbar button as checkable by code:
m_ToolBar.SetButtonStyle(nButtonId, TBBS_CHECKBOX);
Or by enabling the corresponding property in the resource editor.
If you want to modify the image displayed when the button is pressed, in your ON_UPDATE_COMMAND_UI handler, use m_ToolBar.GetButtonInfo() to check if the image matches the state. If not, change it using m_ToolBar.SetButtonInfo() and specify the index of an extra image added to the image list of the toolbar.
The following is a link which might help you
http://www.ucancode.net/Visual_C_Control/Place-Combo-Edit-Box-Progress-Control-On-ToolBar-CToolBar-VC-Example.htm
I have an textbox with onChange method and button to make some actions. But if I type some thing in textbox and not clicking any where , click that button, It calls onClick method and then onChange method.Or first onChange and then OnClick but I should disable all actions after that onChange method.
Add the check to your onClick() method. The onChange() for a text box is fired after a certain period of time or after you deselect your component. If you deselect your component by clicking on a button it sounds pretty natural to me to get the onClik first and then the onChange. There is no way of controlling (as far as I know) these events, except on server side.
Read this !
Keep in mind that you are developing a WEB application and not a Desktop Application. And event if the development of zk applications may look pretty similar to the desktop applications they are not and they have their limitations.
I found solution :
First for Textbox onFocus method I disable next button , and user cant click it.
Second for Textbox onBlure method I enable next button. (To be fired onBlure action user should click somewhere on window or press tab and this fires onChange action)
On main form I have TPageControl and on all of it's tabs I have corresponding Save buttons which are activated on Alt+S combination.
Of course, depending on which tab is opened at the moment, the handler for corresponding Save button should be called; but I get "cannot focus a disabled or invisible window" runtime error if I try to save with Alt+S.
And I've noticed that, the handler of a Save button from the tab which was active before the current tab, is called, but don't know why.
I tried putting Save buttons in panels (it worked fine for some similar problems), but still the same thing happens.
Cheers.
You could do it all with one button. In the OnClick handler, check which page is the current one, and call the saving function for that page.