首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心计算机论文计算机理论
   用VC++6.0为对话框添加最小化按钮和提示条      ★★★ 【字体: 】  
用VC++6.0为对话框添加最小化按钮和提示条
收集整理:佚名    来源:本站整理  时间:2009-01-10 12:06:05   点击数:[]    

)
{
    
     CDC* pDC = GetWindowDC();
     CDC* pMemDC=new CDC;
     CBitmap *pBitmap1=new CBitmap; 
     CBitmap *pBitmap2=new CBitmap;
     CBitmap *pOldBitmap;
     CRect rtWnd, rtButtons, rtTitle;
     //创建一个内存设备环境
     pMemDC->CreateCompatibleDC(pDC);
     if(!pDC) return;
     GetWindowRect(&rtWnd);
     //取得标题栏的矩形
     rtTitle.left = GetSystemMetrics(SM_CXFRAME);
     rtTitle.top = GetSystemMetrics(SM_CYFRAME);
     rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
     rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);
     //计算最小化按钮的位置,位图大小为15X15
     rtButtons.top=rtTitle.top+1;
     rtButtons.bottom=rtButtons.top+15;
     rtButtons.right = rtTitle.right-20;
     rtButtons.left = rtButtons.right-15;

     m_rtButtMin = rtButtons;
     pBitmap1->LoadBitmap(IDB_BITMAP1); //调入正常状态按钮的位图
     pBitmap2->LoadBitmap(IDB_BITMAP2);  //调入按钮按下状态的位图
     m_rtButtMin.OffsetRect(rtWnd.TopLeft());//记录最小化按钮的位置
     //将按钮位图调入内存设备环境中,m_BMPPressed为TRUE
//调入正常状态按钮的位图
     pOldBitmap=pMemDC->SelectObject(m_BMPPressed ? pBitmap1: pBitmap2);
     //将按钮位图复制到实际的内存设备环境中
     pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(),
           rtButtons.Height(), pMemDC, 0, 0, SRCCOPY);
     pMemDC->SelectObject(pOldBitmap);//恢复原来的内存设备环境
 //释放资源
     ReleaseDC(pMemDC);
     ReleaseDC(pDC);
     delete pMemDC;
     delete pBitmap1;
     delete pBitmap2;
     }
⑷ 对应鼠标左键的WM_NCLBUTTONDOWN消息处理函数
void CMinButtonDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
     CDialog::OnNcLButtonDown(nHitTest, point);
     //检测是否在最小化按钮区域内按下按钮
     if (m_rtButtMin.PtInRect(point))
     {
           m_BMPPressed=FALSE;//绘制按钮按下时的状态
           DrawButton(); //绘制最小化按钮
           m_BMPPressed=TRUE;//绘制按钮的正常状态
           SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));//发送最小化消息
     }
     }
⑸ //在最小化按钮区域实现提示文本
BOOL CToolTips::AddToolTip( UINT nID, LPRECT lpRect, LPCTSTR lpszText  )
{
     TOOLINFO Tips;
     memset(&Tips, 0, sizeof(TOOLINFO));
     Tips.cbSize = sizeof(TOOLINFO);
     Tips.hwnd = GetOwner()->GetSafeHwnd();
     Tips.uFlags = TTF_SUBCLASS;
     Tips.uId = nID;
     memcpy(&Tips.rect, lpRect, sizeof(RECT));
     Tips.lpszText = (LPSTR)lpszText
     return (BOOL)SendMessage(TTM_ADDTOOL, 0, (LPARAM)&Tips);
}
⑹ 在对话框初始化函数OnInitDialog()中添下列代码:
m_ToolTip.Create(this,TTS_ALWAYSTIP);//创建工具提示控件,TTS_ALWAYSTIP表示,//不论控件所属窗体是否活动,提示条始终有效
     GetMinButRect();
     ScreenToClient(&m_ButtMinTips);//屏幕坐标转换为窗体坐标
     m_ToolTip.AddToolTip(1,&m_ButtMinTips,"最小化");
4      结束语
  实例程序的测试环境为Windows 98、PⅡ350,效果良好。

上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:VOD,走着瞧

  • 下一篇文章:关于gsm系统中msc之cp负荷过高处理的体会
  • 返回上一页】【打 印】【关闭窗口
    中查找“用VC++6.0为对话框添加最小化按钮和提示条”更多相关内容 5VAR论文频道
    中查找“用VC++6.0为对话框添加最小化按钮和提示条”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››中小企业办公自动化系统的设计与实...
  • ››未雨绸缪:关于我国电子商务税收对...
  • ››网上书店为钱做秀 行业走势两极分...
  • ››Win2000索引服务的WEB应用
  • ››宽带化――电信发展的必由之路务
  • ››电子商务中x种错误思路和做法
  • ››网络营销与传统营销相比有何优势
  • ››Internet的下一个热点 从内容走向服...
  • ››基于CNAPS的流水号管理方法
  • ››网络时代的财务与会计:管理集成与...
  • ››用VC++6.0为对话框添加最小化按钮和...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .