C++ win32资源文件帮助

C++ win32资源文件帮助,c++,winapi,resource-files,C++,Winapi,Resource Files,在网站上,在“编辑控制”标题下,有两行类似的代码 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( T

在网站上,在“编辑控制”标题下,有两行类似的代码

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中,它显示了如何使用资源文件创建菜单,以及如何描述对话框等,但我似乎无法使用资源文件在主(父)窗口上放置任何控件

例如,我有以下.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?.

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

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

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


    (文件->新项目-VisualC++/MFC -> MFC应用程序> OK >应用程序类型>基于对话框的.< /P> 生成的应用程序将为您创建主对话框,并在关闭时退出

    这类野兽的一个简单示例(包括来源)如下:

  • 如果您使用的是纯Win32,您可以使用(或类似)创建对话框,然后像其他窗口一样显示它,并运行消息循环。(也可以使用DoModal,它运行自己的消息循环,但要注意模态对话框的行为需要稍微不同,尤其是在关闭时。)

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


  • (这两个程序都是我写的,但都很简单,所以理解它们的功能没有什么困难。)

    福格已经将所有示例代码添加到一个zip文件中,您可以查看它

    您仍然需要创建窗口,Forger也会这样做,但是他会在
    WNDCLASSEX
    结构中包含图标和菜单,该结构会传递给要创建的窗口。然后通过resource.h文件从资源文件(.rc文件)中收集

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

    资源可以由多种资源组成 元素范围,包括接口 向用户提供信息的元素 用户(例如位图、图标、, 或光标);自定义资源 包含应用程序所需的数据; 所使用的版本资源 设置API;以及菜单和对话框 资源


    主窗口未被提及。

    在API级别,考虑像

    之类的函数。 没有比这更复杂的了

    虽然作为主窗口的对话框有一些问题,特别是在MFC(它专门处理它)中


    Cheers&hth.,

    您可以将窗口设计为对话框,并将其放入资源文件中。然后使用FindResource和LoadResource函数获取指向DLGTEMPLATE的指针,其中包含所有对话框布局,您可以使用这些对话框布局调整自己的窗口大小,并将控件放置在对话框中定义的位置(虽然解释DLGTEMPLATE并不容易)。别忘了释放指向DLGTEMPLATE的指针。

    使用CreateWindow和各种预定义类。如果要创建按钮,请使用类“button”设置样式为WSKYORKWSWAULL,并将窗口过程设置为NULL。< /P>文件>新项目> VisualC++/MFC应用> MFC应用程序> OK->应用程序类型>基于对话框。右,因此这是如果SL3NT使用微软Visual Studio。您确定他是吗?因为我找不到任何东西,这意味着他确实可以使用MFC。这几天还有什么?我想“如果你用的是MFC”part很好地限定了第一个建议,如果他没有使用MFC,则第二个建议适用。无论如何,编辑后明确提到VS,以防万一。你可能是对的。我也想到了MFC和Visual Studio,但我不知道sil3nt是否使用它。@sil3nt,你能启发我/我们吗?因为我被卡住了,所以我没有阅读第二部分值得投票。:)我想资源文件除了对话框外不能包含windows。@利奥·戴维森,这非常有用,谢谢。快速提问,我的按钮和窗口的整体风格看起来真的很像Win98,我只是在运行你的程序时才看到区别。这和款式有关吗?。(例如,与此相反,它看起来有点像+1,尽管这会将其限制为一个对话框。它们的处理方式是否与
    CreateWindow[Ex]
    创建的窗口不同?@Default:如果您要在API级别执行此操作,那么请获取Petzold的“编程窗口”副本.Re不同的处理方式取决于您的意思。在API级别,对话框只是一种您可以实现的窗口(类),您可以覆盖任何您想要的默认功能。酷。谢谢您的提示。最新版本是什么?(books.google.com从1999年给了我一些东西)我想到的区别是,我认为他们需要用一种特殊的方式编写GetMessage()循环(包括)