Rebar控件的RB_INSERTBAND调用失败,该如何解决
Rebar控件的RB_INSERTBAND调用失败
上面的代码片断最后的iRet返回值总是为0,请问大家哪有会有问题呢?
------解决方案--------------------
GetLastError()函数看看返回值什么??????
------解决方案--------------------
LPVOID lpMsgBuf;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL);
MessageBox((LPTSTR)lpMsgBuf,_T("GetLastError"),MB_OK | MB_ICONINFORMATION);
::LocalFree(lpMsgBuf);
放在你最后调用sendmessage的地方看看,弹出什么错误提示
有可能是你myRebar是空的,或者myToolbarInfo设置错误,感觉是myToolbarInfo的问题··
- C/C++ code
HWND myRebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, 0, WS_VISIBLE | WS_CHILD | WS_BORDER | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NOPARENTALIGN | RBS_VARHEIGHT | RBS_BANDBORDERS, 0, 0, 0, 0, myMainWindow, (HMENU)1, GetModuleHandle(0), 0); myWindowToolbar.hwnd = CreateWindowEx(0, TOOLBARCLASSNAME, 0, WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | BTNS_AUTOSIZE | CCS_NORESIZE, 0, 0, 0, 0, myMainWindow, (HMENU)1, GetModuleHandle(0), 0); SendMessage(myWindowToolbar.hwnd, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS | TBSTYLE_EX_HIDECLIPPEDBUTTONS); SendMessage(myWindowToolbar.hwnd, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); SendMessage(myWindowToolbar.hwnd, TB_SETBITMAPSIZE, 0, MAKELONG(IconSize, IconSize)); SendMessage(myWindowToolbar.hwnd, TB_SETINDENT, 3, 0); SendMessage(myWindowToolbar.hwnd, TB_SETIMAGELIST, 0, (LPARAM)ImageList_Create(IconSize, IconSize, ILC_COLOR32 | ILC_MASK, 0, 100)); ZeroMemory(&myToolbarInfo, sizeof(myToolbarInfo)); myToolbarInfo.cbSize = sizeof(REBARBANDINFO); myToolbarInfo.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_IDEALSIZE | RBBIM_ID; myToolbarInfo.fStyle = RBBS_USECHEVRON | RBBS_NOGRIPPER; myToolbarInfo.hwndChild = myWindowToolbar.hwnd; myToolbarInfo.wID = 1; myToolbarInfo.cxMinChild = 0; myToolbarInfo.cyIntegral = 1; myToolbarInfo.cyMinChild = 44; myToolbarInfo.cyMaxChild = 44; myToolbarInfo.cx = 0; myToolbarInfo.cxIdeal = 0; int [color=#FF0000]iRet[/color] = SendMessage(myRebar, RB_INSERTBAND, (WPARAM)0, (LPARAM)&myToolbarInfo);
上面的代码片断最后的iRet返回值总是为0,请问大家哪有会有问题呢?
------解决方案--------------------
GetLastError()函数看看返回值什么??????
------解决方案--------------------
LPVOID lpMsgBuf;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL);
MessageBox((LPTSTR)lpMsgBuf,_T("GetLastError"),MB_OK | MB_ICONINFORMATION);
::LocalFree(lpMsgBuf);
放在你最后调用sendmessage的地方看看,弹出什么错误提示
有可能是你myRebar是空的,或者myToolbarInfo设置错误,感觉是myToolbarInfo的问题··