浩气长存. 2022-07-07 09:33 采纳率: 0%
浏览 33

MFC对话框应用修改类名后,调试无法收到WM_COPYDATA消息

MFC对话框应用,没有菜单栏的无框界面设计,修改了类名想要发送ONCOPYDATA消息。结果调试的时候收不到消息,但是在release里打开应用可以收到消息。
在InitInstance里修改了类名,也在资源视图里修改了model为false

    WNDCLASS wc;
    // 获取窗口类信息。MFC默认的所有对话框的窗口类名为 #32770
    ::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);
    // 改变窗口类名
    wc.lpszClassName = _T("PC");
    // 注册新窗口类,使程序能使用它
    AfxRegisterClass(&wc);

//发送消息的部分
        HWND REC = ::FindWindow(L"PC", NULL);
    //HWND REC = ::FindWindow(NULL, L"人脸识别");
    if (REC == NULL)
    {
        //::AfxMessageBox("没有找到该窗口");
        return;
    }
    COPYDATASTRUCT cpd;
    cpd.dwData = 0;
    cpd.cbData = strlen(data.c_str());
    cpd.lpData = (void*)data.c_str();
    LRESULT err = ::SendMessage(REC, WM_COPYDATA, NULL, (LPARAM)&cpd);

结果调试的时候 程序无法收到消息,进入不了OnCopyData函数;但是在release里打开应用可以收到消息进入后续程序。

我猜想是不是修改类名导致MFC所有窗口类名都修改成一样了,导致调试的时候发送的消息发送不到对应的窗口?

有知道原因的吗,我想在调试的时候触发消息函数。

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-07-07 11:45
    关注

    在*.h *.cpp *.rc中查找旧类名

    在IDE中打开旧版本的项目,鼠标放在旧类名上,点鼠标右键,选“查找所有引用”

    评论

报告相同问题?

问题事件

  • 创建了问题 7月7日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