VC实现对话框上信息的显示

利用VC的AppWizard,可以很容易地实现工具条和菜单项的ToolTip,或在状态条上显示帮助信息,但要在对话框的控件上显示ToolTip和在状态条上显示控件信息并不容易实现。现在,我们用VC中的WM_SETCURSOR 与TTN_NEEDTEXT消息就可达到目的。具体操作如下:

一、利用 VC的 MFC AppWizard 生成一个 SDI 或 MDI 的应用程序

二、编辑对话框控件的字符串资源

例如:IDC_DBBUTTON1 = “This is 肖天鹏的第一自制按钮\n天鹏",

其中字符串“This is肖天鹏的第一自制按钮“将在鼠标移到控件上时显示在状态条上,字符串“天鹏"将作为 ToolTip 显示。

三、建立消息映射

在对话框的头文件 (*.H) 中

加入以下代码:

protected:
void SetStatusText(UINT nID=0);
//{{AFX_MSG(CFileOp1)
afx_msg void OnDestroy();
afx_msg BOOL OnSetCursor(CWnd* pWnd,
UINT nHitTest, UINT message);
//}}AFX_MSG
afx_msg BOOL OnTipNotify( UINT id, NMHDR *
pNMHDR, LRESULT * pResult );
DECLARE_MESSAGE_MAP()

在对话框的实现文件 (*.CPP) 中加入以下代码:

BEGIN_MESSAGE_MAP(CFileOp1, CDialog)
//{{AFX_MSG_MAP(CFileOp1)
ON_WM_DESTROY()
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnTipNotify)
END_MESSAGE_MAP()

四、编辑消息处理函数

BOOL CFileOp1::OnSetCursor
(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler
code here and/or call default
if(pWnd==this)
SetStatusText();
else
{
TOOLTIPTEXT m_psttt;
m_psttt.hdr.hwndFrom=m_hWnd;
m_psttt.hdr.idFrom=pWnd- >GetDlgCtrlID();
m_psttt.hdr.code=TTN_NEEDTEXT;
m_psttt.uFlags= TTF_IDISHWND;
SetStatusText(pWnd- >GetDlgCtrlID());
this- >SendMessage(WM_NOTIFY,
m_psttt.hdr.idFrom,(LPARAM)&m_psttt);
}
return CDialog::OnSetCursor
(pWnd, nHitTest, message);
}
void CFileOp1::OnDestroy()
{
SetStatusText();
CDialog::OnDestroy();
}
void CFileOp1::SetStatusText(UINT nID)
{
if(nID==0)
nID=AFX_IDS_IDLEMESSAGE;
CWnd *pWnd=AfxGetMainWnd()- >GetDescendantWindow
(AFX_IDW_STATUS_BAR);
if(pWnd)
{
AfxGetMainWnd()- >SendMessage
(WM_SETMESSAGESTRING ,nID);
pWnd- >SendMessage(WM_IDLEUPDATECMDUI);
pWnd- >UpdateWindow();
}
}
BOOL CFileOp1::OnTipNotify( UINT id, NMHDR *
pNMHDR, LRESULT * pResult )
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID =pNMHDR- >idFrom;
if (pTTT- >uFlags & TTF_IDISHWND)
{
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
TCHAR szFullText[256];
CString StrTipText;
AfxLoadString(nID,szFullText);
AfxExtractSubString(StrTipText,
szFullText,1,'\n');
if(!StrTipText.IsEmpty())
strcpy(pTTT- >lpszText,StrTipText);
pTTT- >hinst = AfxGetResourceHandle();
return(TRUE);
}
}
return(FALSE);
}

五、在 Stdafx.h 文件中加入以下指令:

#include 〈 afxpriv.h>

#include 〈 afxres.h>

六 将该对话框作为一个 SDI 或 MDI 应用程序的主框架的子窗口,生成这样一个对话框后,当你把鼠标移到某个控件 ( 必须有相应的字符串资源 )上时,就会出现该控件的 ToolTip 和状态条信息。

时间: 2024-07-30 15:01:55

VC实现对话框上信息的显示的相关文章

vc++在MFC对话框上用程序生成控件(比如Text和Edit控件),求如何实现?

问题描述 vc++在MFC对话框上用程序生成控件(比如Text和Edit控件),求如何实现? vc++我想在MFC对话框上用程序生成控件(比如Text和Edit控件),求如何实现?(不是用工具条拖动控件到对话框上) 1.用程序生成控件2.控件在对话框上准确定位 求大神指导下 解决方案 一个 CreateWindow() 就能搞定,例子很多,自己找. 解决方案二: MFC我没有研究过,但我想MFC中应该可以调用Win32API吧,可以看看这几个,虽然不是MFC,但是在MFC里想必是可以用的.htt

jquery通过AJAX从后台获取信息并显示在表格上的实现类_AJAX相关

在上篇文章给大家介绍了JQuery通过AJAX从后台获取信息显示在表格上并支持行选中 ,现在,抽个时间他们处理了一下,这样就不需要每次写代码了,可以节省大量的时间,具体请看下文: 具体代码如下: //获取数据并显示数据表格 function GetTableData(tableId,ChlickEvent) { var table = $(tableId); var url=table.data('url'); $.ajax({ url: url, type: 'post', dataType:

android 添加了权限,但是模拟器上应用信息还是显示未请求任何权限

问题描述 android 添加了权限,但是模拟器上应用信息还是显示未请求任何权限 解决方案 Build-Clean Project重新编译也没用 解决方案二: 个人理解是SYSTEM_ALERT_WINDOW这个并不是系统级权限,所以不会在权限请求列表中显示出来的,系统级的权限的指的是通话.定位.发短信之类的权限,,,权限分类的话你可以参照这个链接 android 权限整理

邮件正文显示在控制台下有换行,在对话框上没换行

问题描述 邮件正文显示在控制台下有换行,在对话框上没换行 在控制台下正文可以显示成下面的这种,但是在有界面的情况下不自动换行了 下面这是MFC中的邮件显示代码(主要帮我看看正文的显示): show是一个对话框类的对象,m_show 是和对话框中编辑框绑定的value值变量 void CEmailDlg::OnDblclkListEmail() { // TODO: Add your control notification handler code here UpdateData(TRUE);

在对话框上加上一个CTreeCTRL,想显示文件目录

问题描述 在对话框上加上一个CTreeCTRL,想显示文件目录 MFC的对话框程序中加上一个TreeCTRL控件,想象资源管理器那样显示目录树,怎么实现? 解决方案 http://blog.csdn.net/lcalqf/article/details/21321923http://download.csdn.net/detail/eastmount/6917799

在本机上增加成功,但在服务器上增加信息时显示列明无效,怎么回事????

问题描述 在本机上增加成功,但在服务器上增加信息时显示列明无效,怎么回事???? 解决方案 解决方案二:数据库没有对应上?

jquery通过AJAX从后台获取信息并显示在表格上的实现类

在上篇文章给大家介绍了JQuery通过AJAX从后台获取信息显示在表格上并支持行选中 ,现在,抽个时间他们处理了一下,这样就不需要每次写代码了,可以节省大量的时间,具体请看下文: 具体代码如下: //获取数据并显示数据表格 function GetTableData(tableId,ChlickEvent) { var table = $(tableId); var url=table.data('url'); $.ajax({ url: url, type: 'post', dataType:

在打开文件对话框上实现图象预览

前言: 本文主要是介绍在打开文件对话框,实现对图象,文本等预览(在VC++6.0下实现).本人的水平有限,如有表达不清之处,请谅解,请各位提出意见与建议! 1.Win98下预览对话框的实现:对常用格式的图片,在打开文件对话框中实现预览功能效果如下图: 图一 思路: 从CFileDialog派生CFileDialogEx类,为对话框安装钩子,利用HOOK拦截我们感兴趣的CDN_SELCHANGE消息,在其中加入我们的预览功能,原理就是这么简单! 使用方法: 1):在ResourView中,加一个对

指针-vc基于对话框的串口助手绘制波形图闪烁问题

问题描述 vc基于对话框的串口助手绘制波形图闪烁问题 在ontimer函数中进行了这样的双缓冲处理为什么settimer(1,50,NULL),还闪烁特别厉害呢,需要怎么修改 //双缓冲技术 CWnd *pWnd; CRect rc; CDC *m_pDC; CDC memDC; pWnd=GetDlgItem(IDC_STATIC_GWAVE); //把控件地址赋给窗口类指针 //定义一个控件尺寸结构体 pWnd->GetClientRect(&rc); //获取空间指针赋值给rc CRe