有什么 API 可以把类似 "&Open" 这样的字符串输出成 O 下面带下划线的 Open??

SCUM 2004-06-09 05:45:39
在自定义的组件上显示 Caption 时遇到这个问题。。。
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SCUM 2004-06-11
  • 打赏
  • 举报
回复

搞定了 多谢老大!!
看来要学好 BCB 还真是不容易......
以后要多看源码多了解 VCL 底层了.....

Thanks all!
COpyFRee 2004-06-10
  • 打赏
  • 举报
回复
是吗?我也想这样输出过!
jishiping 2004-06-10
  • 打赏
  • 举报
回复
1、还是使用DrawText函数,最后一个参数使用 DT_SINGLELINE|DT_CALCRECT,这样 Rect 就
是计算后的宽度和高度了。
2、参看TLabel或者TButton的源程序的CMDialogChar函数,就是需要响应消息CM_DIALOGCHAR
SCUM 2004-06-10
  • 打赏
  • 举报
回复

楼上的方法试过了 好像没有效果....

Canvas->TextOutA( x, y, "&Open" );

这样输出来还是 &Open
并没有变成 O 带下划线的 Open

我记得是有那么一个 API 能输出成那样的....



SCUM 2004-06-10
  • 打赏
  • 举报
回复

这下出个新问题

本来计算长宽是用了 Canvas->TextExtends()
但是这个函数把 ‘&’一并算进去了
这样算出来位置就有点偏了
不知道有没有现成的 API 能正确计算这个长宽的。。。

还有个问题请教下季老大:
我从 TCustomControl 派出来实现一个 Button 的功能
要怎样才能实现快捷键?
比如 Caption 设为 &Open 时
可以按 alt + O 就激发 OnClick。。。




SCUM 2004-06-10
  • 打赏
  • 举报
回复

对了 就是这个 API!
季老大真是好记性。。。。
谢了!
jishiping 2004-06-10
  • 打赏
  • 举报
回复
API 函数 DrawText ,例如:

TRect Rect = ClientRect;
DrawText(Canvas->Handle, "&Open", -1, &Rect, 0);
SCUM 2004-06-10
  • 打赏
  • 举报
回复

这么简单!! (无地自容)
我试试去.........
eccalc 2004-06-09
  • 打赏
  • 举报
回复
同意楼上,自画喽,只要是TControl 下就行,DC获取
teatool 2004-06-09
  • 打赏
  • 举报
回复
Canvas->TextOutA

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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