代码之家  ›  专栏  ›  技术社区  ›  anand

挂接WM_SETTEXT后更改字符串

  •  0
  • anand  · 技术社区  · 16 年前

    钩内程序

    CWPSTRUCT* info = (CWPSTRUCT*) lParam;
    wchar_t *wsz = NULL;
    switch(info->message)
    {
    case WM_SETTEXT:
    wsz = (wchar_t *) info->lParam;
    //info->lParam = (LPARAM) L"Hello";
    //SendMessage(info->hWnd,WM_SETTEXT,0,(LPARAM)L"HEllo");
    //SetWindowText(info->hWnd,L"Hello");
    
    
    break;
    }
    

    是否可以像上面代码中那样更改字符串。 我试着用像

    SendMessage(info->hWnd,WM_SETTEXT,0,(LPARAM)L"HEllo");
    SetWindowText(info->hWnd,L"Hello");
    

    但他们都没有工作。主意在到达目的地之前将窗口更改为字符串。

    1 回复  |  直到 16 年前
        1
  •  1
  •   shf301    16 年前

    不,那个 WH_CALLWNDPROC 不允许您修改消息,的文档 CallWndProc

    这个 WH_GETMESSAGE GetMsgProc . 但是,这可能无法满足您的需要,因为只有使用GetMessage()或PeekMessage()检索并发送消息的消息直接调用WndProc,而不是使用消息队列。

    WH_CBT 钩住并列出 HCBT_CREATEWND 事件。然后在创建窗口时将其子类化并处理 WM_SETTEXT