Visual Studio dialog editor not using square dimensions - c++

So, I'm busy making a model viewer, I'm trying to get my dialog properly setup, and get my openGL view ports squared ( I'm using picture box controls for it ), one big problem. Visual studio doesn't allow me to set the the size manually, I can't see the actual pixel size. I can only see it in the bottom right corner of the screen but that's in dialog units not in pixel units and somehow that screw up terribly..
Look here for example, that selected thing should be a square according to visual studio, you can see in the bottom right corner it says "170 x 170" but you can clearly see it's nowhere near square, I can even test it by running my application, the openGL render gets squashed up and doesn't look right cause of the thing not being squared:
Screenshot:
http://i42.tinypic.com/xpsepf.jpg
Because I can't set it by hand I can't get it right.. I've also tried opening/editing the .rc in other resource editors but visual studio saves it with it's own type of compression which makes any other tool unable to open the file, I've tried ResourceHacker, ResourceTuner, Restorator, XYExplorer and even the WinASM resource editor which I used for my previous model viewer, all are unable to open the file.
Does anybody have an idea or know about an option in visual studio so I can see it's width and height..? I can if I make a dialog in WinASM studio for example.. VisualStudio should support this.

The resource editor works in DLU ( Dialog Logical Unit), not in pixels.
see this other question (and links included) : MFC Dialog Size Question
Max.

Related

Adjust Scroll bar width in visual studio community edition 2017

Can someone shed light on how I can adjust the width of the scroll bars in Visual Studio. I mean the actual IDE itself and not code to do this in an application.
I have already adjusted the width of the windows explorer scroll bars (Windows 10) but this has no effect in the VS IDE.
Thanks in advance
Tony
An image of what I mean.
You can turn on the map view for vertical scrollbar in all languages settings. But it's scroll pace is different depending whether the current block is folded or not which is a little uncomfortable to use. So the quickest and smartest way in my opinion is to use the RockMargin extension. Works exactly like Sublime or VS Code minimap.

MFC picture control changes size when DPI awareness disabled or running on Win7

I made an MFC app for my friend using VS2015 in Win10. It looks like this, which is exactly the same as in resource editor.
.
But when he ran the app on his computer in Win7, the Bitmap image in Picture Control enlarges and covers up some text boxes below, which looks like this.
.
After I searched and realized it may be related with DPI awareness. I disabled DPI-Awareness in property page of Manifest Tool and rebuilt. The same thing happened even when it runs in Win10.
Could someone help me explain the cause of this and find a solution to fix the size of the image control? Thanks.
The main problem is that a dialog from a resource is always measured in DLUs.
And DLUs are calculated from the size of the font, that is used for the dialog.
See this article how dialog base units are calculated.
Now you have a static picture control that is sized in DLUs. The bitmap is just scaled in pixels and is never resized, when you assign it to a static dialog control. And because the real size of the static control depends on the used font, you get different layouts for your dialog and your bitmap.
And because just the font changes when you choose no DPI awareness and because the font changes from windows version to windows version your dialog always look different.
Advice: Paint you picture your own and stretch it accordingly.
Also this stackoverflow question is nice documents and shows the effect of DLUs.
And here some code for auto sizeing picture controls.
An auto-sizing bitmap picture control
A simple image preview class using GDI+
CxImage
Normally, I prefer to keep control in my hand by using SetWindowPos() to set the size of image I want in different situations. You can use below two lines to control/set position and size of your image.
Assume ID of the Picture Control is IDC_STATIC2 then you can use like:
CStatic * pStatic = (CStatic *) GetDlgItem(IDC_STATIC2);
pStatic->SetWindowPos(NULL,20,20,50,50,0);

How to change button color?

I am developing a GUI application using Embarcadero VCL c++ IDE for windows OS. As part of this project, I have to change color of button with respect to an external state.
I understood that windows32 API will not allow to change the color of button.
Could you please suggest me, how to change button color?
Do you wish to change the background-colour of the button, or the text-colour of it?
Since windows has used visual themes for some time now, if you have commctrl loaded and include a manifest file, the button will be drawn using the default (current) theme.
Options I can see include (a) custom-drawing the background (b) changing the text-colour in the normal draw process (c) drawing the button without a theme (i.e drawing a 'flat' button).
You could simply draw a bitmap-button, changing the bitmap depending on the state of the button. You could also use a single bitmap, tinting it using the HSL or HSV colour-space, depending on the state.
As for the flat type of button, I think you can probably change it's background-colour in much the same way as you can change the colour of the text - by intervening during the standard draw process and changing the colour from 3D_FACE (or whatever it is, I forget) to whatever you'd like.
If you look at the calculator included with windows XP, you can see an example of changing the text colour.
CodeProject.com likely has a stack of articles that would help in this endeavour. :)

