MFC单击并移动/拖动对话框窗口

Moe45673

我目前正在完成移交给我的一些代码。它是几年前用Visual Studio 2005中的MFC编写的,被搁置了,现在被带到了我面前。

虽然我了解C ++,但是我花了大约2个月的时间研究代码并学习MFC,并且它们开始融合在一起。

该代码的GUI是嵌入在不可见对话框窗口中的SWF Flash文件。我没有SWF文件的源代码,因此将来可能会在WPF中重做它。我将WMMode设置为“窗口”,因为在“透明/不透明”模式下,它无法正确显示,每次捕获鼠标事件时,它都会在其中闪烁/闪烁。

无论如何,在Win XP / Vista中,单击并拖动Flash控件即可。在Windows 7 / 8.1中,它不会移动。

很高兴提供所需的所有信息。我仍然对MFC对话框有点不知所措,因此不确定您希望看到什么。

我发现了这个问题:在控件上单击并拖动以移动窗口

看起来它解决了很多问题。但是,我不希望整个控件都是这样可单击的,而只是顶部。不幸的是,在MS Resource视图中,由于SWF仅在运行时加载,因此ActiveX控件为空。我试图为这种事情寻找资源,但是由于我不确定要使用的技术术语,因此这非常困难。

编辑

我通过创建一个非常简单的MFC应用程序来尝试此操作,该应用程序具有“静态文本”控件,仅此而已。我试图通过单击静态文本来使其工作(尽管我可能将自己绘画到一个角落,因为它没有内置的lButtonDown事件)。

以下是相关代码:

class MyDialog : public CDialog
{
public:
    MyDialog(CWnd* pParent = NULL) : CDialog(MyDialog::IDD, pParent)
    {    }
    // Dialog Data, name of dialog form
    enum{ IDD = INTERFACE1 };
protected:
    virtual void DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); }
    //Called right after constructor. Initialize things here.
    virtual BOOL OnInitDialog()
    {
        CDialog::OnInitDialog();
        pText = (CStatic *)GetDlgItem(ID_TEXT);

        pText->SetWindowTextW(_T("Hello World!"));

        return true;
    }

    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

private:
    CStatic * pText;

public:
    DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(MyDialog, CDialog)
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

覆盖方法:

afx_msg void MyDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
    CWnd::OnNcLButtonDown(HTCAPTION, point);

}

我还尝试将nFlags设置为0x2,并调用OnLButtonDown(与onNcLButtonDown相对),以及其他各种方法。该消息将触发,但窗口不会移动(它确实会从标题栏移动,这是正常现象)。我想念什么?

巴马克·谢米拉尼(Barmak Shemirani)

实际上,请改用尝试此代码ON_WM_NCHITTEST()如果您在客户端区域中的任何位置单击鼠标(客户端区域充当标题),将拖动对话框。有一条线rc.bottom = rc.top + 100,如果你取消注释它,然后它只会拖累如果你点击顶部(我选的号码100随机)。

//declare:
afx_msg LRESULT OnNcHitTest(CPoint point);

BEGIN_MESSAGE_MAP(MyDialog, CDialog)
    ON_WM_NCHITTEST()
END_MESSAGE_MAP()

LRESULT MyDialog::OnNcHitTest(CPoint point)
{
    ScreenToClient(&point);

    CRect rc;
    GetClientRect(&rc);

    //rc.bottom = rc.top + 100; 

    if (rc.PtInRect(point))
        return HTCAPTION;

    return CDialog::OnNcHitTest(point);
}

第二种选择:如果我们想通过单击子控件来移动对话框,并且该控件捕获了鼠标,请尝试使用此方法。***请注意,进行测试以确保控件在移动后能够正常工作。

