1.什么是基本控件(基本对象),什么是复杂控件?
答: 基本控件是指简单的比如 显示文字或图片的基本单元,以及按钮等简单控件。这些控件称作为基本对象就是因为可以在界面工具中直接创建配置,这些对象将可以被框架直接创建。
复杂控件是由一些基本的控件组成的而已,只是它一般外面有一个自己的控件类实现对这些基本控件的复合操作,或是动画或是其它显示动作组合。
2. 怎样动态创建一个基本控件或复杂控件?
答: 界面工具配置的基本控件由框架创建,要动态创建基本控件需要用到CIDUIProc::CreateObjByName,复杂的控件则可以创建duictrls.h里面的那些类的对象,或自己实现的。
3. 怎样写一个自己的复杂控件?
答: duictrls中间的控件都是用户可以自行实现的。DEMO中有一个时钟的控件可以作参考。总之复杂的就是对简单的对象的一些操作集合。
4. 怎样实现一个动画?
答:CONSTVAR本身就是一个不断刷新的动画。CDuiDlg::OnAnimation会被不断的调用,所以以他(一个timer)来控制动画的实现。
5. 如何实现运行时换肤?
答:所谓的换肤,实际上是不同的对话框对象,每个对话框有不同的ID。只是我们把它当作是一个对话框比如主界面的几种形态而已,每次显示的是客户需要的那个对象。可以参照 DEMO的代码实现。值得一提的是,这些对话框对象可以由不同类创建。也就是说,假设你有三个主对话框。你甚至可以为主界面写三个不同类。但如果控件类型差别不大,用一个类实现也可以。
6. 能不能与MFC一起用?
答: CONSTVAR的绘图缓冲大小是初始化传入的尺寸大小,是固定的,不能动态改变。CONSTVAR自己创建的真窗口尺寸一定,但是实在要用MFC的控件,首先绘制接口不能使用DDRAW,只能是GDI对窗口绘画,
另外最好在自己创建的另一个MFC真窗口中使用。因为MFC的窗口尺寸和个数,STYLE等是自已定义的,所以理论上来说能组合出大部分想要的效果。