问题标签 [cdialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
930 浏览

mfc - 在 CDialog 上创建多个 CDockablePanes

我正在尝试与此处描述的文章完全相同:“ C++ MFC Feature Pack --> Create multiple CDockablePanes to an CDialog

我按照他的程序进行操作,现在可以取消停靠并移动 CDockablePane,但在将其停靠回来时也会发生同样的崩溃。在他自己的回答中,他说他自己创建了 dummywnd,因此 MFC 跳过了创建和对 GetTopLevelFrame() 的调用。这就是我感到困惑的地方,我该如何准确地创建 dummywnd?

我的第二个问题是如何在 CMyFrame 和 CDialog 之间交换数据?

提出和回答问题的人似乎多年不活跃,无法联系到。有人可以帮忙或有什么想法吗?

谢谢,


编辑:

我打破了程序并完全按照另一位作者的描述进行了追溯。上面提到的虚拟窗口其实是在afxdragframeimpl.cpp中:

void CMFCDragFrameImpl::MoveDragFrame(BOOL bForceMove)

它在哪里创建:

m_pWndDummy = new CDummyDockablePane;

并调用:

m_pWndDummy->CreateEx(0, _T(""), AFXGetTopLevelFrame(m_pDraggedWnd), CRect(0, 0, 0, 0), FALSE, AFX_DUMMY_WND_ID, WS_CHILD);

是的,我正在尝试在我的对话框中创建一个 CFrameWndEx 作为子窗口,然后在该 CFrameWndEx 中添加子 CDockablePane。

基本上我有一个带有一些控件的 MFC 对话框 A,在这个对话框 A 中我需要一些可撕下的标签 XYZ,并且我需要在每个可撕下的标签 XYZ 中添加一些控件。所以这意味着每个可撕下的 tabsXYZ 实际上是一个子 dialogB。所以这就是我尝试在dialogA中使用CDockablePanes(实际上是CPaneDialog)的地方。

0 投票
0 回答
403 浏览

c++ - 如何使用 MFC 通过使用 CDialog::Create 创建基于对话框的应用程序而不从资源文件中插入资源?

我知道如何在CFrameWnd::Create不从资源文件中插入资源的情况下创建基于框架的应用程序,如下所示:

我知道我必须通过从资源文件中插入对话框资源来创建一个基于对话框的应用程序。但是是否可以在CDialog::Create不从资源文件中插入对话框资源的情况下创建基于对话框的应用程序?(如上)

0 投票
1 回答
676 浏览

c++ - 使用 VS2015 CLR 在 CDialog 派生类上创建返回 0,在 VC++ 6 中运行良好

我正在尝试迁移基于 VC++ 6 的代码以使用 VS2015 CLR。我的主要功能正常工作,但 UI 缺少​​一些东西。

我已将此问题追溯到由于父 CWnd 的 NULL HWnd 而导致的 SubclassDlgItem 失败。它是 NULL,因为 CDialog 派生父类上的 Create 在 dlgcore.cpp 中返回 0

m_nFlags = 256(定义为#define WF_OLECTLCONTAINER 0x0100 // 一些后代是 afxwin.h 中的 OLE 控件)

并且 hWnd 不是 NULL,但 '::CreateDialogIndirect() 没有创建窗口(即由于模板中的错误)并根据 Microsoft 评论返回 NULL'

以下是父 CWnd 的代码

以下是创建 CDialog 的代码

下面是 CxMainDialog 构造函数

我怎样才能让它工作?

0 投票
1 回答
71 浏览

c++ - CButton 派生的“SubclassDlgItem”在 VS2015 CLR 的 CDialogBar 上不可见,但响应按钮点击,在 VC++ 6 中运行良好

我正在尝试迁移基于 VC++ 6 的代码以使用 VS2015 CLR。我的主要功能正常工作,但 UI 缺少​​一些东西。

有一个 CDialogBar 承载 CWnd 派生对象和 CButton 对象。CWnd 派生对象显示正常,但 CButton 对象全部不可见,但盲目单击时操作正常。

另一个没有 CButton 对象的 CDialogBar 正在正确显示。

我怎样才能让它工作?

0 投票
0 回答
160 浏览

mfc - 从 cdialog 父对话框调用 cformview 子对话框

我有一个CDialog应该调用CFormView子对话框的父对话框。我知道,要调用一个CDialog对话框,我们使用DoModal()函数。是否也有类似的功能CFormView可以从任何地方调用它?

0 投票
1 回答
337 浏览

c++ - 如何很好地处理 cdialogex 调整大小?

我不想为此目的使用其他类,例如 codeproject.com 的 easysize 或 sizecbar。我正在使用 MFC CDialogEx。我试试这个:

当我单击对话框消息的右侧时,显示正确。

正如你在投手中看到的那样,我尝试这样做。改变光标,画黑点线。仅在一侧调整对话框大小,并希望禁用所有角落和左、右和下。而且当我从上方调整对话框大小时也想移动上层控件。

在此处输入图像描述

我不希望有人为我做这一切。只是建议我如何做到这一点。我从软件depends.exe中获取这个投手。任何帮助将不胜感激。提前致谢。

0 投票
1 回答
593 浏览

c++ - Is it normal for an hwnd to have its high bit set?

I'm passing my HWND to a sub-process so it can send me messages back on its progress. Occasionally I never receive any messages from the sub-process. While investigating, I've found that GetSafeHwnd() of which I'm passing to the subprocess seems to be returning values I don't expect.

For example: 0xffffffffa5400382

Based on that, I can probably deduce that I'm not properly converting that value to/from an int64/string properly. I can fix that. But what I find odd is that this hwnd just doesn't look right?

Are there scenarios where an HWND can have it's high bit set? Is this a normal window, or is there something special about the hwnd to end up like that?

I'm in C++, this is an CDialog based application window.

0 投票
2 回答
541 浏览

mfc - CPropertyPage 对话 OnOk 如果出现错误不应关闭对话

我有一个从类继承的CPropertyPage类。我有一个OnOk()方法和一个OnKillActive()方法。每当我在对话上按确定时。OnKillActive()被调用但从OnOk()未被调用。问题取决于我不想在按下确定时关闭对话的条件。但对话将在按下 OK 时结束。

按确定时如何防止对话关闭?

代码:

0 投票
1 回答
1469 浏览

c++ - 如何制作CDialog?

我尝试了多种方法,但基础是这样的:

当我运行它时,我收到以下错误:

调试断言失败消息

这个对话框我缺少什么?

我查找了几个资源,但一切都导致相同的错误消息。

谁能告诉我我没看到什么?

0 投票
1 回答
935 浏览

c++ - 如何在另一个 CDialog 中显示嵌套的 CDialog?

我创建了两个 CDialog 类。我们称它们为 MainDialog 和 ExtraDialog。我希望 ExtraDialog 能够通过 doModal 和 MainDialog 中的嵌套对话框显示。

我已经可以通过 Button 和 doModal 分别调出它了。但是,我一直不知道如何将它放在 MainDialog 中。

上面我分享了我尝试过的一些事情。我希望创建一个 CWnd 并将对话框放在 CWnd 中,但我觉得我错过了一些东西,我在网上找不到任何有用的东西。

编辑:我基本上试图将多个 CWnd 放入一个 CDialog 中,并让 CWnd 运行来自不同类的不同功能。有点像把乐高积木放在一起。

Edit2:我发现了一个有点相似的问题?我希望使它相似,但我只是不想要按钮,我希望它们中的两个同时显示。 在主对话框中嵌入对话框并通过在 MFC 中单击按钮来切换它们