下面是使用C++进行中望3D二次开发的示例代码,将在中望3D的菜单栏添加一个按钮,并点击按钮时启动第三方的exe程序。

#include <windows.h>

// 自定义按钮的命令标识
#define IDM_CUSTOM_BUTTON 1001

// 自定义按钮的消息处理函数
LRESULT CALLBACK CustomButtonProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        case WM_COMMAND:
            // 检查按钮命令标识
            if (LOWORD(wParam) == IDM_CUSTOM_BUTTON)
            {
                // 启动第三方exe程序
                ShellExecute(NULL, "open", "path_to_exe_program.exe", NULL, NULL, SW_SHOWDEFAULT);
            }
            break;
    }

    // 调用默认的按钮消息处理函数
    return CallWindowProc((WNDPROC)GetProp(hwnd, "OldProc"), hwnd, msg, wParam, lParam);
}

// 注册自定义按钮
void RegisterCustomButton(HWND hwnd)
{
    // 获取菜单栏句柄
    HMENU hMenu = GetMenu(hwnd);

    // 在菜单栏最后添加一个分隔符
    AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);

    // 创建自定义按钮
    AppendMenu(hMenu, MF_STRING, IDM_CUSTOM_BUTTON, "启动程序");

    // 获取菜单栏最后一个菜单项的句柄
    HMENU hSubMenu = GetSubMenu(hMenu, GetMenuItemCount(hMenu) - 1);

    // 获取主窗口句柄
    HWND hMainWnd = GetParent(hwnd);

    // 获取主窗口的消息处理函数
    WNDPROC wndProc = (WNDPROC)GetWindowLongPtr(hMainWnd, GWLP_WNDPROC);

    // 设置自定义按钮的消息处理函数
    SetProp(hSubMenu, "OldProc", (HANDLE)wndProc);
    SetWindowLongPtr(hMainWnd, GWLP_WNDPROC, (LONG_PTR)&CustomButtonProc);
}

// 主函数
int main()
{
    // 获取中望3D窗口句柄
    HWND hwnd = FindWindow("SWinMainFrame", NULL);

    if (hwnd != NULL)
    {
        // 注册自定义按钮
        RegisterCustomButton(hwnd);

        // 重新绘制窗口
        RedrawWindow(hwnd, NULL, NULL, RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
    }

    return 0;
}

请将上述代码中的 path_to_exe_program.exe 替换为你要启动的第三方exe程序的路径。同时,确保在编译时链接正确的库文件和头文件。

注意:上述代码仅为示例代码,具体的实现方式可能因中望3D版本和开发环境而有所不同,需要根据实际情况进行调整和优化

需要对中望3d进行二次开发在中望3D的菜单栏添加一个按钮点击按钮可以启动第三方的exe程序请生成代码使用c++进行开发。

原文地址: https://www.cveoy.top/t/topic/hLx1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录