點擊右邊

12DUILib經典猴塞雷娛樂城教程(實例)

Duilib經典實例教程;1根本框架;一個簡略的Duilib法式通常為上面六合彩結果號碼這個模樣的:;//Duilib使用配置部門;#pragmaonce;#defineWIN32_LEAN_AND_ME;#define_CRT_SECURE_NO_DE;#include<windows.h>;#include<objbase.h>;#include&


Duilib經典實例教程
1 根本框架
一個簡略的Duilib法式通常為上面這個模樣的:
// Duilib使用配置部門
#pragma once
#define WIN32_LEAN_AND_MEAN
#define _CRT_SECURE_NO_DEPRECATE
#include <windows.h>
#include <objbase.h>
#include 公眾..\DuiLib\UIlib.h公眾
using namespace DuiLib;
#ifdef _DEBUG
# ifdef _UNICODE
# pragma comment(lib,”大眾..\\bin\\DuiLib_ud.lib公眾)
# else
# pragma comment(lib,”大眾..\\bin\\DuiLib_d.lib公眾)
# endif
#else
# ifdef _UNICODE
# pragma comment(lib,”大眾..539二三四星連碰多少錢\\bin\\DuiLib_u.lib”大眾)
# else
# pragma comment(lib,”大眾..\\bin\\DuiLib.lib”大眾)
# endif
#endif
// 窗話柄例及新聞相應部門
class CFrameWindowWnd : public CWindowWnd,public INotifyUI
{
public:
CFrameWindowWnd() { };
LPCTSTR GetWindowClassName() const { return _T(“大眾UIMainFrame公眾); };
UINT GetClassStyle() const { return UI_CLASSSTYLE_FRAME | CS_DBLCLKS; };
void OnFinalMessage(HWND /*hWnd*/) { delete this; };
void Notify(TNotifyUI& msg)
{
if( msg.sType == _T(公眾click公眾) ) {
if( msg.pSender->GetName() == _T(“大眾closebtn”大眾) ) {
Close();
}
}
}
LRESULT HandleMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
if( uMsg == WM_CREATE ) {
m_pm.捕魚達人外掛Init(m_hWnd);
CControlUI *pButton = new CButtonUI;
pButton->SetName(_T(“大眾closebtn”大眾));
pButton->SetBkColor(0xFFFF0000);
m_pm.AttachDialog(pButton);
m_pm.AddNotifier(this);
return 0;
}
else if( uMsg == WM_DESTROY ) {
::PostQuitMessage(0);
}
LRESULT lRes = 0;
if( m_pm.MessageHandler(uMsg,wParam,lParam,lRes) ) return lRes;
return CWindowWnd::HandleMessage(uMsg,lParam);
}
public:
CPaintManagerUI m_pm;
};
// 法式進口及Duilib初始化部門
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE /*hPrevInstance*/,LPSTR /*lpCmdLine*/,int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if( pFrame == NULL ) return 0;
pFrame->Create(NULL,_T(“大眾測試”大眾),UI_WNDSTYLE_FRAME,WS_EX_WINDOWEDGE); pFrame->ShowWindow(true);
CPaintManagerUI::MessageLoop();
return 0;
}
可以望出,這個法式分三個部門:
?
?
? Duilib使用配置部門,這個部門都是一些使用Duilib所必要的頭文件以及主動鏈接到響應的Duilib庫,一般來說根本上不消篡改。 窗話柄例及新聞相應部門,根本的窗話柄現類以及簡略的新聞相應,必要重點存眷的是void Notify(TNotifyUI& msg)中的事宜處置,這是Duilib法式最緊張的部門。 法式進口及Duilib初始化部門,Duilib初始化以及窗口創立。
編譯這個法式,浮現以下結果:
點擊赤色地區的恣意地位,窗口會立刻封閉。如許咱們就實現了最簡略的一個Duilib法式編寫,固然這個例子還不克不及揭示Duilib的強盛,但也算是麻雀雖小,肝膽俱全了。
由于許多美觀的界面都不使用體系的題目欄以及邊框這些非客戶區繪制,咱們也把這失,點竄CFrameWindowWnd:: HandleMessage為:
LRESULT HandleMessage(UINT uMsg,LPARAM lParam)
{
if( uMsg == WM_CREATE ) {
m_pm.Init(m_hWnd);
CControlUI *pButton = new CButtonUI;
pButton->SetName(_T(“大眾closebtn公眾));
pButton->SetBkColor(0xFFFF0000);
m_pm.AttachDialog(pButton);
m_pm.AddNotifier(this);
return 0;
}
else if( uMsg == WM_DESTROY ) {捕 魚 達人-大型 機 台 打 魚 完美移植
::PostQuitMessage(0);
}
else if( uMsg == WM_NCACTIVATE ) {
if( !::IsIconic(m_hWnd) ) {
return (wParam == 0) ? TRUE : FALSE;
}
}
else if( uMsg == WM_NCCALCSIZE ) {
return 0;
}
els捕魚達人-遊戲e if( uMsg == WM_NCPAINT ) {
return 0;
}
LRESULT lRes = 0;
if( m_pm.MessageHandler(uMsg,lParam);
}
編譯運轉,咱們失去以下結果:
2 編寫界面xml
為了使用xml進行界面結構,必要把后面的Duilib法式框架中的HandleMessage輕微篡改一下:
LRESULT HandleMessage(UINT uMsg,LPARAM lParam)
{
if( uMsg == WM_CREATE ) {
m_pm.Init(m_hWnd); CDialogBuilder builder;
CControlUI* pRoot = builder.Create(_T(公眾test1.xml”大眾),(UINT)0,NULL,&m_pm); ASSERT(pRoot && “大眾Failed to parse XML公眾);
m_pm.AttachDialog(pRoot);
m_pm.AddNotifier(this);
return 0;
}
else if( uMsg == WM_DESTROY ) {
::PostQuitMessage(0);
}
else if( uMsg == WM_NCACTIVATE ) {
if( !::IsIconic(m_hWnd) ) {
return (wParam == 0) ? TRUE : FALSE;
}
}
else if( uMsg == WM_NCCALCSIZE ) {
return 0;
}
else if( uMsg == WM_NCPAINT ) {
return 0;
}
LRESULT lRes = 0;
if( m_pm.MessageHandler(uMsg,lParam);
}
灰色部門透露表現篡改的部門。
然后咱們來編寫一個簡略的xml:
<?xml version=”大眾1.0″大眾 encoding=”大眾UTF-8″大眾?>
<Window mininfo=”大眾200,360公眾 size=”大眾 480,320 公眾>

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。