我知道你可能认为这个问题已经得到了回答,但事实并非如此,或者至少对我来说不是很清楚。
int WINAPI WinMain (){}
Run Code Online (Sandbox Code Playgroud)
这是著名winmain函数的伪形式。
我的问题是关于调用约定WINAPI,特别是它在“返回类型”和“函数名称”之间的位置。这是标准C吗?因为我参考了 Brian W. Kernighan 和 Dennis M. Ritchie 的书,但我没有看到这个表格。
我也搜索过它的含义,他们说这是一个可以放置的宏_stdcall。所以请不要告诉我这个问题是重复的。
这是可能非常接近我的问题 之一主函数中的“WINAPI”是什么意思?
我想要一个明确的答案WINAPI:它是标准 C 吗?所以我可以在任何函数声明中的返回类型之后放置一个调用约定,然后我将它提供给世界上的任何C 编译器?或者它是否只适用于 Microsoft 编译器?如果是这样,任何人都可以将他们的规则强加于 C 语法吗?
对不起,我知道我的问题对你们中的许多人来说可能是微不足道的,但我到处搜索函数声明语法,所有来源都否认了这个调用约定的地方。
我是Windows编程的新手,我有一个关于绘制窗口的问题,特别是有关BeginPaint函数的问题
当我在MSDN上阅读它时,它就是这么说的
通过调用BeginPaint函数启动绘制操作.此函数使用重绘请求的信息填充PAINTSTRUCT结构.当前更新区域在PAINTSTRUCT的rcPaint成员中给出.
我的问题是当我处理我的WM_PAINT消息wndproc并从调用BeginPaint函数开始时,我没有为此函数提供有关我收到的特定消息或需要绘制的更新区域的任何数据,那么这个函数如何填充PAINTSTRUCT包含无效的矩形" rcPaint会员"?!
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// All painting occurs here, between BeginPaint and EndPaint.
EndPaint(hwnd, &ps);
}
Run Code Online (Sandbox Code Playgroud)
当我BeginPaint在MSDN上引用功能时,它说
除响应WM_PAINT消息外,应用程序不应调用BeginPaint
我的猜测可能是这个函数从Windows内部获取此信息,请求获取此信息,并将最后一条WM_PAINT消息发送到我传递给它的句柄"hwnd"作为函数的第一个参数.那是对的吗 ?
提前致谢.