Interface research, after three stages: traditional Win32 window, Win32 window sub-class self-painting, windowless Interface development (DIRECTUI). These three phases have intersections, which are generally increasing over time.
The first stage: 04-05 years at that time in the graduate internship period, in the Mentor company to do GIS platform development, for the interface requirements are not high, but there are some custom development, that period is basically codeproject, learning the regular window programming skills, those APIs can do those things, what effect will be caused, With those side effects, the most straightforward way to know how to do an effect over time is to combine those APIs. There was not much work to do at the time, but it was tedious to invoke the control over a long period of time, when I looked at the ArcGIS platform and started using the Web page to do some interface, limited to the knowledge at that time, unable to get the research path. Then I learned a library of interfaces called BCG, which began to come into the self-painting phase.
The second stage: 06-07 years at the beginning of the BCG Interface Library Research, speaking of this matter, feel that the leaked code on the level of software development in our country to improve a great help. The BCG interface Library was modeled at the time by the Office2003 interface style, simulating it very much like but its code itself is not very clear, the partition of the module is not at a glance. He was at that time the open-source Cjlib defeated, but then was Cjlib Business company Codejoke Dry, until finally with the VC8 MFC weak weak union, hasty form a MFCX, now see the use of the company very few. Codejoke's XTP is also a leak in the way to have the opportunity to learn that his interface components are reasonable, the code is very clear, especially in the skinframework framework, separate to compile a DLL can be used to achieve the normal window skin format can be compatible with XP. It's also him, let me completely abandon the normal window of the sub-class self-painting work, in turn to study his implementation, because he has achieved the ultimate. Later I 08 years of graduation design is based on him, the topic is the software structure, various forms of interface plug-in construction software framework. At this time QQ has been to the windowless development, when I got the concept of Directui, the beginning of windowless interface research.
Stage Three: 07-now. The first is to research http://www.viksoe.dk/code/windowless1.htm this open source, I believe many people know also studied. He abstracted some windowless interface elements, translated regular window messages to explain and re-sent to windowless elements, introduced some ddraw effects, was excited to have access to such code at the beginning, the interface looks very shocking, especially the main interface animation effect. He also has obvious drawbacks: there is a problem with the calculation that does not support Unicode,pretytext, and a mix of local windows and windowless layouts is obscured. Based on him, I made my first interface framework and applied it to the company's commercial products, which can be admired from here: http://www.cppblog.com/wlwlxj/archive/2007/08/28/31014.html. Because of his windows and windowless elements are not very strong abstraction, so want to really use it to do a very powerful interface framework has difficulty, later look at the interface of QQ, Thunderbolt, feel that the interface element is not universal, and lack of dynamic ability, there are some ideas in this post mentioned:/HTTP Hi.baidu.com/wlwel/blog/item/ad08bfc8108ff78dc9176808.html. What I thought I might need is the dynamic interface of the Web page, the processing of the graphic image, and the dynamic layout of the interface. I think of the Win2000 leaking code in my hand, and I started a crazy thing: porting the IE part of the code, as long as the interface engine, with CSS and filters, Support for various interactive events, that's what I thought at the time. Lasted 8 months, out of the results: http://www.cppblog.com/wlwlxj/archive/2009/06/28/88695.html. This time failed, can not be commercialized application, there are many problems, the focus of the button has 1 pixel deviation, css because of that IE version is relatively low, very limited and irregular, filter because a component creation is not successful and no code can not be used. Collation of the code has more than 30 trillion, the code itself is not clear structure, cut off the place is very many and very messy, and finally I do not have the ability to continue to modify. In the middle there are many times to give up, and not convinced to continue, and finally came down. The biggest help I can get from this research is in a huge software code, how to find what you want, and how to slash the code aggressively. It's like a grand garden, full of technology, too many things to learn. Later I realized that the Web page layout features, desktop software features desktop software, the need for interoperability. Next, I studied the COMCTL32 section for several months and finally found out that the edit button needs to go to the Ntuser section,Even want to go toward the graphics card driver calls, then stopped, of course, there are some results: http://www.cnblogs.com/wlwel/archive/2010/05/10/1732160.html, is a failure of research, but learned a lot of things. There was a time when I even deliberately avoided the development of the interface until I came into contact with the Chrome browser and watched his open source.
Work for Chrome Open source
Chrome open source, mainly to extract the view part of the code, relying on his base, GFX, Skia, app parts, I have base into base, Message_framework, Rfc_algorithm, Skia with Gdiplus Replace merge to Gfx,app partition to animation and view_framework, remove the support part of Linux and Mac platform, remove some unnecessary features such as Web drag related, form a minimal development framework, and modified the title bar self-painted a bug. The base section initially wanted to replace it with boost, and later found that it was a lot of work and didn't dare to do it. As follows:
All tidy code download.
Follow-up work
Continue to increase the control, functionality, and modify some comments in existing code issues. Accept all criticisms and suggestions, but do not assault. Hope to see more of other people's work, now the open source world is too rich, many things are not contact, but will not calm down to study.
Note: The project is 2005, additional required header files <vsstyle.h> <vssym32.h> can be copied from the Vc2008 SDK or downloaded from anywhere else. 2008 Direct conversion to compile.
From:http://www.cppblog.com/wlwlxj/archive/2011/03/20/142246.aspx
Http://www.cnblogs.com/lidabo/p/3644475.html
Three stages of the research interface