duilib 的DuiMessageBox
2016-01-09 16:45
549 查看
直接发源码!!
.h
[cpp] view
plaincopy
#ifndef DUI_MESSAGEBOX_HPP
#define DUI_MESSAGEBOX_HPP
#include "StdAfx.h"
#include "WndShadow.h"
enum Dui_MessageBox_Type
{
DUI_DEFAULT=0,
DUI_YESNO
};
enum Dui_MessageBox_Return
{
DUI_OK=0,
DUI_CANCEL,
DUI_YES,
DUI_NO
};
class CDuiMessageBox : public CWindowWnd, public INotifyUI, public CNotifyPump
{
public:
CDuiMessageBox(LPCTSTR lpTitle,
LPCTSTR lpMsg,
Dui_MessageBox_Type nType,
Dui_MessageBox_Return* nReturn);
LPCTSTR GetWindowClassName() const ;
virtual UINT GetClassStyle() const;
virtual void OnFinalMessage( HWND hWnd );
virtual void Notify(TNotifyUI& msg);
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT ResponseDefaultKeyEvent(WPARAM wParam);
DUI_DECLARE_MESSAGE_MAP()
public:
void OnClick(TNotifyUI& msg);
void OnPrepare(TNotifyUI& msg);
private:
CPaintManagerUI m_PaintManager;
CWndShadow m_WndShadow;//窗口阴影
CString m_szTitle;
CString m_szMsg;
Dui_MessageBox_Type m_nType;
Dui_MessageBox_Return* m_nReturn ;
};
#endif // DUI_MESSAGEBOX_HPP
Dui_MessageBox_Return DuiMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpTitle=NULL, Dui_MessageBox_Type nType=DUI_DEFAULT);
[cpp] view
plaincopy
</pre><pre name="code" class="cpp">.cpp
[cpp] view
plaincopy
<pre name="code" class="cpp">#include "DuiMessageBox.h"
/////////////////////////////////////////////////////////////////////////
DUI_BEGIN_MESSAGE_MAP(CDuiMessageBox, CNotifyPump)
DUI_ON_MSGTYPE(DUI_MSGTYPE_WINDOWINIT, OnPrepare)
DUI_ON_MSGTYPE(DUI_MSGTYPE_CLICK, OnClick)
DUI_END_MESSAGE_MAP()
CDuiMessageBox::CDuiMessageBox( LPCTSTR lpTitle,
LPCTSTR lpMsg,
Dui_MessageBox_Type nType,
Dui_MessageBox_Return* nReturn)
{
m_szTitle = lpTitle;
m_szMsg = lpMsg;
m_nType = nType;
m_nReturn = nReturn;
}
void CDuiMessageBox::OnFinalMessage( HWND hWnd )
{
m_PaintManager.RemoveNotifier(this);
m_PaintManager.ReapObjects(m_PaintManager.GetRoot());
delete this;
}
void CDuiMessageBox::Notify( TNotifyUI& msg )
{
return CNotifyPump::NotifyPump(msg);
}
void CDuiMessageBox::OnClick( TNotifyUI& msg )
{
CDuiString sCtrlName = msg.pSender->GetName();
if( sCtrlName == _T("okbtn") )
{
*m_nReturn = DUI_OK;
}
else if( sCtrlName == _T("cancelbtn"))
{
*m_nReturn = DUI_CANCEL;
}
else if( sCtrlName == _T("yesbtn"))
{
*m_nReturn = DUI_YES;
}
else if( sCtrlName == _T("nobtn"))
{
*m_nReturn = DUI_NO;
}
Close();
return;
}
LPCTSTR CDuiMessageBox::GetWindowClassName( void ) const
{
return _T("DuiMessageBox");
}
UINT CDuiMessageBox::GetClassStyle() const
{
return CS_DBLCLKS;
}
void CDuiMessageBox::OnPrepare( TNotifyUI& msg )
{
}
LRESULT CDuiMessageBox::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
SIZE szRoundCorner = m_PaintManager.GetRoundCorner();
if( !::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0) )
{
CDuiRect rcWnd;
::GetWindowRect(*this, &rcWnd);
rcWnd.Offset(-rcWnd.left, -rcWnd.top);
rcWnd.right++; rcWnd.bottom++;
HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
::SetWindowRgn(*this, hRgn, TRUE);
::DeleteObject(hRgn);
/*CTextUI* pMsgText = static_cast<CTextUI*>(m_PaintManager.FindControl(_T("msg_text")));
if (NULL != pMsgText)
{
int x = pMsgText->GetX();
int y = pMsgText->GetY();
int ynum = y + 70;
}*/
}
bHandled = FALSE;
return 0;
}
LRESULT CDuiMessageBox::OnNcHitTest( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam);
::ScreenToClient(*this, &pt);
RECT rcClient;
::GetClientRect(*this, &rcClient);
RECT rcCaption = m_PaintManager.GetCaptionRect();
if( pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
&& pt.y >= rcCaption.top && pt.y < rcCaption.bottom )
{
CControlUI* pControl = static_cast<CControlUI*>(m_PaintManager.FindControl(pt));
if( pControl && _tcscmp(pControl->GetClass(), _T("ButtonUI")) != 0 &&
_tcscmp(pControl->GetClass(), _T("OptionUI")) != 0 )
return HTCAPTION;
}
return HTCLIENT;
}
LRESULT CDuiMessageBox::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam )
{
LRESULT lRes = 0;
BOOL bHandled = TRUE;
switch (uMsg)
{
case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break;
//case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break;
//case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break;
case WM_NCPAINT: lRes = 0; break;
case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break;
case WM_GETMINMAXINFO: lRes = 0;bHandled = FALSE; break;
case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break;
default: bHandled = FALSE; break;
}
if (bHandled) return lRes;
if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes))
return lRes;
return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
}
#include <math.h>
LRESULT CDuiMessageBox::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_PaintManager.Init(m_hWnd);
/*
SIZE size = {0,0};
HDC hDC = m_PaintManager.GetPaintDC();
::SetBkMode(hDC, TRANSPARENT);
HFONT hOldFont = (HFONT)::SelectObject(hDC, m_PaintManager.GetFont(12));
::GetTextExtentPoint32(hDC, m_szMsg, m_szMsg.GetLength(), &size);
::SelectObject(hDC, hOldFont);
double nRow = sqrt(double(size.cx / size.cy / 10));*/
int nLinks = 0;
RECT rcText ={ 0, 0, 9999, 9999 };
CRenderEngine::DrawHtmlText(m_PaintManager.GetPaintDC(), &m_PaintManager, rcText, m_szMsg, 0, NULL, NULL, nLinks, DT_CALCRECT | DT_WORDBREAK);
int nClientX = rcText.right - rcText.left + 50;
int nClientY = rcText.bottom - rcText.top + 100 ;
if(nClientX < 240 ) nClientX = 240;
if(nClientY < 130 ) nClientY = 130;
m_PaintManager.SetInitSize(nClientX, nClientY);
RECT rcCaption = {0, 0, 0, nClientY};
m_PaintManager.SetCaptionRect(rcCaption);
m_PaintManager.SetRoundCorner(2, 2);
CVerticalLayoutUI* pRoot = new CVerticalLayoutUI;
pRoot->SetBkColor(0xFFCFDDD0);
RECT rcInset = {10, 2, 10, 2};
pRoot->SetInset(rcInset);
pRoot->SetBorderSize(2);
pRoot->SetBorderColor(0xFF314E34);
//提示标题
CLabelUI* pTitleLabel = new CLabelUI;
pTitleLabel->SetFixedHeight(30);
pTitleLabel->SetAttribute(_T("align"), _T("center"));
pTitleLabel->SetTextColor(0xFFA31515);
pTitleLabel->SetText(m_szTitle);
pRoot->Add(pTitleLabel);
pRoot->Add(new CControlUI);
//msg 正文
CTextUI* pMsgLabel = new CTextUI;
pMsgLabel->SetName(_T("msg_text"));
pMsgLabel->SetText(m_szMsg);
pMsgLabel->SetShowHtml(true);
pMsgLabel->SetAttribute(_T("align"), _T("center"));
//pMsgLabel->EstimateSize();
pRoot->Add(pMsgLabel);
pRoot->Add(new CControlUI);
//类型 按钮个数和功能
CHorizontalLayoutUI* pBtnHor = new CHorizontalLayoutUI;
pBtnHor->SetFixedHeight(40);
pBtnHor->Add(new CControlUI);
//pTitleHor->SetBkColor(0xFF1777EF);
//CControlUI* pControl = new CControlUI;
//pTitleHor->Add(pControl);
switch (m_nType)
{
case DUI_DEFAULT:
{
CButtonUI* pOKbtn = new CButtonUI;
pOKbtn->SetName(_T("okbtn"));
pOKbtn->SetText(_T("确定"));
pOKbtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pOKbtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pOKbtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pOKbtn->SetFixedWidth(60);
pOKbtn->SetFixedHeight(30);
pBtnHor->Add(pOKbtn);
}
break;
case DUI_YESNO:
{
CButtonUI* pYesbtn = new CButtonUI;
pYesbtn->SetName(_T("yesbtn"));
pYesbtn->SetText(_T("是(Y)"));
pYesbtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pYesbtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pYesbtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pYesbtn->SetFixedWidth(60);
pYesbtn->SetFixedHeight(30);
pBtnHor->Add(pYesbtn);
CButtonUI* pNobtn = new CButtonUI;
pNobtn->SetName(_T("nobtn"));
pNobtn->SetText(_T("否(N)"));
pNobtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pNobtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pNobtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pNobtn->SetFixedWidth(60);
pNobtn->SetFixedHeight(30);
pBtnHor->Add(pNobtn);
}
break;
default:
break;
}
pRoot->Add(pBtnHor);
pBtnHor->Add(new CControlUI);
m_PaintManager.AttachDialog(pRoot);
m_PaintManager.AddNotifier(this);
//m_PaintManager.SetBackgroundTransparent(TRUE);
//添加阴影
CWndShadow::Initialize(m_PaintManager.GetInstance());
m_WndShadow.Create(m_hWnd);
m_WndShadow.SetSize(4);
m_WndShadow.SetPosition(1, 1);
return 0;
}
//////////////////////////////////////////////////////////////////////////
Dui_MessageBox_Return DuiMessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpTitle/*=NULL*/, Dui_MessageBox_Type nType/*=0*/ )
{
Dui_MessageBox_Return nReturnId = DUI_OK;
if(NULL == lpTitle)
{
lpTitle = _T("提示");
}
CDuiMessageBox* pMsgBox = new CDuiMessageBox(lpTitle, lpText, nType, &nReturnId);
if( pMsgBox == NULL )
return DUI_OK;
pMsgBox->Create(hWnd, _T("DuiMessageBox"), UI_WNDSTYLE_DIALOG, 0 , 0, 0, 0, 0);
pMsgBox->CenterWindow();
pMsgBox->ShowModal();
return nReturnId;
}
[cpp] view
plaincopy
</pre><pre name="code" class="cpp">
源码下载:点击打开链接
.h
[cpp] view
plaincopy
#ifndef DUI_MESSAGEBOX_HPP
#define DUI_MESSAGEBOX_HPP
#include "StdAfx.h"
#include "WndShadow.h"
enum Dui_MessageBox_Type
{
DUI_DEFAULT=0,
DUI_YESNO
};
enum Dui_MessageBox_Return
{
DUI_OK=0,
DUI_CANCEL,
DUI_YES,
DUI_NO
};
class CDuiMessageBox : public CWindowWnd, public INotifyUI, public CNotifyPump
{
public:
CDuiMessageBox(LPCTSTR lpTitle,
LPCTSTR lpMsg,
Dui_MessageBox_Type nType,
Dui_MessageBox_Return* nReturn);
LPCTSTR GetWindowClassName() const ;
virtual UINT GetClassStyle() const;
virtual void OnFinalMessage( HWND hWnd );
virtual void Notify(TNotifyUI& msg);
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT ResponseDefaultKeyEvent(WPARAM wParam);
DUI_DECLARE_MESSAGE_MAP()
public:
void OnClick(TNotifyUI& msg);
void OnPrepare(TNotifyUI& msg);
private:
CPaintManagerUI m_PaintManager;
CWndShadow m_WndShadow;//窗口阴影
CString m_szTitle;
CString m_szMsg;
Dui_MessageBox_Type m_nType;
Dui_MessageBox_Return* m_nReturn ;
};
#endif // DUI_MESSAGEBOX_HPP
Dui_MessageBox_Return DuiMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpTitle=NULL, Dui_MessageBox_Type nType=DUI_DEFAULT);
[cpp] view
plaincopy
</pre><pre name="code" class="cpp">.cpp
[cpp] view
plaincopy
<pre name="code" class="cpp">#include "DuiMessageBox.h"
/////////////////////////////////////////////////////////////////////////
DUI_BEGIN_MESSAGE_MAP(CDuiMessageBox, CNotifyPump)
DUI_ON_MSGTYPE(DUI_MSGTYPE_WINDOWINIT, OnPrepare)
DUI_ON_MSGTYPE(DUI_MSGTYPE_CLICK, OnClick)
DUI_END_MESSAGE_MAP()
CDuiMessageBox::CDuiMessageBox( LPCTSTR lpTitle,
LPCTSTR lpMsg,
Dui_MessageBox_Type nType,
Dui_MessageBox_Return* nReturn)
{
m_szTitle = lpTitle;
m_szMsg = lpMsg;
m_nType = nType;
m_nReturn = nReturn;
}
void CDuiMessageBox::OnFinalMessage( HWND hWnd )
{
m_PaintManager.RemoveNotifier(this);
m_PaintManager.ReapObjects(m_PaintManager.GetRoot());
delete this;
}
void CDuiMessageBox::Notify( TNotifyUI& msg )
{
return CNotifyPump::NotifyPump(msg);
}
void CDuiMessageBox::OnClick( TNotifyUI& msg )
{
CDuiString sCtrlName = msg.pSender->GetName();
if( sCtrlName == _T("okbtn") )
{
*m_nReturn = DUI_OK;
}
else if( sCtrlName == _T("cancelbtn"))
{
*m_nReturn = DUI_CANCEL;
}
else if( sCtrlName == _T("yesbtn"))
{
*m_nReturn = DUI_YES;
}
else if( sCtrlName == _T("nobtn"))
{
*m_nReturn = DUI_NO;
}
Close();
return;
}
LPCTSTR CDuiMessageBox::GetWindowClassName( void ) const
{
return _T("DuiMessageBox");
}
UINT CDuiMessageBox::GetClassStyle() const
{
return CS_DBLCLKS;
}
void CDuiMessageBox::OnPrepare( TNotifyUI& msg )
{
}
LRESULT CDuiMessageBox::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
SIZE szRoundCorner = m_PaintManager.GetRoundCorner();
if( !::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0) )
{
CDuiRect rcWnd;
::GetWindowRect(*this, &rcWnd);
rcWnd.Offset(-rcWnd.left, -rcWnd.top);
rcWnd.right++; rcWnd.bottom++;
HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
::SetWindowRgn(*this, hRgn, TRUE);
::DeleteObject(hRgn);
/*CTextUI* pMsgText = static_cast<CTextUI*>(m_PaintManager.FindControl(_T("msg_text")));
if (NULL != pMsgText)
{
int x = pMsgText->GetX();
int y = pMsgText->GetY();
int ynum = y + 70;
}*/
}
bHandled = FALSE;
return 0;
}
LRESULT CDuiMessageBox::OnNcHitTest( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam);
::ScreenToClient(*this, &pt);
RECT rcClient;
::GetClientRect(*this, &rcClient);
RECT rcCaption = m_PaintManager.GetCaptionRect();
if( pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
&& pt.y >= rcCaption.top && pt.y < rcCaption.bottom )
{
CControlUI* pControl = static_cast<CControlUI*>(m_PaintManager.FindControl(pt));
if( pControl && _tcscmp(pControl->GetClass(), _T("ButtonUI")) != 0 &&
_tcscmp(pControl->GetClass(), _T("OptionUI")) != 0 )
return HTCAPTION;
}
return HTCLIENT;
}
LRESULT CDuiMessageBox::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam )
{
LRESULT lRes = 0;
BOOL bHandled = TRUE;
switch (uMsg)
{
case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break;
//case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break;
//case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break;
case WM_NCPAINT: lRes = 0; break;
case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break;
case WM_GETMINMAXINFO: lRes = 0;bHandled = FALSE; break;
case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break;
default: bHandled = FALSE; break;
}
if (bHandled) return lRes;
if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes))
return lRes;
return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
}
#include <math.h>
LRESULT CDuiMessageBox::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_PaintManager.Init(m_hWnd);
/*
SIZE size = {0,0};
HDC hDC = m_PaintManager.GetPaintDC();
::SetBkMode(hDC, TRANSPARENT);
HFONT hOldFont = (HFONT)::SelectObject(hDC, m_PaintManager.GetFont(12));
::GetTextExtentPoint32(hDC, m_szMsg, m_szMsg.GetLength(), &size);
::SelectObject(hDC, hOldFont);
double nRow = sqrt(double(size.cx / size.cy / 10));*/
int nLinks = 0;
RECT rcText ={ 0, 0, 9999, 9999 };
CRenderEngine::DrawHtmlText(m_PaintManager.GetPaintDC(), &m_PaintManager, rcText, m_szMsg, 0, NULL, NULL, nLinks, DT_CALCRECT | DT_WORDBREAK);
int nClientX = rcText.right - rcText.left + 50;
int nClientY = rcText.bottom - rcText.top + 100 ;
if(nClientX < 240 ) nClientX = 240;
if(nClientY < 130 ) nClientY = 130;
m_PaintManager.SetInitSize(nClientX, nClientY);
RECT rcCaption = {0, 0, 0, nClientY};
m_PaintManager.SetCaptionRect(rcCaption);
m_PaintManager.SetRoundCorner(2, 2);
CVerticalLayoutUI* pRoot = new CVerticalLayoutUI;
pRoot->SetBkColor(0xFFCFDDD0);
RECT rcInset = {10, 2, 10, 2};
pRoot->SetInset(rcInset);
pRoot->SetBorderSize(2);
pRoot->SetBorderColor(0xFF314E34);
//提示标题
CLabelUI* pTitleLabel = new CLabelUI;
pTitleLabel->SetFixedHeight(30);
pTitleLabel->SetAttribute(_T("align"), _T("center"));
pTitleLabel->SetTextColor(0xFFA31515);
pTitleLabel->SetText(m_szTitle);
pRoot->Add(pTitleLabel);
pRoot->Add(new CControlUI);
//msg 正文
CTextUI* pMsgLabel = new CTextUI;
pMsgLabel->SetName(_T("msg_text"));
pMsgLabel->SetText(m_szMsg);
pMsgLabel->SetShowHtml(true);
pMsgLabel->SetAttribute(_T("align"), _T("center"));
//pMsgLabel->EstimateSize();
pRoot->Add(pMsgLabel);
pRoot->Add(new CControlUI);
//类型 按钮个数和功能
CHorizontalLayoutUI* pBtnHor = new CHorizontalLayoutUI;
pBtnHor->SetFixedHeight(40);
pBtnHor->Add(new CControlUI);
//pTitleHor->SetBkColor(0xFF1777EF);
//CControlUI* pControl = new CControlUI;
//pTitleHor->Add(pControl);
switch (m_nType)
{
case DUI_DEFAULT:
{
CButtonUI* pOKbtn = new CButtonUI;
pOKbtn->SetName(_T("okbtn"));
pOKbtn->SetText(_T("确定"));
pOKbtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pOKbtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pOKbtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pOKbtn->SetFixedWidth(60);
pOKbtn->SetFixedHeight(30);
pBtnHor->Add(pOKbtn);
}
break;
case DUI_YESNO:
{
CButtonUI* pYesbtn = new CButtonUI;
pYesbtn->SetName(_T("yesbtn"));
pYesbtn->SetText(_T("是(Y)"));
pYesbtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pYesbtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pYesbtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pYesbtn->SetFixedWidth(60);
pYesbtn->SetFixedHeight(30);
pBtnHor->Add(pYesbtn);
CButtonUI* pNobtn = new CButtonUI;
pNobtn->SetName(_T("nobtn"));
pNobtn->SetText(_T("否(N)"));
pNobtn->SetNormalImage(_T("file='button_normal.png' corner='5,5,5,5'"));
pNobtn->SetHotImage(_T("file='button_hover.png' corner='5,5,5,5'"));
pNobtn->SetPushedImage(_T("file='button_pushed.png' corner='5,5,5,5'"));
pNobtn->SetFixedWidth(60);
pNobtn->SetFixedHeight(30);
pBtnHor->Add(pNobtn);
}
break;
default:
break;
}
pRoot->Add(pBtnHor);
pBtnHor->Add(new CControlUI);
m_PaintManager.AttachDialog(pRoot);
m_PaintManager.AddNotifier(this);
//m_PaintManager.SetBackgroundTransparent(TRUE);
//添加阴影
CWndShadow::Initialize(m_PaintManager.GetInstance());
m_WndShadow.Create(m_hWnd);
m_WndShadow.SetSize(4);
m_WndShadow.SetPosition(1, 1);
return 0;
}
//////////////////////////////////////////////////////////////////////////
Dui_MessageBox_Return DuiMessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpTitle/*=NULL*/, Dui_MessageBox_Type nType/*=0*/ )
{
Dui_MessageBox_Return nReturnId = DUI_OK;
if(NULL == lpTitle)
{
lpTitle = _T("提示");
}
CDuiMessageBox* pMsgBox = new CDuiMessageBox(lpTitle, lpText, nType, &nReturnId);
if( pMsgBox == NULL )
return DUI_OK;
pMsgBox->Create(hWnd, _T("DuiMessageBox"), UI_WNDSTYLE_DIALOG, 0 , 0, 0, 0, 0);
pMsgBox->CenterWindow();
pMsgBox->ShowModal();
return nReturnId;
}
[cpp] view
plaincopy
</pre><pre name="code" class="cpp">
源码下载:点击打开链接
相关文章推荐
- 照片浏览滑动效果UIScrollView和UIPageControl组合
- 使用uiautomator做UI测试
- 能否改变UIDatePicker的大小?怎么改变
- 分享个Duilib中基于wke的浏览器控件
- iOS开发 UI 正向传值 反向传值,Block传值
- 使用UITableView+FDTemplateLayoutCell计算cell的高度
- 【ZBar】ios错误ignoring file xxx missing required architecture x86_64 in file
- duilib : 在对话框中增加文件拖拽功能
- duilib : 滑动显示的窗口实现
- iOS UIButton的简单实用方法
- 关闭交互式服务检测(UI0Detect)
- LeetCode - Unique Binary Search Trees II
- 【ZBar】ios错误ignoring file xxx missing required architecture x86_64 in file
- win7下UE自动添加到右键菜单
- Duilib在MFC中使用
- 'UITextAlignmentCenter' is deprecated: first deprecated in iOS 6.0设置UILabel的居中对齐时出错
- VS编译duilib项目时候的错误解决方法整理
- iOS UI UIView基础概况
- duilib库的点九技术
- Codeforces 600B Queries about less or equal elements(二分查找)