直接发源码!!
.h
#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);
</pre><pre name="code" class="cpp">.cpp
<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