Solved

Dialog resource to MFC code utility

Posted on 1998-04-01
11
613 Views
Last Modified: 2013-11-25
(rephrase) Does anyone know of a utility which can convert text from a .RC file (defining a dialog and its controls) to the equivalent MFC code?  

In my application I want to create a dialog on-the-fly (dynamically?), with a number of controls, instead of placing it in the resource file.  However, to actually design the dialog I would like to use Developer Studio, where I can size/position everything visually.  

Developer Studio creates a .rc file.  I would like something that can read that .rc file, and dump out the corresponding MFC code that would create the same dialog.

eg.  Translate (from the .rc)
     PUSHBUTTON "Cancel",IDCANCEL,205,75,50,14

     to
     button.Create( "Cancel", ... ) ;

     OR to a DLGTEMPLATE structure

I would then stitch this code into my application, and the dialog would be created while the application is running.

Hope that makes sense.
0
Comment
Question by:trwest
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 23

Expert Comment

by:naveenkohli
Comment Utility
Hi Buddy,
I have a question? What do you mean by creating at run time? Cause this is bit confusing.

0
 

Author Comment

by:trwest
Comment Utility
Edited text of question
0
 
LVL 4

Expert Comment

by:piano_boxer
Comment Utility
If U whant to use DevStudio to position and size control. Whats the meaning of translating that to code instead of just creating the dialog from resource.

Do you whant to modify the dialog controls at runtime ???

Creating a dialog from a resource definition is actually the same 'dynamic creation' of the dialog, as you would get by tranlating the resource into code.

0
 
LVL 11

Expert Comment

by:mikeblas
Comment Utility
If you want a DLGTEMPLATE structure, just get it: call LoadResource() on the dialog resource. Then, call LockResource() and you'll have a pointer to the DLGTEMPLATE structure.

.B ekiM

0
 

Author Comment

by:trwest
Comment Utility
No, no no no NO!
I do NOT want to include the dialog in a resource file.
Otherwise, I would just do it!
The only reason I want to use Developer Studio is so I can layout the dialog's controls visually (instead of figuring out x,y's in dialog units).
I want to create the dialog RUN-TIME.  That means:  beforehand, the application (including the resource file) does not know anything about the dialog.  It is not the same as "creating a dialog from a resource definition", because I don't want the resource definition there in the first place.

So, to reiterate, does anyone know of a utility to convert a dialog from a resource file into MFC run-time code.

I'm beginning to think not.

0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 11

Expert Comment

by:mikeblas
Comment Utility
No reason to get testy: I was just answering the question as you asked it. One way to translate a RC file to a DLGTEMPALTE structure is using the resource compiler and the APIs I mentioned in my response.

Anyhow, I don't know of any such utility. But it seems like you should be able to write one in an afternoon or two.

But, now I'm curious: hardcoding calls to create window to build your dialog is going to be slow at runtime. And it's going to result in a lot of code. You'll find that the same dialog in a resource is much smaller and creates faster.  Why would you want to not use resources?

.B ekiM


0
 
LVL 10

Expert Comment

by:RONSLOW
Comment Utility
I agree with .B ekiM .. there seems to be little point in creating a dialog in code (from a dialog template) when it can be created from a dialog resource.  I could imagine there being some use in that if the dialog template were being created modified before the dialog is created for it .. but you even say that just generating the Create calls would do.

This all seems a bit odd.. perhaps if you tell us WHAT you are trying to achieve from a broader perspective, then we can offer a better solution.

Regarding the utility, it shouldn't be hard to write a little program that prompts for a dialog resource ID and a EXE or DLL.  It then loads the resource from that DLL or EXE, loads and locks the dialog resource to get the dialog template, and save the template data out to a file.  Then your other program can read in the generated dialog template and create a dialog from there.

But what is the point???

Perhaps we're missing something here?


0
 

Author Comment

by:trwest
Comment Utility
I don't want a better solution, I just wanted to know if there was such a utility!! :-)

I have since realized, by lack of response to the question, that such a utility either does not exist, or at least is not known of.  In the mean time, I have created a class which will do the job for me.  

I know there are alternative ways (and probably better ways) to accomplish dialog creation, but the fact remains that this is the way I wanted to do it.  I want ONE portable dialog and it seemed overkill to create and distribute a .DLL for it.

By posting a quick question to a broad group of people I was hoping someone would save me the 1/2 day by saying "oh yeah, here's one".  But I've spent more time trying to justify my question than I would've spent just writing the utility! :-)

Thanks, anyways.

0
 
LVL 10

Accepted Solution

by:
RONSLOW earned 100 total points
Comment Utility
I am still interested in knowing what on earth you are trying to do here.  The code for generating the dialog would be much bigger than and slower than for just including the dialog resource.

I think I can speak for the other experts in that we think you may have a misunderstanding about the way dialogs and resources work.  We would like to be able to help you find a better and more efficient way of doing things, because the way you are suggesting seems to offer no advantages at all.

Anyway, if you do want such a utility, then have a look at (I'm not sure if this is what you want, but it sounds possible ??)

http://w1.2516.telia.com/~u251600285/wiz/

This is what it says about itself...

>>
A code generating tool for the Windows C developer. Standard RC (resource) files is used as input for generating dialog code, SDI or MDI Windows and more. The philosophy of SW is to get a flying start to building your C application. SDI frames can contain list box, list view, tree view and more. When making dialog code, Source Wizard will typically generate about 70 % of the code. You have an option to use the dialog as the main window. In this case, no source editing will be needed to compile and run the application.
>>

download from:
http://w1.2516.telia.com/~u251600285/wiz/srcwiz.zip

0
 

Author Comment

by:trwest
Comment Utility
The Source Wizard is C and not C++ but it is the kind of thing I was looking for.  Except I don't need it anymore.

And what on earth am I trying to do?
Okay <deep breath> we already have a static library that we share across several applications.  Instead of spending the time to turn it into a .DLL (into which I could embed resources), I wanted to add my dialog to the static lib.  The only way to do that is to create the dialog in code.  No resource file at all.  And we didn't want to cut and paste code from the .rc file, nor did we want to go through the "multiple resource files in your project" hell.  We were _hoping_ for the easy approach.

I took a quick look around the 'net to see if there was a utility to help me out (if I found one, it _would_ be easy).  But alas, no such beast.  Eventually I found a sample (from Developer Studio, no less) that creates dialogs by setting up a DLGTEMPLATE structure and everything in it.  I turned that into a class, and it's case closed.

But thanks for finding that link for me.  Who knows, it may yet come in handy -- especially if he converts it to MFC! :-)

0
 
LVL 10

Expert Comment

by:RONSLOW
Comment Utility
You can simply use a #include to include from another resource file (you add it to the list of include file for the resource.  It would take very little effort to set this up (much less than what you have spent on this exercise).  You can even use the .rc2 file to do this and have it #include your common dialog resource.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
countEvens challenge 2 55
fizzArray2 challenge 1 55
dialer.exe 4 51
Detect file exist or not 3 76
Introduction: Hints for the grid button.  Nested classes, templated collections.  Squash that darned bug! Continuing from the sixth article about sudoku.   Open the project in visual studio. First we will finish with the SUD_SETVALUE messa…
With most software applications trying to cater to multiple user needs nowadays, the focus is to make them as configurable as possible. For e.g., when creating Silverlight applications which will connect to WCF services, the service end point usuall…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now