难题:DoModal的功能如果要让自己来实现有什么方法没有?
问题是这样的,现在有一个继承自CWnd的类,当程序运行到“需要使用DoModal功能”的地方时,窗口早就已经通过CreateEx创建了,只是被隐藏着而已。
所以设想自己模拟一个类似DoModal的功能,原来DoModal的“确定”、“取消”并不销毁窗口,而只是隐藏窗口而已。
上面这些的实现基本上没有问题,就是在ShowWindow(SW_SHOW)后自己处理一下消息循环就OK了,但是现在遇到以下几个难题:
1、模拟DoModal,必定要使“AfxGetMainWnd()”EnableWindow(FALSE),如果将那个已经创建CWnd的窗口的父窗口设为“AfxGetMainWnd()”,结果连它一起被屏蔽了;而如果不设这个父窗口,那么无法保证这个弹出窗口永远在主窗口之上。
2、如果不对这个CWnd的窗口设置WS_EX_TOOLWINDOW属性,那么任务栏下面就有它的一个窗口按钮;而如果设置了这个属性,那么Alt+Tab里面就找不到这个进程的窗口了。
3、如果是要新建一个继承于CDialog的类,那么必须要在资源里面也新建一个对话框,而我这个类是要直接提供给别人用的,如果还要求别人去修改资源,显然是不合适的。
请教高人,有没有什么解决办法?