• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 如何在一个子类化的控件实现字体改变

如何在一个子类化的控件实现字体改变

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了父类引用指向子类对象,子类调用父类方法,子类,子类继承父类,父类本类子类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何在一个子类化的控件实现字体改变
描述:

各位兄台,小弟在编写一个ActiveX控件时遇到一个小问题:要求在按下Shift+Ctrl+Up时字体变小,且控件有编辑功能.
具体的实现如下:
1. 子类化EDIT类;
CTestCtrl::OnDraw(CDC* pdc,CRect& rcBounds,CRect& rcInvalid)
{
   DoSubclassPaint();
   //在此未加任何代码.
}
2.有关按键消息的处理如下:
CTestCtrl::OnKeyDown(...)
{
    if(GetKeyState(VK_SHIFT)<0&& GetKeyState(VK_CONTROL)<0))
        if (nChar==VK_UP)
         {
           HWND hWnd=CWnd::GetSafeHwnd();
           CWnd* pWnd=CWnd::FromHandle(hWnd);
 
           CDC* pDC=pWnd->GetDC();
           //字体创建,使新创建的字体大小为原来使用的一半.
           TEXTMETRIC tm;
           
           CFont* pF />
           pDC->GetTextMeterics(&tm);
   
           int tempHeight=tm.tmHeight/2;
        
           LONGFONT tempLongFont;
           pFont->GetLongFont(&tempLongFont);
           
           CFont tempFont;
           tempFont.Create(tempHeight,tempHeight*tm.teWidth/tm.tmHeight,
                tempLongFont.lf...,,,,)
           
           pDC->SelectObject(&tempFont);
           //创建插入符
           ::CreateCaret(hWnd,NULL,1,tempHeight);
           CSize caretSize=pWnd->GetCaretPos();
           CPoint point(caretSize.cx,caretSize.cy+tempHeight);
           pWnd->SetCaretPos(point);
           pWnd->ShowCaret();
         }
      COleControl::OnKeyDown(...)
}
运行的结果,只有插入符的反映是正确的,为原来高度的一半.从调试的结果看,也正确,但在输入字符时仍为原来的大小.
    请问是何种原因导致了这种情况.
    是否是因为键入字符后,字符的显示是用的OnDraw(...),但其pdc里没有选入新的字体呢??
  
     另请问在这种子类化类的控件里如何处理文本颜色.平常用的SetTextColor(...),SetBkColor(,,,)没有什么作用的.
      请各位指点一二. 
          
        
           
   


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 我在MFC的扩展DLL中如何声明一个MFC子类?而且这个类是作为外部接口的
  • ★★★★什么叫子类化技术,有这样的例子吗,谢谢?★★★★
  • 利用钩子进行子类化后的问题
  • 如何触发com服务器子类的事件!
  • 如何在一个子类化EDIT的控件中实现字体的转换。
  • 如何在一个子类化的控件实现字体改变

相关文章

  • 2017-06-05 ADO里面registeredactivexcontrols
  • 2017-06-04 VARIANT内存泄露
  • 2017-06-05 求救~!!!
  • 2017-06-04 ocx文件如何做成exe文件在客户端注册(浏览器用)
  • 2017-06-05 GetWindowRect??
  • 2017-06-04 关于com原理与应用中聚合例子的问题
  • 2017-06-05 [求助]获取2000/xp下进程cpu时间和内存使用问题
  • 2017-06-04 DCom程序配置
  • 2017-06-04 MFC编程实现可连接点,有问题,大虾,救命呀!
  • 2017-06-04 ATL/WTL中如何进行网络编程?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • _com_util::ConvertBSTRToString转化出错
    • DSOFramer打开word然后在word中插入一个TextBox控件,请问如何截拦该控件的双击事件
    • 新手问题:comcom+dcom有什么区别?学习的顺序?
    • 关于atl进程外服务器的疑惑
    • COM入门菜鸟疑问:COM技术现在国内应用的情况如何?
    • 求助呀∶各位老大帮帮忙吧,,~
    • 如何在ATL中使用向MFC中的WindowProc窗口过程函数
    • libcurl官网上传函数断点续传遇到的问题
    • tlb是什么文件?如何引入工程?COleVariant类型如何应用?
    • 怎样根据一个进程得到它所对应的窗口?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有