BOOL MyDialog::PreTranslateMessage(MSG *msg)
{
    if (msg->message == WM_MOUSEMOVE && (msg->wParam & MK_LBUTTON)) 
    { 
        CPoint p; 
        GetCursorPos(&p); 
        CRect r; 
        ActiveX->GetWindowRect(&r); 
        if (r.PtInRect(p)) 
        { 
            ReleaseCapture(); 
            SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
            SendMessage(WM_NCLBUTTONUP, HTCAPTION, 0);
            return 1;
        }
    }
    return CDialogEx::PreTranslateMessage(msg);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在mfc中调整(通过拖动)对话框窗口的大小时,内存资源使用率上升

来自分类Dev

如何移动MFC项目的对话框

来自分类Dev

单击对话框

来自分类Dev

无法单击AngularJS Modal对话框弹出窗口

来自分类Dev

在主对话框中嵌入对话框并在MFC中单击按钮进行切换

来自分类Dev

IE / Firefox中的JQueryUI对话框拖动/移动光标未对齐

来自分类Dev

IE / Firefox中的JQueryUI对话框拖动/移动光标未对齐

来自分类Dev

滚动窗口/区域中没有跳跃式拖动/调整大小对话框?

来自分类Dev

在MFC中调整对话框大小时如何移动控件?

来自分类Dev

在MFC中调整对话框大小时如何移动控件?

来自分类Dev

如何调试MFC中不断丢失的焦点窗口(例如,对话框)?

来自分类Dev

关闭WPF模态窗口后如何将MFC对话框置于前台

来自分类Dev

MFC从DLL导入对话框

来自分类Dev

防止双击MFC对话框按钮

来自分类Dev

设置MFC对话框的位置

来自分类Dev

MFC C ++中的对话框

来自分类Dev

单击对话框旁边可隐藏对话框

来自分类Dev

单击对话框本身时关闭对话框

来自分类Dev

单击复选框并单击“还原”按钮时如何打开“ jQuery对话框”弹出窗口

来自分类Dev

模型对话框移动到主窗口后面的 Qt 错误

来自分类Dev

在自定义对话框窗口中单击按钮时出现空指针异常

来自分类Dev

如何通过单击botton使用Jquery UI打开确认对话框窗口

来自分类Dev

当用户在其外部单击时关闭 WPF 对话框窗口

来自分类Dev

pyqt通过鼠标单击关闭主窗口中的自定义对话框

来自分类Dev

如何移动模式对话框

来自分类Dev

移动GNOME文件对话框按钮

来自分类Dev

如何“正确”移动对话框的角度

来自分类Dev

从对话框窗口获取价值

来自分类Dev

获取对话框窗口处理程序

Related 相关文章

  1. 1

    在mfc中调整(通过拖动)对话框窗口的大小时,内存资源使用率上升

  2. 2

    如何移动MFC项目的对话框

  3. 3

    单击对话框

  4. 4

    无法单击AngularJS Modal对话框弹出窗口

  5. 5

    在主对话框中嵌入对话框并在MFC中单击按钮进行切换

  6. 6

    IE / Firefox中的JQueryUI对话框拖动/移动光标未对齐

  7. 7

    IE / Firefox中的JQueryUI对话框拖动/移动光标未对齐

  8. 8

    滚动窗口/区域中没有跳跃式拖动/调整大小对话框?

  9. 9

    在MFC中调整对话框大小时如何移动控件?

  10. 10

    在MFC中调整对话框大小时如何移动控件?

  11. 11

    如何调试MFC中不断丢失的焦点窗口(例如,对话框)?

  12. 12

    关闭WPF模态窗口后如何将MFC对话框置于前台

  13. 13

    MFC从DLL导入对话框

  14. 14

    防止双击MFC对话框按钮

  15. 15

    设置MFC对话框的位置

  16. 16

    MFC C ++中的对话框

  17. 17

    单击对话框旁边可隐藏对话框

  18. 18

    单击对话框本身时关闭对话框

  19. 19

    单击复选框并单击“还原”按钮时如何打开“ jQuery对话框”弹出窗口

  20. 20

    模型对话框移动到主窗口后面的 Qt 错误

  21. 21

    在自定义对话框窗口中单击按钮时出现空指针异常

  22. 22

    如何通过单击botton使用Jquery UI打开确认对话框窗口

  23. 23

    当用户在其外部单击时关闭 WPF 对话框窗口

  24. 24

    pyqt通过鼠标单击关闭主窗口中的自定义对话框

  25. 25

    如何移动模式对话框

  26. 26

    移动GNOME文件对话框按钮

  27. 27

    如何“正确”移动对话框的角度

  28. 28

    从对话框窗口获取价值

  29. 29

    获取对话框窗口处理程序

热门标签

归档