【ProToolkit范例之一】加载菜单

一、新建MFC Dll工程并配置环境

参考文章

VS2005+ProE3.0参考:ProE二次开发之VS2005+ProE Wildfire 3.0开发环境配置

VS2005+ProE4.0参考:ProE二次开发之VS2005+ProE Wildfire 4.0开发环境配置

 

二、在工程中添加如下代码

//-----------------------------------------------------------------------------
//*****************************************************************************
//-----------------------------------------------------------------------------
#pragma region

#include <ProToolkit.h>
#include <ProUtil.h>
#include <ProMenuBar.h>
#include <ProMenu.h>
#include <ProMode.h>
#include <ProMdl.h>
#include <ProSolid.h>
#include <ProAsmcomp.h> 
#include <ProArray.h>
#include <ProModelitem.h>
#include <ProLayer.h>

// 函数声明
uiCmdAccessState TestAccess(uiCmdAccessMode access_mode);

int Test(uiCmdCmdId  command,
         uiCmdValue *p_value,
         void       *p_push_command_data);

extern "C" int user_initialize()
{
    ProError err;
    ProFamilyName MsgFile;
    ProStringToWstring(MsgFile, "Test_Msg.txt");

    // 添加菜单TestMenu
    err = ProMenubarMenuAdd("TestMenu", "TestMenu", "Help", PRO_B_TRUE, MsgFile);

    // 添加命令和Menu Item
    uiCmdCmdId cmd_id1;

    err = ProCmdActionAdd("Test", Test, uiProeImmediate, TestAccess, 
        PRO_B_FALSE, PRO_B_FALSE, &cmd_id1);

    err = ProMenubarmenuPushbuttonAdd("TestMenu", "Test", "Test", "Test_Help",
        NULL, PRO_B_TRUE, cmd_id1, MsgFile);

    return 0;
}


extern "C" void user_terminate()
{     
}

int Test(uiCmdCmdId  command,
         uiCmdValue *p_value,
         void       *p_push_command_data)
{
    AfxMessageBox(TEXT("Just For Test"));
    return 0;
}

uiCmdAccessState TestAccess(uiCmdAccessMode access_mode)
{
    return ACCESS_AVAILABLE;
    /*
    ProError err;
    ProMode  mode;

    err = ProModeCurrentGet(&mode);
    if (err != PRO_TK_NO_ERROR)
    {
        return ACCESS_UNAVAILABLE;
    }

    if (mode == PRO_MODE_PART 
        || mode == PRO_MODE_ASSEMBLY)
    {
        return ACCESS_AVAILABLE;
    }
    else
    {
        return ACCESS_UNAVAILABLE;
    }
    */
}

#pragma endregion
//-----------------------------------------------------------------------------
//*****************************************************************************
//-----------------------------------------------------------------------------

 三、示例源码

VS2005+ProE3.0

下载地址:http://download.csdn.net/detail/wangyao1052/4916817

解压缩

运行Test\Bin\GoProE.bat

将启动ProE并加载菜单,单击菜单项弹出示例MessageBox.

注意:记着将GoProE.bat中Call后的路径改为你本机上的ProE的安装路径。

转载于:https://www.cnblogs.com/Hisin/archive/2012/12/22/2829110.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lua语言本身并不支持异步加载资源的功能,但可以通过使用Unity引擎的协程来实现异步加载资源的功能。下面是一个使用Lua语言和Unity引擎的协程来实现异步加载资源的范例: ``` -- 定义一个异步加载资源的函数 function LoadAssetAsync(assetName, assetType, callback) -- 创建一个协程,用于异步加载资源 local co = coroutine.create(function() -- 调用Unity引擎的异步加载资源的API实现异步加载资源 local request = UnityEngine.Resources.LoadAsync(assetName, assetType) -- 等待异步加载完成 while not request.isDone do coroutine.yield(UnityEngine.WaitForSeconds(0.1)) end -- 异步加载完成后调用回调函数并传递加载的资源对象 if callback then callback(request.asset) end end) -- 启动协程 coroutine.resume(co) end -- 使用异步加载资源的函数来加载一个图片资源 LoadAssetAsync("Sprites/Player", typeof(UnityEngine.Sprite), function(sprite) -- 加载完成后将图片显示在屏幕上 local image = UnityEngine.GameObject.Find("Image"):GetComponent(typeof(UnityEngine.UI.Image)) image.sprite = sprite end) ``` 在这个范例中,我们定义了一个名为LoadAssetAsync的函数来实现异步加载资源的功能。该函数的参数包括要加载的资源名称、资源类型和回调函数。在函数内部,我们创建了一个协程来异步加载资源,并在协程中等待异步加载完成,然后调用回调函数来处理加载的资源对象。最后,我们使用LoadAssetAsync函数来加载一个图片资源,并在加载完成后将图片显示在屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值