第一个问题,是不是调用API函数要用VC等编译器?
用VC编译器当然可以,VC 是Microsoft 为编译C,C++夺身订造的一款编译器,也用来编译windows 程序或称为WinProc 程序,由于VC的出台,使得Borland 公司一蹶不振。比较BC和VC马上就知道答案了。BC缺乏人性化设计,对于一个程序员Debug是工作的很大一部分,BC在辅助Debug上面作的很差。说到这里说了有些跑题了,不跟你讲故事了。回到问题上来,用其他的编译器当然也可以,比如Dev编译器也是可以的。关键的是编译器提供了相关的库函数。用BC也可以。不过,说老实话,对于windows programming 我从来没用过其他编译器,如果你跟我讨论如何使用其他编译器,我帮不了你什么忙,如果在VC宽竟下,我们可以讨论。
第二个问题,直接用C可以调用API函数吗?
看来你从来没写过WinProc 函数,有必要让你有点基础知识,你可以看看另外一个板块Windows 编程中我的一个帖子"all about windows programming" 有了一些基础知识后,你就清楚了。所谓用C编写windows 程序,是指用C的方法,也就是说,不牵涉到 class, 不牵涉到对象化编程。如果你明白C的话,你在了解了windows 程序的一个框架后,你便能看懂程序,在以后逐渐熟悉了解了WinApi 函数后,你就可以自己随心所欲编你的应用程序了。
第三问题,也可以回答你,不过你说时间有限,估计你在未来的两三个月内,完成这个项目会很困难。通常学习windows Programming with WinApi 至少半年以上。自己上手写程序,估计还需更多的时间。
你提到的关于字体的大小和颜色的设置方面的函数当然有,不过光是告诉你函数名不会有什么用的。我建议你先看看我的那个帖子。
在Windows编程中光是说字体就是老大一段。
字体分为与设备相关的字体集和与设备无关的字体集。如果你采用与设备无关的字体集,Windows 系统就能维护他的所见即所得性,也就是说,屏幕上显示的字体与打印机所打印的结果完全一致。为了操作文本或者说操作字体,需要首先获得文本handle, 应用程序还要设置字体,其大小,颜色等相关属性,并将其选入设备环境中。
如上所述,字体分设备相关(物理字体,为特殊设备所设计)和设备无关两类。被广泛使用的当然是设备无关字体,即逻辑字体。Windows系统提供了7种基本字体
ANSI_FIXED_FONT (ANSI 标准的固定宽度的字体)
ANSI_VAR_FONT (ANSI 标准的可变宽度的字体)
DEFAULT_GUI_FONT
DEVICE_DEFAULT_FONT (与设备有关的字体,在NT中使用)
OEM_FIXED_FONT(原设备制造商提供的字体)
SYSTEM_FONT(window 系统字体)
SYSTEM_FIXED_FONT(window 系统提供的固定高度的字体)
SYSTEM_FONT被采用作为系统界面字体。
选择系统字体执行以下步骤:
1)定义字体handle 变量 HFONT hF; // hF is handle of Font
2) to get the Fonthandle using GetStockObject: hF = GetStockObject();
3) select the font into device by invoking funcition SelectObject: (HFONT)SelectObject(hdc, hF);
你当然也可以创建自定义字体,以上7种字体变化实在太少。
通过调用CreateFont 来创建自定义字体。
他的函数形参太多。下面是关于这个函数 msdn 上的详细讲解
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_8fp0.asp
应用程序通过调用函数SetTextColor 来设置字体颜色,see link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_8bsi.asp
通过调用函数SetBkColor 来设置背景颜色
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_433m.asp