系统默认字体是GDI的内置对象,可以通过GetStockObject(DEFAULT_GUI_FONT) 获得。
  GetStockObject(DEFAULT_GUI_FONT)中DEFAULT_GUI_FONT是怎样定义的,如何去用它?   求高手。  急需解答。

解决方案 »

  1.   

    鬼才知道 GetStockObject 是干吗的,人家自定义的东西,谁写的问谁去
      

  2.   

    你昨天还没有找到答案吗?呵呵GetStockObject()是Windows API,参见链接:http://msdn.microsoft.com/en-us/library/dd144925%28v=VS.85%29.aspx如果你要在C#的程序里直接使用这个API,你需要使用DllImport将其导入。你还需要定义一个int类型的DEFAULT_GUI_FONT作为传入参数。
    [DllImport("gdi32.dll", CharSet=CharSet.Auto, SetLastError=false, ExactSpelling=true)]
    public static extern IntPtr GetStockObject(int nIndex);另一方面,我查阅了MSDN上的Blog,有文章认为使用GetStockObject是个糟糕的方法,所以你还可以通过SystemParametersInfo取得字体信息,它同样是个Windows API
    请参见:http://msdn.microsoft.com/en-us/library/ms724947.aspx[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
    public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni);
      

  3.   


    哦,不过这个我已经导入了,现在所不知道的就是DEFAULT_GUI_FONT 该如何去定义它,该如何给他值?我昨天也写了,但是还是不对,而且物品要得到的是个Font类型的值,所以类型转换也是有问题的 
      

  4.   

    DEFAULT_GUI_FONT得找个C++的工具,查看.h文件里的值定义。GetStockObject()返回的一个句柄,还需要转换,才能得到Font对象。
      

  5.   

    找朋友帮查了下头文件,DEFAULT_GUI_FONT的值是 17
      

  6.   

    看msdn吧,至于类型定义和对应可以看:
    C++与.net数据类型对应表 
      

  7.   

    我想再请教一下,这个DEFAULT_GUI_FONT获取系统默认的字体,如果系统字体被改动了,它是否也可以获得当前系统的字体呢?