win界面开发技术

windowless或者称handleless,也就是无句柄窗口,在设计和实现的时候,每个控件都自己实现,最后画到父窗口中。

另一种伪windowless是用标准mfc控件,然后通过hook或其它远程线程注入等技术,让spy++等软件,看不到窗口句柄,主要是为防止盗号木马通过edit窗口句柄,盗取用户名和密码。

windowless的致命缺点

 

 

1、无窗口句柄,所有您以前关于“窗口”概念的知识都白学了。您将不可能使用::ShowWindow(hWnd, SW_HIDE)来隐藏一个窗口,也不能使用::MoveWindow来移动一个窗口。
2、所有您以前学习的关于“消息”的知识也作废了。您不可能使用::SendMessage(m_hWnd, WM_SETTEXT, 0, (LPARAM)_T("Hello world"));来设置窗口标题。
3、如果您的程序已经写好,需要花费比开发程序还要长的时间来移值到DirectUI界面上。
4、重新学习一套系统接口和概念。
5、如果不是国际知名公司的产品,产品的稳定性和可发展性无法保证。
6、如果您的功能层代码需要与UI层交互,例如,要向UI窗口发送消息,那么您的功能层代码也要做相应的修改,所以windowless类的界面库,不仅仅影响UI层,还影响功能层。
7、窗口的剪裁、激活、绘制、消息循环等等全部需要模拟。
9、无法对编译好的exe进行后期汉化、编写插件等常规操作。运行中的程序也无法响应其它程序发来的标准消息,例如隐藏控件、设置控件文本等。
10、不支持MFC的文档/视图框架。
综上,windowless比传统win32窗口结构有很多局限性和不确定性

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(界面开发)