gpt4 book ai didi

c++ - 我将使用哪个 HWND 在 WinMain 函数中创建对话框?

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:31 25 4
gpt4 key购买 nike

我目前正在尝试使用 WTL 练习 C++,但我现在正面临这个问题。到目前为止,我已经使用了很多 WTL,但我总是有一个模板,它已经实现了最基本的窗口创建。但是,我现在想自己做,因为我现在无法访问模板。

以下:

这是我的 WinMain:

#include "stdafx.h"
#pragma once
#include "MusicPlayerDialog.h"
#include "resource.h"

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev,
LPSTR szCmdLine, int nCmdShow)
{
UNREFERENCED_PARAMETER(szCmdLine);
UNREFERENCED_PARAMETER(hInstPrev);

_Module.Init(NULL, hInst);

MusicPlayerDialog myDialog;
MSG msg;

myDialog.Create( **//PROBLEM//** )

myDialog.ShowWindow(nCmdShow);
myDialog.UpdateWindow();

while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

这是我的对话:

#pragma once
#include "stdafx.h"
#include "resource.h"

class MusicPlayerDialog : public CDialogImpl<MusicPlayerDialog>
{
public:

enum { IDD = IDD_MAINDIALOG };

BEGIN_MSG_MAP(MusicPlayerDialog)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_INITDIALOG, OnInit)
END_MSG_MAP()

LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnInit(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

private:

};

我真的很想用对话框来做,考虑到像我这样的初学者用对话框设计器创建 GUI 更容易。我很确定使用原始窗口更好,但我现在只想了解窗口、对话框等之间的通信。

我现在的问题是,我不知道要将什么传递给 myDialog.Create()

首先,问题是我必须传递给它的 HWND。我在 MSDN 上阅读过,看起来,该参数代表对话框“父”窗口。

但是,我还没有创建任何其他窗口,所以没有任何东西可以传递给它。

我是否必须获得我不知道的...桌面窗口的句柄?像那样的东西?我真的想不通。

我知道有一种方法可以抓取给定窗口/对话框的父窗口,但我认为这在这里行不通,因为没有什么可以抓取的。

最佳答案

如果 CDialog::Create (pParentWnd) 的第二个参数为 NULL,则对话框对象的父窗口将设置为主应用程序窗口。另一种选择是使用 CWnd* AFXAPI AfxGetMainWnd( ); 如果从应用程序的主线程调用它,它将返回应用程序的主窗口。

另见 CDialog::CreateAfxGetMainWnd

关于c++ - 我将使用哪个 HWND 在 WinMain 函数中创建对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com