Caption bar not being repainted in MFC - visual-studio-2012

Alright, I'm using VS2012 with MFC in Windows 8 and I'm having a problem.
Let's say I have a very simple dialog in my application. When I click on a different window (for example on the Taskbar), the caption bar color indicates that the dialog is still focused!
This problem happens in several cases. For example, when I use CFileDialog to select some files, after closing the dialog, caption bar color indicates that the dialog is still inactive while it's automatically focused after closing the open dialog!
Now let's say I have two dialogs in my application. Dialog A is my primary dialog and I use a button to show modal dialog B. In standard applications, if I click on dialog A, dialog B caption bar flashes. This doesn't happen in my application and I think it's because of a bug in MFC.
Any ideas how to fix this problem?

Related

Coded UI Test Builder not recognizing buttons on the pop-up window

When I click the crosshairs icon on the Coded UI Test Builder and drag it over to the pop-up window buttons (Run and Cancel), it is unable to locate and find the Properties of them on the pop-up window.
Does any one know how I can know the properties of the Run button on the pop-up window?
That window appears to be a Java window, which is not supported by Coded UI.
You may be able to extend your tests to interact with the Window:
https://blogs.msdn.microsoft.com/gautamg/2010/01/05/1-introduction-to-coded-ui-test-extensibility/
Alternatively, if you can detect if the window is present, you may be able to emulate the keypresses required to dismiss/approve the window (e.g Enter, or Tab + Enter). Or, if the window's location is predictable, emulate a click at the desired location.

Hide mainform only and keep it in taskbar

I have a main form being the parent of x number of ToolWindows. I would like to hide the main form but keep it in the taskbar.
When I set the main form's Visible = false, it hides and keeps the ToolWindows visible, so far all good. But the icon in the taskbar disappears too.
I want to hide the main form, keep the ToolWindows visible AND keep the Taskbar icon so I can bring the main form back again.
By default, Application.MainFormOnTaskbr is set to true, which means the MainForm owns the Taskbar button. When a window is on the Taskbar, it is not possible to show/hide the window without affecting its Taskbar button accordingly. You have three choices:
Set Application.MainFormOnTaskbar to false, so the Application window owns the Taskbar button instead of the MainForm. Not advisible on Vista+, as ShowMainFormOnTaskbar was introduced to address UI issues in Vista onwards.
Create another window that has its own Taskbar button. You can use a similar technique that TApplication uses for its window.
Don't hide the MainForm, thus its Taskbar button will not hide. Move the MainForm offscreen, or resize it, so the user cannot see it but Windows still can.

How to click on radio button which is on Popup using Coded UI

I m automating a page where there is a popup and on that there is radio button and a submit button, when i click on radio button my test fail giving error that hidden object cannot be performed action like click but its visible (not hidden) where as when i click on submit button on same popup is click. i have checked its properties but there is nothing which i can change it just have simple id,name,value which is changing dynamicly and for that i have even used regex
please help me out
Thanks
It's possible that there is another radio button on the page with similar properties. Is this a recorded object? Is the popup window listed as the parent?
Can you post the Regex you are using, the control's properties, and the properties of the popup window?
if your are using IE whose version is > 9.0.19 then there was a patch release by Microsoft to overcome this issue
http://blogs.msdn.com/b/visualstudioalm/archive/2013/09/17/coded-ui-mtm-issues-on-internet-explorer-with-kb2870699.aspx

Keep taskbar icon, replace MFC dialog

I have a MFC dialog based application. User can change the language of the dialog, and I made this by closing existing dialog, and opening another with changed language. The problem is that the effect in the taskbar is that one icon is removed, and another identical is created in its place. If my application's icon is not the last icon in the task bar it will be perceived as it was moved to the end of taskbar icon set.
I want to retain icon's position in the taskbar, and rather to prevent icon flicker at all from happening. How do I do that?
The application must support OS'es from Windows XP to Windows 7.
EDIT: alternative question for which I would accept an answer is how to create an invisible window that is nevertheless shown in the taskbar, and how to forward relevant window messages from that window to my main window?
Make the dialog a child of another outer parent window. The parent can be a dialog or any other kind of window; all it will be providing is the title bar. If the user tries to resize it it will have to forward resizing commands to the dialog, but otherwise you shouldn't need to do much in the parent window.
Why not replace the dialog with a CFormView instead? That way there's a frame window that wraps around the dialog (which is embedded in a form view) and it's the frame window that owns the taskbar icon.
Create an SDI application that displays a CFormView. Display the dialog in the default language (or whatever langauge the user previously chose) on initialization. When the user chooses the 'change language' option, simply change the form view that's being displayed with a new one.
Bonus feature: with this design, the framework will take care of things like language-specific accelerators and menus for you with no effort on your part.
For more on how to do this, check out http://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c3341/Multiple-Views-Using-SDI.htm

how can i add mouse down event on picture control in vc++

i want indentify all mouse click event like WM_LBUTTONDOWN and WM_LBUTTONUP, on picture control in vc++,
but i am not able to do this
please tell me how can i identifies all events separately.
thanks in advance.
You should enable property "Notify" of PictureControl to get the event.
You can add an event handler to the picture control using Visual Studio IDE and modify the code for handler function. That should be easy.
I'm guessing you're using MFC. In that case you have to add an activex control to your dialog.
i. Adding the control: To add such a control to your dialog box right click your dialog box and click the option called "Insert ActiveX Control". A modal dialog box appears. You have to select "Microsoft Forms 2.0 Image". Click OK. Control is added.
ii. Select an image: Right click your newly added control and select "Properties". Select your desired image clicking the picture attribute. Also there are other properties to customize the picture i.e, stretching, clipping image etc. You'll see your image is loaded into the control.
iii. Adding the handler function: Right click the control and select "Add Event handler". From the new modal dialog box select "MouseDown" or "MouseUp" as message type and click "add and edit". Add your code to achieve desired behavior.
N.B: MFC is not available with Visual C Express. You need a professional version of VS to compile MFC code.

Resources