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

问题描述 投票:0回答:1

这是使用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_样式的各种组合,但都没有成功。在我看来,窗口的非客户端部分在拖动操作期间未得到更新。

我假设我在这里缺少一些基本知识。任何澄清将不胜感激。

这是使用MDI体系结构的大型MFC应用程序的一部分。它是使用Microsoft Visual Studio 2019编写的。我想创建一个窗口来显示文本文件的前几行,因此...

mfc mdi cwnd
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.