在“关于…”对话框中加入可以点击的Email地址

xiaozuo 2000-12-23 10:33:00
我在“关于…”对话框中用Static加入一个Email地址,可惜运行时没有变色,无法通过点击直接启动Email。
...全文
545 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tod 2000-12-26
  • 打赏
  • 举报
回复
我想各位大虾真是把问题看得过于严重了,解决变色即下画线的问题很简单:
在label的OnMouseMove事件里将颜色设置为你要的颜色,字体设置里选中下画线一项,在父
窗体或临近的其它合适的地方的OnMouseMove事件里将颜色恢复就可以了。
如果是系统的那种关于对话框这样就不行了,自己的肯定没问题,而且简单明了,不用那么复杂。
xiaozuo 2000-12-25
  • 打赏
  • 举报
回复
谢谢大家,已经用CreateFontDirect()解决下划线问题。
vcbear 2000-12-25
  • 打赏
  • 举报
回复
pFont =new CFont;
pFont->CreateFontDirect();
LOGFONT 结构里的
lfFaceName
lfUnderLine
lfCharSet
这几个变量一定要设置。CStatic应该也是接受MouseMove消息的,是窗口就接受。把
属性里的 Notify 点上看看。要不用WM_NCHITTEST,OnPreTranslateMessage等等
途径。
my8848 2000-12-24
  • 打赏
  • 举报
回复
加下划线?使用画线函数画一条不就得了。
sxbyl 2000-12-23
  • 打赏
  • 举报
回复
To:vc熊 不上吧,老雄,刚才我比划了一下,还是sxbyl顺手多了,难道是因为我不是标准指法???
silver 2000-12-23
  • 打赏
  • 举报
回复
xiaozuo: 我给你发了一个CHyberlink类,你给需要变成Hyberlink的Static添加一个control类型的变量,在头文件中把CStatic换成CHyberlink,并在对话框初始化的时候加入下面的语句

(假设的变量名)m_hyberlink.SetURL("http://www.csdn.net");
如果是邮件的话 m_hyberlink.SetURL("mailto:clinton@whitehouse.com");
vcbear 2000-12-23
  • 打赏
  • 举报
回复
LOGFONT里有个成员lfUnderline ,把它置非零,创建出的字体有下横线,
其他的成员你观察一下,有变成斜体的 ,从中间有横线的,反正Windows
能用的字体样式,都有。
至于变颜色,我建议你派生出自己的CStatic类,自己输出字体,不要怕麻烦,
在vc高级界面编程模式里,很多都是用CStatic类派生出来的漂亮控件,比如
按钮,进度条...当你实现派生之后,别说是字体,放上图片,动画都可以。
发送的执行就是Sexboy(to Sexboy:我觉得敲这个比较顺手)的方法了。
sxbyl 2000-12-23
  • 打赏
  • 举报
回复
SetFont的第一个参数不是CFont吗?CFont你可以用CFont::CreateFontIndirect 来建立,CreateFontIndirect 的参数是LOGFONT,其中有一个成员lfUnderline,可以用来指定下划线,颜色可以用CDC::SetTextColor完成。你再试一下吧。
adrianx 2000-12-23
  • 打赏
  • 举报
回复
改字体色彩用COLORREF SetTextColor(HDC hdc,COLORREF newColor);返回原来的字体颜色
xiaozuo 2000-12-23
  • 打赏
  • 举报
回复
to my8848:
mailto:clinton@whitehouse.com不行;
to sxbyl:
你的方法可行,mailto:后面一定要有一个空格。

但是怎样改变字体的颜色,并加上下滑线呢?SetFont中好像没有这个功能。

JeasonZhao 2000-12-23
  • 打赏
  • 举报
回复
呵呵,如果怕麻烦,直接下一个空间
xiaozuo 2000-12-23
  • 打赏
  • 举报
回复
谢谢大家,我去试一试!
sxbyl 2000-12-23
  • 打赏
  • 举报
回复
变色可能是用重载对话框的OnMouseMove实现的,或是重载CStatic (纯属本人胡说,如有错误,希望大家指正)
对于点击发送Mail,将那个Static的Notify选中,然后单击Static的时候会有消息产生,再调用那个ShellExecute就OK了
sxbyl 2000-12-23
  • 打赏
  • 举报
回复
ShellExecute(NULL, "open", "mailto: test@sina.com",NULL, NULL, SW_SHOWNORMAL);
应该可行
my8848 2000-12-23
  • 打赏
  • 举报
回复
在E-MAIL地址前加上mailto:
如:mailto:clinton@whitehouse.com
在试一试。
xiaozuo 2000-12-23
  • 打赏
  • 举报
回复
非常感谢bensilver,您的类不仅解决了我的问题,还让我学到了不少的东西,也可以使我自己重载的Static实现了下划线,关键是Font.CreateFontIndirect前必须Font.DeleteObject。
明天给分,也好让其他朋友看一看。
xiaozuo 2000-12-23
  • 打赏
  • 举报
回复
多谢各位的热心帮助。
to vcbear:
通过重载CStatic,参照了Visual C++ 6.0宝典,实现了字体和背景色的改变。
to sxbyl:
通过Getfont()得到CFont指针pFont,然而无法用:
pFont->CreateFontIndirect(&LogFont);
实现,出现运行错误。假如增加CFont Font, 用:
Font.CreateFontIndirect(&LogFont);
可以完成,但是SetFont后字体变成黑体,根本没有下滑,而且有一条白线上下翻个不停。
由于CStatic本身就没有OnMouseMove,所以无法重载。

各位已经说过:
ShxellEexute(m_hWnd,NULL,"mailto: Acely@china.com",NULL,NULL,SW_SHOWMAXIMIZED)
已经成功,而且mailto:后一定要有一个空格。
现在只是加下划线的问题。
mahongxi 2000-12-23
  • 打赏
  • 举报
回复
无论在VB或VC中实现这种方法,只能(自我认为)用API中的ShellExecute(NULL, "open", "mailto: test@sina.com",NULL, NULL, SW_SHOWNORMAL)
这也是想执行程序的一般方法,而“mailto:mahongxi@chinese.com”属于
扯蛋,看来你以前做过网页。
在VC中我建议你新建一个类CHyperStatic”来继承基类“CStatic”不过
最重要的也是我当初用一天时间才摸索到的就是:你原来的文字的属性中的
那个Static的Notify一定要选中。
之后就可以能过在“CHyperStatic”中处理各种消息!
至于什么消息,你可以E-Mail我!
Acely 2000-12-23
  • 打赏
  • 举报
回复
可在OnSetCursor加入光标。
在OnCtlColor为Static加入颜色控制输出,用个全程变量就行了
在OnLButtonUp得到控件的判断鼠标是否在此区域
ShxellEexute(m_hWnd,NULL,"mailto:Acely@china.com",NULL,NULL,SW_SHOWMAXIMIZED)
prodigy 2000-12-23
  • 打赏
  • 举报
回复
too late!!!

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