CommandToIndex问题
在对状态栏编程的时候发现的问题
已经增加了状态栏panel,ID 为ID_INDICATER_FUNC,是在resource中增加的字符串资源,加入到状态来也成功,但在OnSize中使用CommandToIndex检索该ID时却失败,返回-1,求助各位达人
代码如下:
static UINT indicators[] =
{
ID_SEPARATOR, // 状态行指示器
ID_INDICATOR_FUNC,//<---我增加的Panel
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
.........
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建客户区框架
if(!clientFrame.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST))
{
TRACE0("未能创建视图窗口\n");
return -1;
}
//在这里创建的StatusBar和一个Button
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
int iBtnArea=m_wndStatusBar.CommandToIndex(ID_INDICATOR_FUNC);
ASSERT(iBtnArea!=-1);//<---成功,没有问题
m_wndStatusBar.SetPaneText(iBtnArea,L"");
m_wndStatusBar.SetPaneInfo(iBtnArea,0,0,100);
btnFuncPrev.Create(L"<-",WS_CHILD | WS_VISIBLE,CRect(0,0,0,0),&m_wndStatusBar,0);
return 0;
}
...........
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if(::IsWindow (m_wndStatusBar.GetSafeHwnd()) && cx>50 &&cy>50){
CRect rect;
int i=m_wndStatusBar.CommandToIndex(ID_INDICATOR_FUNC);
ASSERT(i!=-1);//<--失败,想不通啊
m_wndStatusBar.GetItemRect(i,&rect);
rect.top=0;
btnFuncPrev.MoveWindow(rect);
}
}