win32 resource file help
on this website, under the "Edit Control" title, there are a couple of lines of code like this..
case WM_CREATE:
hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
50, 50, 150, 20, hwnd, (HMENU) ID_EDIT,
NULL, NULL);
hwndButton = CreateWindow(
TEXT("button"), TEXT("Set Title"),
WS_VISIBLE | WS_CHILD,
50, 100, 80, 25,
hwnd, (HMENU) ID_BUTTON, NULL, NULL);
break;
I know that this method of creating buttons and such are done on the fly, But I was wondering how you would do it without doing it like this, instead using a resource file?. In the Forgers Win32 tutorial it shows how to make a menu using a resource file, and how to describe a dialog box etc, But I cant seem to put any controls on the main(parent) window using a resource file??.
for example I have 开发者_开发技巧the following .rc file
#include "resource.h"
ID_MENU MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "E&xit", ID_FILE_EXIT
END
POPUP "&About"
BEGIN
MENUITEM "&Information", ID_ABOUT_INFO
END
END
ID_ABOUT_INFO DIALOG DISCARDABLE 0,0,250,250
CAPTION "Information"
BEGIN
CTEXT "some text",ID_BLA,15,15,144,33
END
//this is all fine but how do I decribe the main window?, instead of the menu and dialog boxes?.
How do I describe the main window instead of creating things on the fly?. Is there some kind of keyword?
You can create a dialog as your main window.
If you are using MFC in Visual Studio, use the project wizard to create a Dialog-Based app.
(File -> New Project -> Visual C++ / MFC -> MFC Application -> OK -> Application Type -> Dialog based.)
The generated application will then create your main dialog for you, and exit when it closes.
A simple example of such a beast, including source, is here:
http://www.pretentiousname.com/ICFRanger/index.html
If you are using straight Win32, you'd create the dialog using CreateDialogParam (or similar) and then show it like any other window, and run a message loop. (Or you could use DoModal, which runs its own message loop, but beware that modal dialogs need to behave slightly differently, especially when it comes to closing.)
A simple example of that, including source, is here:
http://www.pretentiousname.com/setpoint_aon/index.html
(Those are both programs I wrote, but very simple ones, so there's not much to get in the way of understanding what they do.)
TheForger has added all his example code in a zip file, you can download them and check it out.
You still need to create the window, TheForger does this as well, but then he includes the icons and menus in the WNDCLASSEX
struct which is passed to the window that is to be created. This is then collected from the resource file (.rc file) via the resouce.h file.
MSDN has a section about resource files as well, and as you can see
Resources can be composed of a wide range of elements, including interface elements that provide information to the user (for example a bitmap, icon, or cursor); custom resources that contain data an application needs; version resources that are used by setup APIs; and menu and dialog box resources.
The main window(s) are not mentioned.
At the API-level, consider functions like CreateDialog
.
It's not more complicated than that.
Although a dialog as main window has some problems, especially in MFC (which treats it specially).
Cheers & hth.,
You can design a window like it was a dialog and put it in your resourcefile .Then use the FindResource and LoadResource functions to get a pointer to a DLGTEMPLATE ,which contains all the dialogs layout which you can use to size you own window and place controls at the positions you defined in the dialog (It's not easy though to interpret the DLGTEMPLATE). Don't forget to free the pointer to the DLGTEMPLATE.
Use CreateWindow and the various predefined classes. If you were to create a button you would use the class "BUTTON" set the style WS_CHILD|WS_VISIBLE and set the window procedure to NULL.
精彩评论