正在进行中的功能--动态消息对话框(.cpp)[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bigfanofcpp 的 blog

// 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;
 

本文关键:正在进行中的功能--动态消息对话框(.cpp)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top