vs2010 c 自动提示框_学习VS2010 ---桌面信息提示信息编程
桌面信息提示信息编程
??目的 系统运行时有各种信息提示。桌面右下角直接弹出对话框进行提示。提示对话框可以使用系统信息提示对话框或自定义对话框。迅速的。
(1)????使用VS2010以对话框的形式生成项目文件;
(2)在对话框中添加与桌面提示信息相关的控件,包括外观类型、动画类型、透明度、动画速度、自动关闭、关闭时间等;
(3)??????
(4)??????向每个列表框添加数据
其中,外观类型列表框数据为 MS Office 2000;MS Office XP;MS Office2003;MS www.introzo.com 2005;Windows XP;MSN Messenger;MS Office 2007 Blue;MS Office 2007Black;MS Office 2007 Silver; MS Office 2007 Aqua;
动画类型列表框数据包括:无动画;展开;滑动;淡入淡出;
(5)??????自绘图标列表控件
普通的列表控件只能显示字符串。为了在列表中同时显示字符和图标,需要重载列表控件,建立一个以CComboBox为基类的继承类CIconComboBox,其中Load构造函数、CompareItem、DrawItem、MeasureItem等函数实现自定制列表控件的绘制。重点需要重载以下类
a)??????构造函数重载
??????CIconComboBox(CMFCToolBarImages& Icons);通过引用调用位图
CIconComboBox::CIconComboBox(CMFCToolBarImages&Icons) :
????????? m_Icons(图标)
{
}
b)??????重写MeasureItem()函数,方便控制列表类的行距
void CIconComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
{
??? lpMIS->itemHeight = 25;
??? lpMIS->itemWidth = 25;
}
c)??????最重要的是,重载DrawItem()函数
void CIconComboBox::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
????????? CDC* pDC= CDC::FromHandle(lpDIS->hDC);
????????? ASSERT_VALID (pDC);
?????????哈刷?????????? br背景;
??????COLORREF????????? clText;
????????? if(lpDIS->itemState & ODS_SELECTED)?
??????{
???????????????brBackground =GetSysColorBrush (COLOR_HIGHLIGHT);
?????????????????? clText = afxGlobalData.clrTextHilite;
????????? }
?????????否则
??????{
???????????????brBackground =GetSysColorBrush (COLOR_WINDOW);
?????????????????? clText =afxGlobalData.clrWindowText;
????????? }
????????? CRect rectItem = lpDIS->rcItem;
????????? ::FillRect(lpDIS->hDC,&rectItem, brBackground);
????????? intnIndex = lpDIS->itemID;
????????? if(nIndex > 0)
????????? {
?????????????????? CAfxDrawState ds;
?????????????????? m_Icons.SetTransparentColor(afxGlobalData.clrBarFace);
?????????????????? m_Icons.PrepareDrawImage(ds);
?????????????????? m_Icons.Draw (pDC,rectItem.left + 1, www.introzo.com + 1, nIndex - 1);
?????????????????? m_Icons.EndDrawImage (ds);
????????? }
????????? CString strText;
????????? GetLBText(nIndex, strText);
????????? C矩形 矩形文本 = 矩形项目;
????????? rectText.left += 20;
????????? CFont* pOldFont = pDC->SelectObject(&afxGlobalData.fontRegular);
????????? pDC->SetBkMode(透明);
????????? pDC->SetTextColor (clText);
?????? pDC->DrawText (strText, rectText,DT_SINGLELINE | DT_VCENTER);
?????? pDC->选择对象 (pOldFont);
}
d)??????重载CompareItem()来实现排序规则。由于本例中的控件属性已选择不排序,所以这里不再起作用
e)??????将 #include "IconComboBox.h" 添加到 StdAfx.h
f)??????定义变量CIconComboBoxm_IconCtrl;
g)??????将控件属性的Owner Draw属性设置为Variable,将Hasstrings属性设置为TRUE
(6)??????使用ClassWizard在对话框中创建各种变量
(7)??????初始化
m_TransCtrl.SetRange(10,255);
????????? m_CloseTimeCtrl.SetRange(1,5);
?????? m_AnimSpeedCtrl.SetRange(1,100);
m_Icons.SetImageSize(CSize(32,32));
????????? m_Icons.Load(IDB_ICONS);
????????? m_IconsSmall.SetImageSize(CSize(16,16));
????????? m_IconsSmall.Load(IDB_ICONS_SMALL);
?
?????? for(inti=0;i ??????{ ?????????????????? CStringstrText; ??????????????????if(i==0) ????????????????????????strText= _T("无图标"); ??????????????????否则 ??????????????????{ ????????????????????????strText.Format(_T("图标 %d"),i); ?????????????????????} ? ?????????????????? m_IconCtrl.AddString(strText); ????????? } ??????更新数据(假);? //手动调用自绘控件的DrawItem()函数 (8)??????对显示按钮进行程序设计,设置信息提示界面参数并显示信息提示框 ?? 1)?设置界面风格特征。 VS2010提供了多种界面风格供系统选择 ?? ??开关(m_LookStyle) ??????{ ?????????案例0: ??????????????????CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManager)); ??????????????????打破; ?????????案例一: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOfficeXP)); ??????????????????打破; ?????????案例2: ??????????????????CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2003)); ??????????????????休息; ?????????案例3: ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerVS2005)); ??????????????????休息; ?????????案例4: ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerWindows)); ??????????????????休息; ?????????案例5: ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMSNVisualManager)); ??????????????????休息; ?????????案例6: ?????????????????? CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue); ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2007)); ??????????????????休息; ?????????案例7: ?????????????????? CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack); ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2007)); ??????????????????休息; ?????????案例8: ?????????????????? CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2007)); ??????????????????休息; ?????????案例9: ?????????????????? CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua); ?????????????????? CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2007)); ??????????????????休息; ????????? } ?? 2)设置参数 CMFCDesktopAlertWnd*pPopup = 新 CMFCDesktopAlertWnd; ????????? pPopup->SetAnimationType((CMFCPopupMenu::ANIMATION_TYPE)m_AnimType); ????????? pPopup->SetAnimationSpeed(m_AnimSpeed); ?????? pPopup->设置透明度((BYTE)m_Trans); ?????? pPopup->SetSmallCaption(m_IsSmallCaption); ?????? pPopup->SetAutoCloseTime(m_AotuClose ? m_CloseTime * 1000 : 0); 3)?自绘风格提示界面 ??? a) 使用资源创建对话框。请注意,属性设置为 Child,透明属性设置为 TRUE b) 为对话框创建一个类。基类是 CMFCDesktopAlertDialog c) 致电 pPopup->创建(这个, IDD_DIALOG1, ???????????????????????????????????????空, ??????????????????????????????????????? C点(-1,-1), ??????????????????????????????????????????RUNTIME_CLASS(CMyPopDlg)) ; ?4)调用系统信息提示界面 ?????? ?CMFCDesktopAlertWndInfo 参数; ??????????????????if(m_IconSel>0) ??????????????????{ ??????????????????????????? params.m_hIcon= m_Icons.ExtractIconW(m_IconSel-1); ??????????????????????????? params.m_strText= m_Text; ??????????????????????????? params.m_strURL= m_LinkText; ??????????????????????????? params.m_nURLCmdID= 101; ??????????????????????????? pPopup->Create(this, params, NULL, CPoint(-1,-1)) ; ?????????????????????} ?5) 设置图标和标题 HICONhIcon = (HICON)::LoadImage(::AfxGetResourceHandle(), ??????????????? MAKEINTRESOURCE(IDR_MAINFRAME), ????????????????????????????????????IMAGE_ICON,::GetSystemMetrics (SM_CXSMICON),::获取系统指标 (SM_CYSMICON), 0); ?????? pPopup->SetIcon(hIcon, FALSE); ?????? pPopup->SetWindowText(_T("消息")); (9)???最后运行界面 ? 选择显示,您将看到屏幕右下角弹出相应的提示信息框。 ? ?? 首先打开vs2010,点击工具->选项, 打开选项界面后,选择环境->键盘 在“显示命令包含(C):”编辑框中输入“编辑.列表成员”,然后将光标定位在“按快捷键(P)”编辑框中,同时按下键盘“ALT”和“ /”,点击确定 https://www.introzo.com/zh-cn/library/bb384847(v=vs.100).aspx ?? 演示代码: #包括 int main(void) { int n; scanf("%d", &n); 返回0; } 提示内容: 将上述演示代码放入VS2010及更新版本的VS系列编译器中,编译后会出现 警告 C4996:“scanf”:此函数或变量可能不安全。考虑使用 scanf_s 代替。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。 或 错误 C4996:“scanf”:此函数或变量可能不安全。考虑使用 scanf_s 代替。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。 解决方案: 方法 1(推荐)- 更改预处理定义 此方法是临时解决方案,适合老项目,但建议尽快更改为相应的安全功能。具体操作方法如下: 项目->属性->配置属性->C/C++->预处理器->预处理器定义,添加: _CRT_SECURE_NO_DEPRECATE 以下是VS2010中设置的具体图: 编译,C4996(警告或错误)消失 方法2 - 使用相应的安全功能代替,(将*替换为*_s) 这个方法是一劳永逸的办法,但是比较困难,需要大量的改动。很多老项目都会有较大的改动量。 方法三-在头文件前添加代码 1。在使用头文件,即源文件的第一行(必须放在.c文件的第一行。)之前,添加一行代码 #define _CRT_SECURE_NO_DEPRECATE 演示程序如下: #define _CRT_SECURE_NO_DEPRECATE #包括 int main(void) { int n; scanf("%d", &n); 返回0; } 编译,C4996(警告或错误)消失
相关文章
- 10-03 android 表格布局属性
- 10-03 android表格布局介绍,TableLayout
- 10-03 html表格在页面上的位置,css表格布局-dis
- 10-03 php是一种编程语言吗?
- 10-03 如何下载wampserver
- 10-03 如何在php中启动exe文件
- 10-03 本田宣布2025年拆除东京总部大楼 2030年完成
- 10-03 曝三菱汽车已决定全面放弃中国生产 日系车开始出局?
- 10-03 问界M9 35万起售?内部人士:纯属无稽之谈!
- 10-03 2023年数据采集与融合技术实践作业1
- 10-03 自我介绍
- 10-03 2023年数据采集与融合技术实践作业
- 10-03 MySQL判断空值的方法是NULL和(mysql中
- 10-03 Linux网卡验证解决方案:turn it off
- 10-03 Linux下如何使用C语言实现文件复制操作(lin
- 10-03 Linux系统下的游戏:优质选择,更好体验(Lin
- 10-03 回答Linux时区问题:00 00代表哪个时区?
- 10-03 Linux下如何限制ssh登录? (Linux限制
- 10-03 jQuery实现手机下拉显示新内容动画反弹
- 10-03 jQuery实时统计输入框的字数及限制
- 最近发表