读书人

怎样把一个窗口在程序的最上层显示,该

发布时间: 2012-03-01 10:25:46 作者: rapoo

怎样把一个窗口在程序的最上层显示
不是再所有窗口的最上层。比如A中打开B则B始终在A的上层。
好像如同Dreamweaver4的窗体样式,即程序运行,会自动打开许多属性窗口,而这些属性窗口是浮动在主窗口上方的(不管是否获得焦点),当切换成其它应用程序时,这些属性窗口应该跟主窗口一同置后。
用非模态对话框可以解决这个问题,我现在想问一下我直接从CWnd继承的一个类该如何设置CWnd样式等 才能有这个效果。

[解决办法]
看样子你得处理焦点变化的消息,获得焦点的时候怎么做,失去的时候又怎么做,只是一个属性设置是达不到这个要求的.
[解决办法]
WS_EX_TOOLWINDOW Creates a tool window, which is a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the task bar or in the window that appears when the user presses ALT+TAB.
[解决办法]
自己用小程序试下非模态怎么实现
[解决办法]
SetForegroundWindow
[解决办法]
为什么非得要非模对话框呢?子窗体的Z序永远都在父窗的Z序之上,像photoshop dreamwaver里面的那些工具窗口都是主框加的子窗体,所以浮动在主框架之上,你只要创那子窗体就可以,不用非得非模态对话框才可以的。

你可以在View类或者框架类中定义一个你派生于CWnd类的子类的成员变量,如
CMyWnd m_wnd;

然后重载View类或者框架类的OnCreate()函数,在里面生成你的窗体即可
m_wnd.CreateEx(0,AfxRegisterWndClass(0,NULL,NULL,NULL),_T( "My Wnd "),
WS_CHILD|WS_CAPTION|WS_VISIBLE,CRect(0,0,700,700),this,0);

读书人网 >VC/MFC

热点推荐