在我的SDI应用程序中,我使用this文章中的CWTLTabViewCtrl
类。从子视图WTL更新状态栏
我想知道如何从子视图更新主框架的状态栏。
在为MainFrm.h代码:
CreateSimpleStatusBar();
// create tabctrl
CTabViewCtrl m_MainTabCtrl;
m_hWndClient = m_MainTabCtrl.Create(
m_hWnd, rcDefault, NULL,
WS_CHILD | WS_VISIBLE, WS_EX_STATICEDGE);
m_MainTabCtrl.AddPeopleTab(L"People);
在CTabViewCtrl
类的代码:
class CTabViewCtrl : public CWTLTabViewCtrl
{
public:
CTabViewCtrl()
{
}
virtual ~CTabViewCtrl()
{
}
void AddPeopleTab(LPCTSTR inTabName)
{
auto tabPeople = CTabPeople;
tabPeople->Create(*this, rcDefault, nullptr, WS_CHILD, WS_EX_STATICEDGE);
AddTab(inTabName, *tabPeople, FALSE, 0, (LPARAM)theProcessesView);
}
public:
DECLARE_WND_SUPERCLASS(NULL, CWTLTabViewCtrl::GetWndClassName())
BOOL PreTranslateMessage(MSG* pMsg)
{
pMsg;
return FALSE;
}
BEGIN_MSG_MAP_EX(CTabViewCtrl)
REFLECT_NOTIFICATIONS()
CHAIN_MSG_MAP(CWTLTabViewCtrl)
END_MSG_MAP()
};
的代码在我的CTabPeople
类(从这个观点我想更新状态栏在mainfrm.h
):
class CTabPeople : public CWindowImpl<CTabPeople, CListViewCtrl>,
public CCustomDraw<CTabPeople>
{
[snip]
public:
DECLARE_WND_SUPERCLASS(NULL, CListViewCtrl::GetWndClassName())
BOOL PreTranslateMessage(MSG* pMsg)
{
pMsg;
return FALSE;
}
BEGIN_MSG_MAP(CTabPeople)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
COMMAND_ID_HANDLER(IDM_PROCESSTAB_REFRESH, OnMenuRefresh)
REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnColumnClick)
CHAIN_MSG_MAP_ALT(CCustomDraw, 1)
END_MSG_MAP()
LRESULT OnMenuRefresh(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&bHandled)
{
// Here i would like to update the status bar created at the mainfrm.h
// something like UISetText(0, L"Updating..");
}
[snip]
}
来自res目录操作搜索我这样做似乎有两种方法来更新状态栏:使用状态栏
-
从
- 直接吧
CTabPeople
视图
我的问题是如何在我的代码中实现上述选项之一。
谢谢。