C 我能';不要改变文本的字体

C 我能';不要改变文本的字体,c,winapi,fonts,C,Winapi,Fonts,我想更改用户在文本字段中输入的文本的字体。以下是我的代码路径: HWND Edit = CreateWindowEx(...); HFONT hfont = CreateFont(12, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "MS Sans Ser

我想更改用户在文本字段中输入的文本的字体。以下是我的代码路径:

HWND Edit = CreateWindowEx(...);
HFONT hfont = CreateFont(12, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "MS Sans Serif");
SendMessage(Edit, WM_SETFONT, WPARAM(hfont), TRUE);
但是我犯了一些奇怪的错误。奇怪,因为互联网上的每个人都使用这种方法,显然每个人都很好。以下是来自gcc的错误消息:

C:\Users\Admin\Desktop\winapi>gcc main.c
main.c: In function 'WinMain':
main.c:86:32: error: expected expression before 'WPARAM'
  SendMessage(Edit, WM_SETFONT, WPARAM(hfont), TRUE);
                                ^~~~~~
In file included from c:\mingw\include\windef.h:42:0,
                 from c:\mingw\include\windows.h:42,
                 from main.c:1:
main.c:86:2: error: too few arguments to function 'SendMessageA'
  SendMessage(Edit, WM_SETFONT, WPARAM(hfont), TRUE);
  ^
In file included from c:\mingw\include\windows.h:48:0,
                 from main.c:1:
c:\mingw\include\winuser.h:4157:27: note: declared here
 WINUSERAPI LRESULT WINAPI SendMessageA (HWND, UINT, WPARAM, LPARAM);
                           ^~~~~~~~~~~~

有什么方法可以解决这个问题?

< P>这是C++和C的区别,在C中需要:

SendMessage(Edit, WM_SETFONT, (WPARAM)hfont, TRUE);

即使在呈现WiNAPI代码时,大多数非微软样本都可能假设使用C++编译。

如果不使用WPARAME(),它会抱怨无效的CAST.YAXPRADMA注释(LIB,“GDI32.LIB”)(请取消明文)吗?PrimaMyType(LIB,GDI32.LIB)没有改变所有的内容。请取消明文。但是别无选择。VisualStudio怎么样?