WEB开发网
开发学院软件开发VC VC++实现应用程序对插件的支持 阅读

VC++实现应用程序对插件的支持

 2008-11-14 19:35:49 来源:WEB开发网   
核心提示: int size = m_arrPlugObj.GetSize();m_ImageList.Create(16, 16, ILC_COLOR32, size + 1, size);for (int i = 0; i < size; i ++)m_ImageList.Add(m_arr

int size = m_arrPlugObj.GetSize();
m_ImageList.Create(16, 16, ILC_COLOR32, size + 1, size);
for (int i = 0; i < size; i ++)
m_ImageList.Add(m_arrPlugObj[i].pObj->GetIcon());
CToolBarCtrl& ctrlBar = m_wndPlugBar.GetToolBarCtrl();
ctrlBar.SetImageList(&m_ImageList);
TBBUTTON btn;
for (i = 0; i < size; i ++)
{
btn.iBitmap = i;
btn.idCommand = ID_PLUG_POINTER + i;//command to be sent when button pressed
btn.fsState = TBSTATE_ENABLED; //button state--see below
btn.fsStyle = TBSTYLE_BUTTON; //button style--see below
btn.dwData = 0; //application-defined value
btn.iString = NULL; //zero-based index of button label string
ctrlBar.AddButtons(1, &btn);
}

对于各个插件按钮的命令响应也不能以通常的ON_COMMAND宏执行命令映射,而要以ON_COMMAND_RANGE宏实现对一个ID范围的命令映射:

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
……
ON_COMMAND_RANGE(ID_PLUG_POINTER, ID_PLUG_POINTER+256, OnPlugHit)
END_MESSAGE_MAP()
……
void CMainFrame::OnPlugHit(UINT nID)
{
int id = nID - ID_PLUG_POINTER;
if (id >= 0 && id < m_arrPlugObj.GetSize())
{
// 调用对应插件的功能函数。
if (m_arrPlugObj[id].pObj)
m_arrPlugObj[id].pObj->Interface(id);
}
}

为保证系统资源的有效释放,在程序终止之前必须确保将加载过的所有插件资源予以释放:

上一页  1 2 3 4 5  下一页

Tags:VC 实现 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接