0

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

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

这是创建窗口的代码:

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_ 样式的组合,但没有成功。在我看来,窗口的非客户端部分在拖动操作期间没有被更新。

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

4

1 回答 1

0

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

于 2019-10-29T23:48:21.870 回答