Visual c++ MFC链路控制包装的问题

Visual c++ MFC链路控制包装的问题,visual-c++,mfc,hyperlink,Visual C++,Mfc,Hyperlink,我在从CDialog继承的自定义对话框中使用CMFCLinkCtrl。CMFCLinkCtrl是使用用户在应用程序的另一部分中设置的数据动态设置的,因此我必须处理长URL 有没有办法让链接控件截断对话框中显示的内容,并在末尾添加一个椭圆?当前,当控件太长而无法放入对话框或在http://中看到“/”时,该控件将换行到下一行。静态控件有一个SS_ENDELLIPSIS样式,它完全符合您的需要,但不幸的是,这不适用于派生自CButton的CMFCLinkCtrl。所以你有两个选择: 使用带有SS_E

我在从CDialog继承的自定义对话框中使用CMFCLinkCtrl。CMFCLinkCtrl是使用用户在应用程序的另一部分中设置的数据动态设置的,因此我必须处理长URL


有没有办法让链接控件截断对话框中显示的内容,并在末尾添加一个椭圆?当前,当控件太长而无法放入对话框或在http://中看到“/”时,该控件将换行到下一行。

静态控件有一个
SS_ENDELLIPSIS
样式,它完全符合您的需要,但不幸的是,这不适用于派生自
CButton
CMFCLinkCtrl
。所以你有两个选择:

  • 使用带有
    SS_ENDELLIPSIS
    样式的静态控件,但您必须自己设置文本颜色和字体,处理单击事件并手动打开URL

  • 子类
    CMFCLinkCtrl
    并添加自定义图形代码以添加省略号


  • 我想你运气不好。您必须按照卡萨布兰卡所说的去做,或者不使用子类化来截断文本(计算字体大小和链接控制大小),并使用SetWindowText进行设置


    您可以使用SizeToContent轻松地调整控件的大小以包含整个文本,但我认为这不适合您。

    我可能最终会将CMFCLinkCtrl子类化。但是,有没有办法防止“/”插入换行符?我猜控件只是将文本分解成单词,并将
    /
    视为标点符号。如果要对控件进行子类化,则可以完全控制图形,因此不应出现此问题。