小生不才,参照M$提供的WordPad源代码例子,自制了一个简单字处理程序,基本功能已实现,只是有一点小问题:
在WordPad或Word中,当我们用鼠标点击或选择某一行字时,还有就是用键盘键移动到某一行字时,系统会自动获取当前光标下字体的格式,如字体名称、字体大小等,并更新至工具栏中的相应的字体格式Combo Box框中,请问如何实现? 应处理什么消息?
谢谢!

解决方案 »

  1.   

    下面的代码片段简单获取当前字体名称,大小。 CString sFontName;
    int nTwipSize;
    float fFontSize;
    CHARFORMAT &cf = GetCharFormatSelection();
    sFontName = cf.szFaceName;
    nTwipSize = cf.yHeight; nTwipSize = (nTwipSize + 5) / 10;
    fFontSize = nTwipSize / 2.F;//.F; CString sResult;
    sResult.Format("%s\n%f", sFontName, fFontSize);
    AfxMessageBox(sResult);
      

  2.   

    谢谢平之兄:
        以上代码的确能够获取当前字体信息,但现在最主要的问题是要处理什么消息才能实时地在工具栏的 Combo Box 中反映出来?你可以在 WordPad 或 Word 中操作一下便可知道我的意思了!
      

  3.   

    获取当前字体信息后再发消息给Combo Box 进行相关的设置.
      

  4.   

    to  Purpleendurer(Purplenendurer) :
         我的意思是: 
         在WordPad或Word中,当我们用鼠标点击或选择某一行字时,还有就是用键盘键移动到某一行字时, 这些鼠标与键盘操作用什么消息处理啊(或者说移动上一行、下一行字会触发什么消息)?
      

  5.   

    这个程序我也做过,做一个刷新(包括工具条上的按钮和列表框等)的函数,然后在每一个可能改变光标位置的消息响应函数中调用,我目前只想到了这种方法,可行,但可能不是最优的。PS:输入英文可以用OnChar()处理,处理汉字(包括Del、ESC、左右上下键等等)在OnKeyDown()、OnKeyUp()中处理,处理鼠标在OnLButtonDown()、OnLButtonUp()、OnLButtonDblClk()等等中处理
      

  6.   

    可是,WordPad中是怎么处理的啊?
      

  7.   

    http://www.vckbase.com/document/viewdoc.asp?id=328
      

  8.   

    各位:
        不好意思!这段时间忙别的事情去了,现在再回头看WordPad的源码,用 bcpl(林平之) 的方法:ON_UPDATE_COMMAND_UI机制来解决问题了。当然 fengqinggao(风清高) 的方法也很好,只是我比较懒一点。;-)
        谢谢两位,谢谢其他帮忙解决问题的大侠!