我刚刚在对话框中添加了一个CMFCLinkCtrl
:
CONTROL "od 9:42-44",IDC_MFCLINK_OD_REFERENCE,"MfcLink",WS_TABSTOP,289,143,42,11
看上去:
目前,它没有映射到任何变量,因为我已经在IDE中设置了URL和文本。但我希望这个工具提示是对齐的。它不会改变大小,但我不希望它进一步向右流动。这个是可能的吗?
我已经查看了IDE中的可用属性,并且没有文本对齐控制:
发布于 2022-02-08 14:40:20
最后,我不得不使用CHyperlink
控件。它是从CMFCLinkCtrl
派生出来的。
在对我的问题的评论中,有人建议使用m_nAlignStyle
属性。这似乎合乎逻辑,因为链接控件是从CMFCButton
派生的。但这行不通。
CHyperlink
控件确实使用了上述属性,但是有一个定制的OnDraw
处理程序:
// ----------------------------------------------------------------------------------------------------
// Set the alignment for the hyperlink.
// ----------------------------------------------------------------------------------------------------
BOOL CHyperlink::SetTextAlignment(HyperlinkAlignment enumValue)
{
if (enumValue == Left)
{
m_nAlignStyle = ALIGN_LEFT;
//SizeToContent(TRUE, FALSE);
Invalidate();
}
else if (enumValue == Right)
{
m_nAlignStyle = ALIGN_RIGHT;
//SizeToContent(TRUE, FALSE);
Invalidate();
}
else if (enumValue == Center)
{
m_nAlignStyle = ALIGN_CENTER;
//SizeToContent(TRUE, TRUE);
Invalidate();
}
else
{
return FALSE;
}
return TRUE;
}
注意,我注释掉了SizeToContent
调用,因为这样做没有意义。如果将控件大小调整到内容,那么支持对齐(除了垂直)有什么意义?
就我而言,通过:
使用CHyperlink
.
SetTextAlignment
方法.会管用的。示例:
void CChristianLifeMinistryUtils::InitODLink(CHyperlink& rLinkCtrl)
{
const LanguageMSA eForeignLang = theApp.GetForeignLanguageGroupLanguageID();
const CString strODLink = GENERALLABEL3(eForeignLang, IDS_STR_OD_WOL_LINK);
const CString strODTooltip = GENERALLABEL3(eForeignLang, IDS_STR_OD_WOL_TITLE);
if (eForeignLang == LanguageMSA::Arabic)
{
rLinkCtrl.SetWindowText(_T("ش م 9:42-44"));
}
rLinkCtrl.SetURL(strODLink);
rLinkCtrl.SetTooltip(strODTooltip);
rLinkCtrl.SetTextAlignment(CHyperlink::Right);
}
https://stackoverflow.com/questions/71025283
复制相似问题