引入duilib时请确保引入头文件开始时先引入COMUTIL.H头文件
#include "UIlib.h"
duilib基本程序结构
在stdafx.h文件中加入
<span style="font-size:18px;">#include "COMUTIL.H"
#include "UIlib.h"
using namespace DuiLib;</span>
<span style="font-size:18px;">#ifndef LoginView_h__
#define LoginView_h__
class LoginView :
public WindowImplBase// 只能放在最后,否则其消息路由出问题
{
public:
DUI_DECLARE_MESSAGE_MAP()
public:
LoginView(void);
~LoginView(void);
void on_btn_click( DuiLib::TNotifyUI &msg );
virtual CDuiString GetSkinFolder() { return _T ("skin\\"); }
virtual CDuiString GetSkinFile() { return _T("login.xml"); }
virtual LPCTSTR GetWindowClassName( void ) const { return _T("LoginView"); }
};
#endif // LoginView_h__</span>
<span style="font-size:18px;">#include "StdAfx.h"
#include "LoginView.h"
DUI_BEGIN_MESSAGE_MAP(LoginView, WindowImplBase)
DUI_ON_MSGTYPE(DUI_MSGTYPE_CLICK,on_btn_click)
DUI_END_MESSAGE_MAP()
LoginView::LoginView(void)
{
}
LoginView::~LoginView(void)
{
}
void LoginView::on_btn_click( DuiLib::TNotifyUI &msg )
{
}</span>
<span style="font-size:18px;">// chatme.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "chatme.h"
#include "LoginView.h"
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
HRESULT Hr = ::CoInitialize(NULL);
if( FAILED(Hr) ) return 0;
LoginView login_view;
login_view.Create(NULL, _T("LoginView"), UI_WNDSTYLE_DIALOG, WS_EX_STATICEDGE | WS_EX_APPWINDOW);
login_view.CenterWindow();
CPaintManagerUI::MessageLoop();
::CoUninitialize();
return 0;
}</span>
问:如何把资源放入zip?
答: 先SetResourcePath设置资源目录,再SetResourceZip设置压缩资源文件名
问:如何设置窗体的初始化大小?
答:设置XML文件的Window标签的size属性。
问:如何设置鼠标可拖动窗体的范围大小?
答:设置XML文件的Window标签的caption属性。
问:如何设置窗体可以通过拖动边缘改变大小?
答:在窗体创建函数的第三个参数设置为UI_WNDSTYLE_FRAME才可响应拖动改变大小,和双击标题事件。
问:为何鼠标移动到边缘没有改变窗体大小的箭头出现,不能通过拖动改变窗体大小?
答:设置window标签的sizebox属性,例如sizebox="2,2,2,2"
问:窗体不可双击最大化如何实现?
答:在窗体创建函数的第三个参数设置为UI_WNDSTYLE_DIALOG。
问:应用程序exe图标如何设置?
答:使用窗体成员函数SetIcon,参数为资源icon的id。
问:初始化时,最大化窗体如何实现?
答:调用窗体的SendMessage给窗体发送最大化消息SC_MAXIMIZE,SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE,0);
问:动态改变窗体的大小如何实现?
答:使用窗体函数ResizeClient,参数分别重设的宽和高。
问:如何设置窗体屏幕居中显示?
答:使用窗体的CenterWindow函数。
问:窗体透明度如何设置?
答:设置window标签属性bktrans="true" alpha="200"