Icon with different resolution in MSVC2010

ALL,
I am making an application where I need to use an icon.
I have 2 icon files: myicon-16.ico and myicon-32.ico. First has resolution 16x16 and second - 32x32.
Now when I opened MSVC 2010 project (C++) I see that the default icon file has 2 icons combined, i.e. it has a resource for 16x16 and 32x32 in one file. What I mean is when I open the resource file in Visual Studio solution and click on the standard icon I see many different resolution for the icon. And I can select each and the bitmap (icon) will be displayed with an appropriate resolution. But when I open the rc file in the text editor I see only 2 lines: one with my own icon and one with the standard icon "IDI_SMALL".
What I need to do to make the same thing with my 2 files? What I want is when I open resource file in VS and click on my icon resource I want to see 2 icons with 16x16 and 32x32 resolutions. AFAIU, I can only place an additional icon resource in the rc file. Or I am wrong?
Please advise.
You can use VS2010 to add additional image types in your ico file. Just open an ico file with VS2010. Say, open myicon-16.ico. You will see just one icon there - 16x16. Now open menu Image->New Image Type (or use right click->New Image Type, or use keyboard shortcut Ins). You will be presented with a choice ranging from 16x16 1 bit to 128x128 24 bit. Just insert as many as you like.
For your case you need to insert an empty 32x32 into myicon-16.ico, then copy and paste from your 32-pixel file.
On the side note. Who draws the icons nowadays. Just google free icons, and you will find tons of icon libraries on the Internet with sizes from 16x16 to 256x256 png.
Yes, you need to combine your images into one ICO file that has all the data.
From Wikipedia:
ICO files contain one or more small images at multiple sizes and color
depths, such that they may be scaled appropriately.
There are many image editors that can do this, personally I've used GIMP to create multi-layered png files, and then save as .ico to get the final result.
You also should be able to right click in the list of image sizes in VS2010 and then click "New Image Type" to add different resolutions within the built in ICO editor. You can then copy and paste your image data from another editor into Visual Studio.

How can I make my C++ ActiveX control print nicely in Excel?

I am trying to get my ActiveX control to print out nicely in Excel.
The control is written in C++. Originally I generated the control using the Visual Studio 2005 wizard. I have tested this with a simple wizard generated control to experiment with the OnDraw function and I discovered that even a control straight out of the wizard doesn't print well either. It appears to clip out a large portion of the control - which by default renders a black outline and some text in the centre.
The function IDataObject_GetData is called on my ActiveX control which in turn creates a metafile and renders to it.
Does anyone know how to get an ActiveX control to print out nicely? Alternatively links to useful information will be appreciated.
After much head scratching I figured out the solution to my problem.
The OnDraw function generated by the Visual Studio 2005 wizard sets up a clipping region by calling the function SelectClipRgn. It was this clipping setup that was causing ActiveX control to appear clipped when printed. Commenting out the code makes the ActiveX control print out perfectly. Commenting out the code doesn't appear to cause any other problems either - at least not in my case.
I can only assume that whatever coordinate system is used for clipping is not compatible with the coordinate system used when drawing to a metafile DC.
Here are some links to useful info that I found about printing ActiveX controls:
http://www.codeproject.com/KB/COM/officeatlprint.aspx
http://www.codeproject.com/KB/COM/WirgerPrintArticle.aspx
http://support.microsoft.com/kb/81497
http://support.microsoft.com/kb/84984