最近在做vs2008下windows mobile的SDI文档的界面开发,左下角的有一个新建的按钮,我想动态改变它的标题,但是我不论在框架类还是在视类下调用SetWindowText,在程序生成的时候就会报错,然后我上网找了一下资料,发现网上有两种解决办法。但是我看不太懂,请大家帮帮忙
TBBUTTONINFO BtnInfo;
BtnInfo.cbSize = sizeof(TBBUTTONINFO);
BtnInfo.dwMask = TBIF_TEXT;
BtnInfo.pszText = szText;//要替换的文本
SendMessage(g_hWndMenuBar, TB_SETBUTTONINFO, IDM_MAIN_MENU_LEFT, (LPARAM)(LPTBBUTTONINFO)&BtnInfo);
我有两个疑问,这几行代码应该放在哪个函数,还有就是怎么获得g_hWndMenuBar
TBBUTTONINFO BtnInfo;
BtnInfo.cbSize = sizeof(TBBUTTONINFO);
BtnInfo.dwMask = TBIF_TEXT;
BtnInfo.pszText = szText;//要替换的文本
SendMessage(g_hWndMenuBar, TB_SETBUTTONINFO, IDM_MAIN_MENU_LEFT, (LPARAM)(LPTBBUTTONINFO)&BtnInfo);
我有两个疑问,这几行代码应该放在哪个函数,还有就是怎么获得g_hWndMenuBar
winocc.cpp
line 245
遇到下面一段代码 CATCH_ALL(e)
{
lResult = AfxProcessWndProcException(e, &pThreadState->m_lastSentMsg);
TRACE(traceAppMsg, 0, _T("Warning: Uncaught exception in WindowProc (returning %ld).\n"),
lResult);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
然后就弹出一个消息框,说是遇到不适合参数
{
ASSERT(::IsWindow(m_hWnd)); if (m_pCtrlSite == NULL)
return ::GetWindowText(m_hWnd, lpszString, nMaxCount);
else
return m_pCtrlSite->GetWindowText(lpszString, nMaxCount);
}
其中else是245行
TBBUTTONINFO BtnInfo;
BtnInfo.cbSize = sizeof(TBBUTTONINFO);
BtnInfo.dwMask = TBIF_TEXT;
BtnInfo.pszText = szText;//要替换的文本
SendMessage(g_hWndMenuBar, TB_SETBUTTONINFO, IDM_MAIN_MENU_LEFT, (LPARAM)(LPTBBUTTONINFO)&BtnInfo);
其中g_hWndMenuBar可用函数SHFindMenuBar求得,该函数的参数就是menubar的所属窗口的hwnd
参考文章http://blog.csdn.net/coderwu/archive/2009/07/15/4350578.aspx