WEB开发网
开发学院软件开发VC Windows区对象(Bands)的创建与定制 阅读

Windows区对象(Bands)的创建与定制

 2009-11-11 20:32:13 来源:WEB开发网   
核心提示:IDeskBand接口IDeskBand接口是区对象专用接口,它只有一个方法,Windows区对象(Bands)的创建与定制(6),IDeskBand接口从IDockingWindow继承而来,而IDockingWindow又从IOleWindow继承而来,另一个是 IContextMenu,本文的浏览栏例子实现了II

IDeskBand接口

IDeskBand接口是区对象专用接口。它只有一个方法。IDeskBand接口从IDockingWindow继承而来,而IDockingWindow又从IOleWindow继承而来。

IOleWindow有两个方法:GetWindow 和 ContextSensitiveHelp。浏览栏例子的GetWindow实现返回浏览栏的子窗口句柄m_hwnd。因为不实现上下文敏感帮助,所以ContextSensitiveHelp返回E_NOTIMPL。

IDockingWindow接口有三个方法:ShowDW, CloseDW, 和 ResizeBorder。ResizeBorder不在任何区对象中使用,应该返回E_NOTIMPL。ShowDW方法根据其不同的参数值控制浏览栏窗口的显示或隐藏:

STDMETHODIMP CExplorerBar::ShowDW(BOOL fShow)
{
if(m_hWnd)
{
if(fShow)
{
//显示窗口
ShowWindow(m_hWnd, SW_SHOW);
}
else
{
//隐藏窗口
ShowWindow(m_hWnd, SW_HIDE);
}
}
return S_OK;
}
CloseDW方法摧毁浏览栏窗口:
STDMETHODIMP CExplorerBar::CloseDW(DWORD dwReserved)
{
ShowDW(FALSE);
if(IsWindow(m_hWnd))
DestroyWindow(m_hWnd);
m_hWnd = NULL;

return S_OK;
}
其余的方法,如GetBandInfo是IDeskBand专用的。IE使用它来指定浏览栏的标示符以及视图模式。IE还可能填写DESKBANDINFO结构的dwMask成员从浏览栏请求更多的信息,这个结构用第三个参数传递。GetBandInfo应该存储这个标示符和视图模式并用所请求的数据填写DESKBANDINFO结构。下面是本文浏览栏例子所实现GetBandInfo:

STDMETHODIMP CExplorerBar::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi)
{
if(pdbi)
{
m_dwBandID = dwBandID;
m_dwViewMode = dwViewMode;
if(pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = MIN_SIZE_X;
pdbi->ptMinSize.y = MIN_SIZE_Y;
}
if(pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.x = -1;
pdbi->ptMaxSize.y = -1;
}
if(pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.x = 1;
pdbi->ptIntegral.y = 1;
}
if(pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 0;
pdbi->ptActual.y = 0;
}
if(pdbi->dwMask & DBIM_TITLE)
{
lstrcpyW(pdbi->wszTitle, L"浏览栏例子");
}
if(pdbi->dwMask & DBIM_MODEFLAGS)
{
pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
}
if(pdbi->dwMask & DBIM_BKCOLOR)
{
//通过移开这个标志来使用默认的背景颜色
pdbi->dwMask &= ~DBIM_BKCOLOR;
}
return S_OK;
}
return E_INVALIDARG;
}
可选择的接口实现

由两个接口的实现是可选择的,一个是IInputObject,另一个是 IContextMenu。本文的浏览栏例子实现了IInputObject。对于IContextMenu的实现细节请参考有关文档。

上一页  1 2 3 4 5 6 7  下一页

Tags:Windows 对象 Bands

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