微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用c ++ win32 api更改不是我的应用程序中的菜单项控件的标题?

如何解决如何使用c ++ win32 api更改不是我的应用程序中的菜单项控件的标题?

例如,如果我想更改为记事本“编辑”菜单下的“复制”字符串。

我正在尝试执行以下操作:

使用enumWindowsProc(效果很好)


BOOL CALLBACK enumWindowsProc(
    __in  HWND hWnd,__in  LParaM lParam
) {
    int length = ::GetwindowTextLength(hWnd);
    if (0 == length) return TRUE;

    TCHAR* buffer;
    buffer = new TCHAR[length + 1];
    memset(buffer,(length + 1) * sizeof(TCHAR));

    GetwindowText(hWnd,buffer,length + 1);
    wcout << buffer << endl;
    wstring s2(buffer);
    wstring s3(L"Notepad");
    std::string::size_type found = s2.find(s3);
    if (found != std::string::npos)
    {
        EnumChildWindows(hWnd,EnumChildProc,0);
    }
    delete[] buffer;
    return TRUE;
}

,而不是使用EnumChildProc(没有给出所需的行为。我希望得到一个控件树):

BOOL CALLBACK EnumChildProc(HWND hwnd,LParaM lParam)
{
    
    int length = ::GetwindowTextLength(hwnd);
    if (0 == length) return TRUE;

    TCHAR* buffer;
    buffer = new TCHAR[length + 1];
    memset(buffer,(length + 1) * sizeof(TCHAR));

    GetwindowText(hwnd,length + 1);
    OutputDebugString(buffer);
    OutputDebugString(L"\n");
    
    EnumChildWindows(hwnd,0);

    delete[] buffer;
    return TRUE;
    
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。