qq_41945416 2025-10-26 13:17 采纳率: 90.6%
浏览 6
已结题

关于mfc动态创建一个窗口

在mfc编程当中 如果是动态创建一个窗口 也就是不通过既有的对话框资源创建窗口 我需要创建一个带有标题栏的 标题栏左侧,以及任务栏左侧有图标的,标题栏右侧有最小化和关闭按钮的窗口 应当怎么创建?
是不是要先注册窗口类,还要添加窗口过程函数?

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-10-26 13:36
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    动态创建MFC窗口

    你需要创建一个 CWnd 对象,并使用 CreateExCreate 方法来创建窗口。下面是一个示例:

    CWnd* pWnd = new CWnd;
    pWnd->CreateEx(0, WS_OVERLAPPEDWINDOW, _T("标题"), 
                   CRect(100, 100, 300, 200), pParentWnd, ID_ANY);
    

    在上面的代码中:

    • WS_OVERLAPPEDWINDOW 是窗口样式,表示创建一个带有标题栏、任务栏和最小化和关闭按钮的窗口。
    • _T("标题") 是窗口标题。
    • CRect(100, 100, 300, 200) 是窗口的初始位置和大小。
    • pParentWnd 是父窗口的指针,如果没有父窗口,可以传递 NULL
    • ID_ANY 是窗口的 ID,可以传递一个具体的 ID。

    添加图标

    要添加图标,可以使用 SetIcon 方法:

    pWnd->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
    

    在上面的代码中:

    • IDI_ICON1 是图标的 ID,可以替换为你自己的图标 ID。

    注意

    • 请确保在 CWnd 对象被销毁之前释放它的内存。
    • 如果你需要处理窗口的消息,请重载 OnCreateOnDestroy 方法。

    希望这个示例能够帮助你解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月26日