当前位置: 首页 > article >正文

C++/Cli里重载winform的WndProc和ProcessCmdKey

注意,ProcessCmdKey里的第二个参数,不能用%

不过看WndProc和ProcessCmdKey在C#上的定义,看不出System::Windows::Forms::Keys keyData居然不需要%

看看vs里面对象浏览器里的定义:

public ref class SelectEntityToolForm : public System::Windows::Forms::Form
{
protected: virtual System::Void WndProc(System::Windows::Forms::Message% msg)override;
virtual System::Boolean ProcessCmdKey(System::Windows::Forms::Message% msg, System::Windows::Forms::Keys keyData) override;
};



System::Void SelectEntityToolForm::WndProc(System::Windows::Forms::Message% m)
    {
        __super::WndProc(m);
        //BeConsole::Printf();
        
        if (m.Msg == 0x0018) // WM_SHOWWINDOW
        {
            if (m.WParam.ToInt32() == SW_HIDE)
            {
                int i = 0;
                std::ignore = i;
                // 窗体被隐藏时的处理代码
                // ...
                //System::Windows::Forms::MessageBox::Show("选择对话框被隐藏");
            }
            else if (m.WParam.ToInt32() == SW_SHOWNORMAL)
            {
                //System::Windows::Forms::MessageBox::Show("选择对话框被显示");
            }
            else
            {
//                 auto x = m.WParam.ToInt32();
//                 std::ignore = x;
//                 std::wstring str = fmt::format(L"WM_SHOWWINDOW {}", x);
// 
//                 System::Windows::Forms::MessageBox::Show(gcnew System::String(str.c_str()));
            }
        }
    }

    System::Boolean SelectEntityToolForm::ProcessCmdKey(System::Windows::Forms::Message% msg, System::Windows::Forms::Keys keyData)
    {
        // 检查是否按下了特定的键
        if (keyData == System::Windows::Forms::Keys::Escape)
        {
            MiscUtil::ScheduleStopCurrentCommand();
            this->Hide();
            return true; // 表示键被处理了
        }

        // 如果不是F1键,则调用基类的ProcessCmdKey方法继续处理
        return System::Windows::Forms::Form::ProcessCmdKey(msg, keyData);
    }


http://www.kler.cn/a/419759.html

相关文章:

  • OpenCV圆形标定板检测算法findCirclesGrid原理详解
  • 从0开始学PHP面向对象内容之常用设计模式(策略,观察者)
  • 掌握 Spring Boot 中的缓存:技术和最佳实践
  • 在Mac上安装多个Java版本
  • Flask项目入门—request以及Response
  • 53 基于单片机的8路抢答器加记分
  • springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
  • python学习笔记12 python中的函数(上)
  • 深度学习7 梯度下降优化、过拟合、手机价格预测
  • 机器学习——生成对抗网络(GANs):原理、进展与应用前景分析
  • The selected directory is not a valid home for Go SDK
  • PostgreSQL17.x创建数据库及数据库信息查看命令
  • 算法刷题Day7: 二叉树前中后遍历
  • 通义灵码 x 函数计算:构建高效开发流程,加速项目交付
  • 「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
  • 后端 Java发送邮件 JavaMail 模版 20241128测试可用
  • 渗透测试--Linux上获取凭证
  • vue3+echarts柱状图点击加载数据及选中效果
  • C++入门基础知识156—【关于C++数据类型】
  • MATLAB数学建模之画图汇总
  • [计算机网络] HTTP/HTTPS
  • 怎么理解BeamSearch?
  • 畅游Diffusion数字人(9):Magic-Me: Identity-Specific Video Customized Diffusion
  • sheng的学习笔记-【中】【吴恩达课后测验】Course 5 -序列模型 - 第二周测验 - 自然语言处理与词嵌入
  • 【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】
  • 匹配 变量的类型