65.9K
CodeProject 正在变化。 阅读更多。
Home

拖放对话框

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (6投票s)

2002年3月28日

2分钟阅读

viewsIcon

98011

downloadIcon

3300

一个可以通过点击任意位置来在屏幕上拖动的对话框类。

Sample Image

引言

我编写了一个支持拖放的对话框类。

首先,我将描述如何将拖放行为添加到现有的对话框中 - 这非常简单。

DragDialog.hDragDialog.cpp 复制到您的项目目录中。 例如,我的对话框类名为 CTestDragDlg。StdAfx.h 或对话框的 .h 和 .cpp 文件中包含 DragDialog.h。 打开对话框的头文件,并搜索如下所示的行

class CTestDragDlg : public CDialog
CDialog 更改为 CDragDialog,它应该如下所示
class CTestDragDlg : public CDragDialog

现在打开对话框的 .cpp 文件,并搜索如下所示的行

CTestDragDlg::CTestDragDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDragDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDragDlg)
只需将 CDialog 替换为 CDragDialog...

现在搜索代码中类似如下内容的部分

BEGIN_MESSAGE_MAP(CTestDragDlg, CDialog)
	//{{AFX_MSG_MAP(CTestDragDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CDialog 替换为 CDragDialog

现在尝试编译它!

如果您在使用预编译头时遇到任何错误,请转到项目选项并说明您将不使用预编译头。

恭喜您,您现在拥有一个拖放对话框!

选项

现在您可以更改 DragDialog 的拖动行为,以下是一些示例。

  • 通常,对话框可以使用鼠标左键拖动,如果您想使用鼠标右键,请调用 SetDragButtons(FALSE, TRUE); 现在,鼠标右键可以拖动对话框。

  • 调用 SetDragButtons(TRUE, FALSE); 并且鼠标左键将被激活用于拖动。

  • 如果用户不允许将对话框拖出屏幕(超出可见屏幕)。 调用 KeepDialogInScreen(TRUE);

  • 如果您想将对话框移回屏幕上,因为用户将其拖出屏幕或其他类似情况,只需调用 GetDialogBackToScreen();

  • 您是否厌倦了拖动时的标准鼠标光标? 没问题,只需调用 SetDragCursor(IDC_CURSOR_DRAG);。 您必须将 IDC_CURSOR_DRAG 替换为您的鼠标光标的 ID。 现在,如果您害怕新的光标,请调用 UseDragCursor(FALSE);

  • 这是一个很酷的效果,如果您希望在拖动时对话框具有“透视”效果,请调用 SetFadeWhileDragging(100),其中值(在本例中为 100)将调节其他窗口的透视程度。 如果值为 0,对话框将完全不可见;如果值为 255 或参数 NOFADE,对话框将在拖动时正常绘制。

玩得开心!

© . All rights reserved.