VC基于对话框的程序,可以通过设置每个对话框的Font来设置程序的字体。
但程序会在中文或者英文系统下运行,有没有什么简便的方法可以取到系统当前的字体,然后统一的来设置程序的字体,不用每个对话框单独设置?

解决方案 »

  1.   

    得到系统字体:
    LOGFONT logFont = {0};
    ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &logFont);貌似不能统一设置,只能单独设置。
      

  2.   

    主要是为了改变字体,大小不改变。
    用SetFont设置对话框的字体,好像没什么反应。
      

  3.   

    对话框字体在对话框属性内可以设置的。
    如果是某些控件的字体,  可以使用setfont单独设置
      

  4.   

    我是希望程序启动后,检查windows系统使用的缺省字体,然后动态的修改对话框的字体。因为程序可能会运行在中文、英文或者别的语言系统下。
      

  5.   

    这样行不行,你从CDialog继承一个类,在这个类OnCreate的时候,得到
    系统的字体,再 setfont 一把。以后你的对话框就从该类继承,每次这样的对话框创建时,不就自动的修改字体了吗
      

  6.   

    BOOL EnumDisplaySettings(  
      LPCTSTR lpszDeviceName, // display device  
      DWORD iModeNum, // graphics mode  
      LPDEVMODE lpDevMode // graphics mode settings  
    );  
    函数的具体用法参见MSDNNONCLIENTMETRICS ncm;  
    ncm.cbSize = sizeof(NONCLIENTMETRICS);  
    VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS,  
    sizeof(NONCLIENTMETRICS), &ncm, 0));  ncm包含Windows使用的系统字体信息 
      

  7.   

    EnumChildWindow,把主窗的扔进去,找到wnd就设置字体~
      

  8.   

    告诉你  只能自己一个一个 SetFont。以前我也是这么干的。