2024年1月4日发(作者:)

mfc 调用双击方法

(原创实用版4篇)

《mfc 调用双击方法》篇1

在 MFC 中,要响应鼠标双击事件,可以按照以下步骤进行:

1. 在头文件中声明鼠标双击消息函数,例如:

```

afx_msg LRESULT CALLBACK WndProc(UINT message, WPARAM

wParam, LPARAM lParam);

```

2. 在源文件中实现鼠标双击消息函数,例如:

```

LRESULT CALLBACK WndProc(UINT message, WPARAM wParam,

LPARAM lParam)

{

switch (message)

{

case WM_LBUTTONDBLCLK:

// 处理鼠标双击事件

return 0;

// 处理其他消息

default:

return DefWindowProc(message, wParam, lParam);

第 1 页 共 8 页

}

}

```

3. 在鼠标双击事件的处理函数中,可以执行所需的操作,例如:

```

void CMyDialog::OnDbclicked()

{

// 处理鼠标双击事件

//...

}

```

需要注意的是,鼠标双击事件和两次单击事件是不同的。两次单击事件会产生四个鼠标点击消息,如果第三个消息和第二个消息间隔短于指定值,则把第三个消息处理成鼠标双击事件;第四个消息照旧。在 MFC 中,可以通过调用`GetDoubleClickTime()`函数来获取指定的时间间隔,该函数的返回值是以毫秒为单位的。

《mfc 调用双击方法》篇2

在 MFC 中,要响应鼠标双击事件,可以添加鼠标双击消息函数,该消息的 ID 为 WMLBUTTONDBLCLK。具体做法是在头文件中声明该函数,并在源文件中实现它。例如:

```cpp

// header file

第 2 页 共 8 页

#include

#include

class CMyDialog : public CDialog

{

public:

//... other member variables and functions

// declare the double-click event handler

afx_msg LRESULT OnDoubleClick(WPARAM wParam, LPARAM

lParam);

};

```

```cpp

// source file

#include "MyDialog.h"

//... other member variables and functions

LRESULT CMyDialog::OnDoubleClick(WPARAM wParam, LPARAM

lParam)

{

// do something when the user double-clicks

return 0;

}

```

第 3 页 共 8 页

在 OnDoubleClick 函数中,可以处理鼠标双击事件,例如弹出一个消息框或执行其他操作。另外,可以通过调用 GetDoubleClickTime

函数来获取系统默认的双击时间间隔,该函数的返回值是以毫秒为单位的时间间隔。

《mfc 调用双击方法》篇3

在 MFC 中,要响应鼠标双击事件,可以按照以下步骤进行:

1. 在头文件中声明鼠标双击消息函数,例如:

```

afx_msg LRESULT CALLBACK OnDoubleClick(UINT nID, LPNMHDR

pNMHDR, UINT nCode, WPARAM wParam, LPARAM lParam);

```

2. 在源文件中定义该函数,例如:

```

LRESULT CALLBACK OnDoubleClick(UINT nID, LPNMHDR pNMHDR,

UINT nCode, WPARAM wParam, LPARAM lParam)

{

// 处理鼠标双击事件的代码

return 0;

}

```

3. 在窗口的初始化函数中添加鼠标双击消息的处理,例如:

```

第 4 页 共 8 页

void CMyWindow::InitWindow()

{

//...

// 添加鼠标双击消息处理

afx_msg LRESULT CALLBACK OnDoubleClick(UINT nID, LPNMHDR

pNMHDR, UINT nCode, WPARAM wParam, LPARAM lParam);

m_pNMHDR = pNMHDR;

m_nID = nID;

m_nCode = nCode;

m_wParam = wParam;

m_lParam = lParam;

return 0;

}

```

4. 在窗口的过程中处理鼠标双击事件,例如:

```

void CMyWindow::OnMouseDoubleClick(UINT nFlags, CPoint point)

{

// 判断是否发生了鼠标双击事件

if (nFlags & MK_MBUTTON)

{

// 鼠标右键双击

第 5 页 共 8 页

OnDoubleClick(point.x, point.y, 0, 0, 0);

}

else if (nFlags & MK_LBUTTON)

{

// 鼠标左键双击

OnDoubleClick(point.x, point.y, 0, 0, 0);

}

}

```

以上代码中,`OnDoubleClick`函数是鼠标双击消息的处理函数,它接收一个 NMHDR 结构体参数,该参数包含了鼠标双击事件的信息。

《mfc 调用双击方法》篇4

在 MFC 中,要响应鼠标双击事件,可以按照以下步骤进行:

1. 在头文件中声明鼠标双击消息函数,例如:

```

afx_msg LRESULT CALLBACK WndProc(UINT message, WPARAM

wParam, LPARAM lParam);

```

2. 在源文件中实现鼠标双击消息函数,例如:

```

LRESULT CALLBACK WndProc(UINT message, WPARAM wParam,

第 6 页 共 8 页

LPARAM lParam)

{

switch (message)

{

case WM_LBUTTONDBLCLK:

// 处理鼠标双击事件

return 0;

// 处理其他消息

default:

return DefWindowProc(message, wParam, lParam);

}

}

```

3. 在需要响应鼠标双击事件的控件的初始化函数中,将鼠标双击消息函数与控件的窗口句柄关联起来,例如:

```

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)

: CDialog(IDD_MY_DIALOG, pParent)

{

// 初始化控件

//...

// 关联鼠标双击消息函数

第 7 页 共 8 页

afx_msg LRESULT CALLBACK WndProc(UINT message, WPARAM

wParam, LPARAM lParam);

m_ssWindow(WndProc);

}

```

这样,当鼠标在控件上双击时,就会触发 WM_LBUTTONDBLCLK

消息,进而调用 WndProc 函数处理鼠标双击事件。

第 8 页 共 8 页