📄 tipwnd.cpp
字号:
#include "stdafx.h"
#include "setwnd.h"
#include "PluginMgr.h"
#include "bgwnd.h"
#include "basewnd.h"
#define TIMERID_AUTOCLOSE 312
#define TIMERID_AUTOCLOSEDELAY 313
#define TIMER_DELAY 4000
#define MAX_DELAYCOUNT 25
#define TIMER_FREQ 200
class CTipWnd : public CStandardPageWnd
{
public:
LPCTSTR GetWindowClassName() const;
void OnFinalMessage(HWND hWnd);
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
// INotifyUI
virtual void Notify(TNotifyUI& msg);
virtual CControlUI* OnCreateCtrlTree();
};
static HWND hDlgSet=NULL;
static int nDelaycount=0;
INT_PTR ShowTipWnd(HWND hWndParent)
{
_TRACE_FUNCTION_;
if (hDlgSet && IsWindow(hDlgSet)) return 0;
CPaintManagerUI::SetResourceInstance(g_hInstance);
CTipWnd* pWindow = new CTipWnd;
if( pWindow != NULL )
{
pWindow->Create(hWndParent, _T(""), UI_WNDSTYLE_DIALOG & (~(WS_VISIBLE | WS_BORDER | WS_SYSMENU | WS_CAPTION | WS_DLGFRAME)), WS_EX_WINDOWEDGE,CW_USEDEFAULT,CW_USEDEFAULT,600,480);
hDlgSet=pWindow->GetHWND();
RECT rcArea,rcDlg;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcArea, 0);
::GetWindowRect(hDlgSet, &rcDlg);
rcArea.left=rcArea.right-(rcDlg.right-rcDlg.left)-1;
rcArea.top=rcArea.bottom-(rcDlg.bottom-rcDlg.top)-1;
SetWindowPos(hDlgSet, NULL, rcArea.left, rcArea.top,0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);
pWindow->ShowWindow();
SetWindowPos(hDlgSet, HWND_TOPMOST, 0,0,0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOMOVE);
}
return 0;
}
void CloseTipWnd()
{
_TRACE_FUNCTION_;
if (hDlgSet)
{
SendMessage(hDlgSet,WM_CLOSE,0,0);
hDlgSet=NULL;
}
}
void CTipWnd::OnFinalMessage(HWND hWnd)
{
CStandardPageWnd::OnFinalMessage(hWnd);
hDlgSet=NULL;
delete this;
}
LPCTSTR CTipWnd::GetWindowClassName() const
{
return _T("TipWnd");
};
LRESULT CTipWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg==WM_TIMER)
{
if (wParam==TIMERID_AUTOCLOSEDELAY)
{
KillTimer(m_hWnd,TIMERID_AUTOCLOSEDELAY);
SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE) | WS_EX_LAYERED);
nDelaycount=MAX_DELAYCOUNT;
SetTimer(m_hWnd,TIMERID_AUTOCLOSE,TIMER_FREQ,NULL);
return 0;
}
if (wParam==TIMERID_AUTOCLOSE)
{
POINT pt;
RECT rcDlg;
GetCursorPos(&pt);
GetWindowRect(m_hWnd,&rcDlg);
if (PtInRect(&rcDlg,pt))
{
SetLayeredWindowAttributes(m_hWnd,0,255,LWA_ALPHA);
KillTimer(m_hWnd,TIMERID_AUTOCLOSE);
SetTimer(m_hWnd,TIMERID_AUTOCLOSEDELAY,TIMER_DELAY,NULL);
return 0;
}
nDelaycount--;
if (nDelaycount==0)
{
KillTimer(m_hWnd,TIMERID_AUTOCLOSE);
PostMessage(WM_CLOSE,0,0);
}
else
{
SetLayeredWindowAttributes(m_hWnd,0,255-(MAX_DELAYCOUNT-nDelaycount)*10,LWA_ALPHA);
}
return 0;
}
}
if (uMsg==WM_DESTROY)
{
KillTimer(m_hWnd,TIMERID_AUTOCLOSEDELAY);
KillTimer(m_hWnd,TIMERID_AUTOCLOSE);
}
return CStandardPageWnd::HandleMessage(uMsg, wParam, lParam);
}
CControlUI* CTipWnd::OnCreateCtrlTree()
{
CDialogBuilder builder;
return builder.CreateFromResource(MAKEINTRESOURCE(IDR_XML3),_T("XML"),this,m_hWnd);
}
void CTipWnd::Notify(TNotifyUI& msg)
{
if( msg.sType == _T("windowinit") )
{
TCHAR szTmp[1024];
CTextPanelUI* pTxt = static_cast<CTextPanelUI*>(m_pm.FindControl(_T("lblcaption")));
if (pTxt)
{
wsprintf(szTmp,_T("<I %d>%s"),IDI_ICON1,_T("组件管理"));
pTxt->SetText(szTmp);
}
pTxt = static_cast<CTextPanelUI*>(m_pm.FindControl(_T("lbltxt")));
if (pTxt)
{
pTxt->SetText(_T(" 在这里,您可以定制组件选项,调用多项强大的功能,让操作更自由,交流更轻松。"));
}
pTxt = static_cast<CTextPanelUI*>(m_pm.FindControl(_T("lblclose")));
if (pTxt)
{
pTxt->SetText(_T("<a>关闭</a>"));
}
pTxt = static_cast<CTextPanelUI*>(m_pm.FindControl(_T("lblurl")));
if (pTxt)
{
pTxt->SetText(_T("<a>查看新版</a>"));
}
SetTimer(m_hWnd,TIMERID_AUTOCLOSEDELAY,TIMER_DELAY,NULL);
return;
}
if ( msg.sType == _T("link"))
{
if (msg.pSender->GetName() == _T("lblclose"))
{
PostMessage(WM_CLOSE,0,0);
return;
}
if (msg.pSender->GetName() == _T("lblurl"))
{
ShellExecute(m_hWnd,_T("open"),_T("http://231la.com"),NULL,NULL,SW_NORMAL);
return;
}
}
if ( msg.sType == _T("click"))
{
if (msg.pSender->GetName() == _T("btnview"))
{
ShowSetDialog();
PostMessage(WM_CLOSE,0,0);
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -