在我的 MFC 应用程序中,我创建了一个新子 window。当我将它拖动到新位置时,拖动过程中不会绘制轮廓,因此视觉反馈

In my MFC application I create a new child window. When I drag it to a new location the outline is not drawn during the drag, so n visual feedback

这是使用 MDI 体系结构的大型 MFC 应用程序的一部分。它是使用 Microsoft Visual Studio 2019 编写的。

我想创建一个 window 来显示文本文件的前几行,以便用户可以决定是否解析它。新的 window 不适合整个 Document/View 架构,因此我将桌面 window 作为其父级。 window 创建成功,成功定位到屏幕左上角并显示文本文件的前几行。然而,当我将它拖动到一个新位置时,它的轮廓并没有在拖动过程中绘制出来,尽管它最终到达了预期的位置,因此用户没有视觉反馈。

这是创建 window 的代码:

CWnd *parent = GetDesktopWindow();
int w = GetSystemMetrics(SM_CXFULLSCREEN) / 3;
int h = GetSystemMetrics(SM_CYFULLSCREEN) / 4;
CString title;
title.Format("Previewing first %d lines of file", m_nPreviewLines);
// fpw is of locally defined type CFilePreviewWnd, which is derived directly from CWnd.
fpw->Create(
    AfxRegisterWndClass(CS_NOCLOSE, 0, (HBRUSH) ::GetStockObject(WHITE_BRUSH) ), 
    title,
    WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_OVERLAPPEDWINDOW,
    CRect(0, 0, w, h), 
    parent, 
    ID_FILE_PREVIEW_WND);

我试过 WS_ 和 CS_ 风格的各种组合,但都没有成功。在我看来,window 的非客户端部分在拖动操作期间没有被更新。

我想我在这里遗漏了一些基本的东西。如有任何澄清,我们将不胜感激。

和我想的一样,真的很简单。所需要的只是使用 WS_POPUPWINDOW 和 CreatEx 而不是 Create。这样我就可以使调用对话框成为父对话框。 缺口;再次感谢您的指导。