Pages: 1 2
Scenario
Suppose you have designed a dialog that are having a lot of controls, and you made it look perfect. Now your client says: “Oh, The font looks a bit small. Can you enlarge it a bit and keep up the same look and feel?”. So, what’s the big deal lets change the font size. OK, Changed? So what do you see? The size of the dialog including all the controls in it has changed according to the font size and everything got bigger. Now maintaining the same font size, you will need to resize and re-position all the controls in it one by one, which is really a hard thing.
Reason
Well, whats the reason behind this? Your resource file (.rc) uses something called dialog units to specify the position and size of the controls. This thing is completely dependent on the font size you set to the dialog, and that is the reason for the size of each control in the dialog even though there is no text in the same. ( refer the msdn doc: http://support.microsoft.com/kb/145994 to get a better understanding about dialog units)
Solution
One solution is to do all things dynamically, that is using SetWindowPos function to set the correct position and sizes in pixels. But that too is hard as if you already designed it. So I decided to create an application that parse your resource code block, identify the control co-ordinates and convert them in such a way that there will not be a size change according to the font size. All you have to do is:
- Run the application
- Input the previous font name and font size, the new font size and font name
- Open the resource file that has the code of the dialog
- Copy the code starting from the line below “BEGIN” statement up to the previous line of “END” statement
- Click “Convert” button, and you can see the co-ordinate adjusted code on the edit window on right side.
- Replace it to the resource file after comparing the original version (ideally using beyond compare).
[Contd. See next page]