MFC用代码实现屏蔽ESC和Enter键按下,对话框窗体关闭或者消失的问题

    xiaoxiao2021-03-25  82

    新建的MFC对话框项目,去掉默认对话框中的确定和取消按钮,但是编译启动窗体之后,按下enter键,窗体还是会关闭

    为了解决这个问题,可以在代码中添加代码,屏蔽enter键按下的效果响应。由于MFC对话框之间状态由PreTranslateMessage这个函数接口进行消息的传递,于是解决这个问题,可以考虑从PreTranslateMessage入手。按下enter键和esc键,窗体默认执行到OnOk和OnCancel接口。

    解决方案:

    在窗体对应的.h文件中添加如下代码,

    protected:

    virtual BOOL PreTranslateMessage(MSG* pMsg);

    public:

    virtual void OnOk();

    virtual void OnCancel();

    在窗体对应的.h文件中添加如下代码,

    BOOL ExampleDlg::PreTranslateMessage(MSG* pMsg) { //屏蔽ESC键按下 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE) { return TRUE; } //屏蔽Enter键按下 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN && pMsg->wParam) { return TRUE; } //操作其他msg return CDialog::PreTranslateMessage(pMsg); } void ExampleDlg::OnOk() { return; } void ExampleDlg::OnCancel() { return; }

    转载请注明原文地址: https://ju.6miu.com/read-23657.html

    最新回复(0)