// informationtip.cpp : implementation file
//
#include "stdafx.h"
#include "taskmng.h"
#include "informationtip.h"
#ifdef _debug
#define new debug_new
#undef this_file
static char this_file[] = __file__;
#endif
/////////////////////////////////////////////////////////////////////////////
// cinformationtip dialog
cinformationtip::cinformationtip(cwnd* pparent /*=null*/)
: cdialog(cinformationtip::idd, pparent)
{
//{{afx_data_init(cinformationtip)
//}}afx_data_init
}
void cinformationtip::dodataexchange(cdataexchange* pdx)
{
cdialog::dodataexchange(pdx);
//{{afx_data_map(cinformationtip)
ddx_control(pdx, idc_button_tipinfo, m_buttonctrl_tipinfo);
//}}afx_data_map
}
begin_message_map(cinformationtip, cdialog)
//{{afx_msg_map(cinformationtip)
on_wm_size()
on_wm_timer()
on_wm_killfocus()
on_wm_mousemove()
on_wm_move()
on_wm_ctlcolor()
on_wm_destroy()
//}}afx_msg_map
end_message_map()
/////////////////////////////////////////////////////////////////////////////
// cinformationtip message handlers
bool cinformationtip::oninitdialog()
{
cdialog::oninitdialog();
// todo: add extra initialization here
/*获得屏幕高度和宽度*/
m_screenpos.m_screenx = ::getsystemmetrics(sm_cxscreen);
m_screenpos.m_screeny = ::getsystemmetrics(sm_cyscreen);
m_dwtime = 2000; /*初始停留时间:10秒*/
m_dwstep = 20; /*初始平滑度*/
m_irate = 0; /*对话框充实度*/
m_isalreadyshow = true;
m_dlkbkbrush.createsolidbrush(rgb(212,208,200));
m_tipinf_font.createfont(16,0,0,0,fw_bold,false,true,0,default_charset,out_default_precis,clip_default_precis, default_quality,default_pitch|ff_swiss,"宋体");
// m_tipinfoimage.create(32,32,true|ilc_color8,4,0);
// m_tipinfoimage.add(((ctaskmngapp*)afxgetapp())->loadicon(idi_icon_users));
initmemctrl();
settimer(wm_timer,m_dwtime,null);
/****************************************************************/
/****************************************************************/
::setwindowlong(getsafehwnd(),gwl_exstyle,getwindowlong(getsafehwnd(),gwl_exstyle)^0x80000);
m_huser32dll = ::loadlibrary("user32.dll");
if(m_huser32dll)
{
m_ffill = null;
m_ffill = (set_fill_clr)::getprocaddress(m_huser32dll,"setlayeredwindowattributes");
if (m_ffill)
{
setdlglayoutcolor(20);
}
}
showinformations(true);
return true; // return true unless you set the focus to a control
// exception: ocx property pages should return false
}
void cinformationtip::setdlglayoutcolor(int irate)
{
if (irate > 90)
irate = 90;
else if (irate < 10)
irate = 20;
m_ffill(getsafehwnd(),0,(255*irate)/100,2);
}
void cinformationtip::initmemctrl()
{
m_buttonctrl_tipinfo.setfont(&m_tipinf_font);
m_buttonctrl_tipinfo.setwindowtext("您有一条新消息!");
}
void cinformationtip::setdlgbkcolor(colorref clr)
{
m_dlkbkbrush.createsolidbrush(clr);
}
/*设置完毕后,下一次应用改变*/
void cinformationtip::setshowtipatwhere(tipshowpos tsp)
{
}
/*设置完毕后,下一次应用改变*/
void cinformationtip::setshowtiptime(dword dwtime)
{
m_dwtime = dwtime;
}
/*设置完毕后,下一次应用改变*/
void cinformationtip::setkeepmovestep(dword dwstep)
{
m_dwstep = dwstep;
}
void cinformationtip::onsize(uint ntype, int cx, int cy)
{
cdialog::onsize(ntype, cx, cy);
// todo: add your message handler code here
}
void cinformationtip::showinformations(bool isshow)
{
if (!isshow)
{
keepmovemovemove(isshow);
m_isalreadyshow = false;
return ;
}
crect rect;
rect.setrect(0,0,0,0);
getwindowrect(&rect);
setwindowpos(&wndtopmost,
m_screenpos.m_screenx-rect.width(),
m_screenpos.m_screeny-near_side,
rect.width(),near_side,swp_nosize|swp_showwindow);
keepmovemovemove(isshow);
m_isalreadyshow = true;