原文网址:http://hi.baidu.com/jakisyhzurbvxzq/item/ade6d1f1cc6027a530c19904
1.ccombobox的调用
首先,如果只是简单的重载,没有多大的用处(前提是xml和wtl),不能很好的处理外观。即使响应了drawitem也没有什么办法,因为如果你是在主函数中申请ccombobox c;然后用c去调用,wm_drawitem不会响应到重载的函数里去,它只会套你调用的那个cpp里就终止了。所以最好的办法,就是要重写ccombobox,写的内容可以参照原先的写法,分为popup(弹出下拉部分)和上面的编辑框(edit)然后就是为了美化界面描边,也就是drawborde。
其次,如果你是直接调用系统的ccombobox一定要在dwstyle里加上CBS__DROPDOWN(之类的),而你自己编写的则要看你调用的dwstyle了。不过一般CHILD呀visible都可以合适的选上。
2.cedit的调用
这该是最简单了吧,要注意的是一定要加。。。border,不然不显示的哟
3.dlgfile的使用
这个控件的使用非常的方便,就是你将一个文件里面的dlg里的内容,单独放在另一个xml里,注意这里面没有,foot只layer,body,header有简单的你要表示的内容。然后在资源文件里给他一个ID,在需要调用的文件里直接些
但是如果是老版的,又想解决多次在不同的地方调用同一个dlg的内容怎么办呢,我想可以这样:
第一步:将需要多次调用的dlg内容,连dlg一起放到一个新的xml里,但是这一次要有layer,body,并且要适当的设置width,height.
记住哟,child非常的重要,这表示他可以嵌入的其它的xml里去
第二步:在需要调用的地方写一个
第三步:新建一个test.h和test.cpp,文件的内容很简单,test.h只需要有staxf.h头文件,然后定义个类,类继承ckuiddialogimpl并写上<类名称> example:class Csearch: public CKuiDialogImpl
然后由构造,析构, OnInitDialog()初始函数。这是函数调用动作的路口
LRESULT OnInitDialog( HWND hDlg, LPARAM lParam );//函数体内,写你要进行的操作
其它的都不用写实体了,最主要的是,构造函数时要加载你的xml
Csearch::Csearch( ):CKuiDialogImpl
还有就是void OnDestroy(){;}
第四步:在需要调用的.h里声明刚刚定义类的的一变量,注意要是指针(例如*p),然后在cpp文件里,
(p=new 类());
p->create(GetviewhWnd(),"",Null);
p->SetDlgCtrlID("123");
p->showwindow(SW_SHOW);
这样就可以显示了
4.弹出对话框
这个就先做出和上面的差不多,只是这个xml是一个完整体,且不需要child,尝试写出弹出的一个界面,然后再xml里面进行丰富。最简单的方法是重载msgbox,然后和你写的xml进行绑定,界面在xml里进行完善。
5.listview 调用
系统的不好看,还是要重写
6.同一个地方显示不同的界面,可以用show来决定,当前显示pane
7.消息的显示意义
KUI_NOTIFY_MAP(IDC_RICHVIEW_WIN)
KUI_NOTIFY_COMMAND(OnBkCommand)//一般用户嵌套的窗口函数响应,和onsyscommand不能同时使用
KUI_NOTIFY_ID_COMMAND(T_Search_date,T_search_dates)//ID绑定响应的动作
KUI_NOTIFY_MAP_END()
BEGIN_MSG_MAP_EX(Csearch)
MSG_KUI_NOTIFY(IDC_RICHVIEW_WIN)
CHAIN_MSG_MAP(CKuiDialogImpl
MSG_WM_INITDIALOG(OnInitDialog)//初始化
MSG_WM_DESTROY(OnDestroy)//注销
REFLECT_NOTIFICATIONS_EX()
END_MSG_MAP()
要用c++些程序,它是绿色的,可以免费升级,而不用MFC是因为很多系统的空间大多数不好看,所以选择可以自由封装的wtl。