win32资源文件帮助

时间:2010-11-30 08:46:22

标签: c++ winapi resource-files

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;

我知道这种创建按钮等方法是动态完成的,但是我想知道如何不这样做,而是使用资源文件? 在Forgers Win32 tutorial中,它展示了如何使用资源文件创建菜单,以及如何描述对话框等,但我似乎无法使用资源文件在主(父)窗口上放置任何控件? ?

例如我有以下.rc文件

#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?.

如何描述主窗口而不是动态创建?是否有某种关键字?

5 个答案:

答案 0 :(得分:3)

您可以创建一个对话框作为主窗口。

  1. 如果在Visual Studio中使用MFC,请使用项目向导创建基于对话框的应用程序。

    (文件 - >新项目 - > Visual C ++ / MFC - > MFC应用程序 - >确定 - >应用程序类型 - >基于对话框。)

    生成的应用程序将为您创建主对话框,并在关闭时退出。

    这种野兽的一个简单例子,包括来源,在这里:

    http://www.pretentiousname.com/ICFRanger/index.html

  2. 如果你使用的是直接的Win32,你可以使用CreateDialogParam(或类似的)创建对话框,然后像任何其他窗口一样显示它,然后运行一个消息循环。 (或者您可以使用DoModal,它运行自己的消息循环,但要注意模态对话框的行为需要略有不同,特别是在关闭时。)

    包括来源在内的一个简单例子如下:

    http://www.pretentiousname.com/setpoint_aon/index.html

  3. (这些都是我编写的程序,但非常简单,所以没有太多可以理解他们的工作。)

答案 1 :(得分:2)

TheForger已将所有示例代码添加到zip文件中,您可以download them并将其检出。

你仍然需要创建窗口,TheForger也是这样做的,但是他包含了WNDCLASSEX struct 中的图标和菜单,这些图标和菜单被传递到窗口。创建。然后通过resouce.h文件从资源文件(.rc文件)中收集它。

MSDN还有一个关于资源文件的部分,如您所见

  

资源可以由广泛组成   元素范围,包括界面   提供信息的元素   用户(例如位图,图标,   或游标);自定义资源   包含应用程序所需的数据;   使用的版本资源   设置API;和菜单和对话框   资源。

未提及主窗口。

答案 2 :(得分:2)

在API级别,请考虑CreateDialog等函数。

这并不复杂。

虽然作为主窗口的对话框存在一些问题,尤其是在MFC(特别处理它)中。

干杯&第h。,

答案 3 :(得分:1)

你可以设计一个类似于对话框的窗口并将其放在资源文件中。然后使用FindResource和LoadResource函数获取指向DLGTEMPLATE的指针,该指针包含所有可用于调整窗口大小的对话框布局并将控件放在对话框中定义的位置(虽然解释DLGTEMPLATE并不容易)。不要忘记释放指向DLGTEMPLATE的指针。

答案 4 :(得分:1)

使用CreateWindow和各种预定义的类。如果要创建一个按钮,则可以使用“BUTTON”类设置样式WS_CHILD | WS_VISIBLE并将窗口过程设置为NULL。