MFC 中 ActiveWindow 的类名
在我的 MDI 应用程序中,我正在主机中加载一个 DialogBar。但是我想在调用某个子窗口(GroupView、TrendView)时显示该 DialogBar。对于其他窗口,它应该隐藏(GraphView)。因此,对于用于调用的所有函数CMainFrame 的子窗口像这样隐藏 DialogBar。
void CMainFrame::OnGroupview()
{
.
.
.
m_RecentAlarms.ShowWindow(SW_HIDE);
}
对于某些视图
void CMainFrame::OnGroupview()
{
.
.
.m_RecentAlarms.ShowWindow(SW_SHOW);
}
,因此,当我单击 TrendView 时,我会得到 DialogBar,当我单击 GraphView 时,DialogBar 会被隐藏。但是,当我单击 TrendView 时,我再次没有得到 Dialogbar。因为应用程序是多个窗口。之前的 TrendView 位于 GraphView 后面,当我调用时它只显示在前面。
所以我的想法是我在大型机中有一个线程,该函数更新所有视图中的一些值。我将检查活动视图是否是 TrendView,如果是,则 DialogBar 将显示,否则它将被隐藏。
我用过这个..
CMDIChildWnd* pChild = ((CMainFrame*)AfxGetMainWnd())->MDIGetActive();
但我不知道如何获取活动视图仅是TrendView....
请帮助我解决这个问题。
In my MDI application I'm loading one DialogBar in mainframe.But I want to show that DialogBar when some child window gets invoked(GroupView,TrendView).For other windows it should be hidden(GraphView).So for all functions used to invoke child window from CMainFrame is hiding the DialogBar like this.
void CMainFrame::OnGroupview()
{
.
.
.
m_RecentAlarms.ShowWindow(SW_HIDE);
}
For some view
void CMainFrame::OnGroupview()
{
.
.
.m_RecentAlarms.ShowWindow(SW_SHOW);
}
So,when I click TrendView I get the DialogBar and when I click GraphView the DialogBar gets hidden.But Again when I click TrendView I didn't get Dialogbar. Because the application is multiple window.The previous TrendView is behind the GraphView, when i invoke just it show in front.
So my idea is I have one thread in Mainframe,this function updates some values in all views.In that I will check whether the Active View is TrendView, if it is so then DialogBar will be shown other wise it will be hidden.
I used this..
CMDIChildWnd* pChild = ((CMainFrame*)AfxGetMainWnd())->MDIGetActive();
But I dont know how to get the active view is TrendView only....
Pls help me in this issue.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在这里,
pChild
中有活动窗口。希望你有一个对应于每个视图(GraphView、TrendView 等)的成员变量
我想它会是这样的:
m_GraphView
,m_TrendView
等。现在您要做的就是比较两个窗口的句柄。
试试这个代码:
比较窗口的句柄是最好的方法。
Here, you have the active window in
pChild
.Hope you have a member variable corresponding to each view (GraphView, TrendView etc)
I suppose it will be something like:
m_GraphView
,m_TrendView
etc.Now what you have to do is compare the handles of both the windows.
Try this code:
To compare the handle of the window is the best way.
首先,CMDIFrameWnd::MDIGetActive 获取活动的 MDI 子框架。
接下来,您可以通过调用CFrameWnd::GetActiveView来获取其活动视图。
最后,调用CObject::IsKindOf。
示例:
注意:
IMPLMENT_DYNCREATE 为了使用 IsKindOf(RUNTIME_CLASS...
在 SDI/MDI MFC 应用中。
First, CMDIFrameWnd::MDIGetActive gets the active MDI child frame.
Next, you can get its active view by a call of CFrameWnd::GetActiveView.
Finally, call CObject::IsKindOf.
Example:
Notes:
IMPLEMENT_DYNCREATE in order to use IsKindOf(RUNTIME_CLASS...
in SDI/MDI MFC applications.