如何判断用户按了IDOK还是IDCANCEL?调用的窗口类为CFingerScanner 请写出完整代码
时间: 2025-06-09 18:04:35 浏览: 2
在Windows中,当你使用自定义的对话框类(如`CFingerScanner`)并且希望检测用户按下的是IDOK还是IDCANCEL时,可以在`OnInitDialog`成员函数中添加相应的消息处理代码,然后在`WM_COMMAND`或`WM_CLOSE`等特定消息中检查`wParam`参数。以下是完整的示例代码:
```cpp
// 假设CFingerScanner是你的自定义对话框类
class CFingerScanner : public CDialogEx {
public:
// ... 其他必要构造函数、成员变量
protected:
// OnInitDialog 函数会在对话框初始化时调用
virtual void OnInitDialog() override {
CDialogEx::OnInitDialog();
// 绑定IDOK和IDCANCEL的响应
// 这里的IDCANCEL通常是用于关闭对话框,IDOK可能是其他确认操作
ConnectDlgItem(IDC_OK, &OnBnClickedOk);
ConnectDlgItem(IDC_CANCEL, &OnClose); // 或者替换为 OnCancel 按钮的响应
}
private:
afx_msg void OnBnClickedOk(); // 对于IDOK按钮的响应
afx_msg void OnClose(); // 对于关闭或IDCANCEL按钮的响应
// 定义响应函数
void OnBnClickedOk() {
EndDialog(IDC_OK); // 用户点击OK,结束对话框并返回IDOK
}
void OnClose() {
EndDialog(IDCANCEL); // 用户直接关闭对话框,结束并返回IDCANCEL
}
};
// 调用部分
CFingerScanner fingerScanner;
if (fingerScanner.DoModal() == IDOK)
{
// 用户点击了OK,这里的代码段可以处理确认操作
// 例如:扫描指纹成功,记录结果
}
else if (fingerScanner.DoModal() == IDCANCEL)
{
// 用户点击了Cancel,可以在这里处理取消操作
// 例如:放弃当前扫描
}
阅读全文
相关推荐



















