用C语言写api编程,新建一个工程后,这些出现的代码是什么意思? 5

BOOLWINAPIMain_Proc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam){switch(uMsg){HANDLE_... BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}

return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:

break;
default:
break;
}
}

void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
展开
 我来答
veket的小号
2013-12-23 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3986万
展开全部
这个你得先把windows api 程序设计 基本的 一些知识搞明白
这只是 给你一个程序的基本骨架 方便你 往上加 属于你的东西

先 找 WinMain函数 整个windows程序的入口....

#include "main.h"
#include "dialogs.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
return(0);
}
(搜索msdn dialogbox其实也是个宏....
DialogBox

The DialogBox macro creates a modal dialog box from a dialog box
template resource. DialogBox does not return control until the specified
callback function terminates the modal dialog box by calling the EndDialog function. The DialogBox
macro uses the DialogBoxParam
function.

看 调用了DialogBox ,这个函数 又是干嘛的呢 看它的第二个参数 和对话框资源有关系
看他的最后一个参数看样子 是个函数名,即回调函数的名字
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
//BEGIN MESSAGE CRACK
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
//END MESSAGE CRACK
}

return FALSE;
}
HANDLE_MSG是神马 ,查一下 windowsx.h你就会发现 他是个 带参数的宏

分析一下 第三个吧
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn))

其实就是个case语句 ....

case (WM_CLOSE): return HANDLE_##WM_CLOSE((hwnd),(wParam),(lParam),(fn))

case (WM_CLOSE): return HANDLE_WM_CLOSE((hwnd),(wParam),(lParam),(fn))

继续找头文件 里 HANDLE_WM_CLOSE
找到
#define HANDLE_WM_CLOSE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
进一步
case (WM_CLOSE): return ((fn)(hwnd),0)

即case (WM_CLOSE): return ((Main_OnClose)(hwnd),0);
逗号表达式 看出来没有
实际效果也就是
case WM_CLOSE:
Main_OnClose)(hwnd)
return 0;
看出来这就是个windows 窗口回调函数(消息响应函数WinProc)中的CLOSE消息处理的样子了吧

M$给定义一堆宏 把程序搞得看起来更简洁了 吧.........
以上分析 建立在 熟悉C语言宏的 和 windows API 窗口程序【 注册窗口类 、创建窗口
消息循环 、回调响应、消息机制……】如果没看懂,先去把windows程序设计第五版
如鹏网C语言干大事、中科院杨力祥windwos高级编程 看一看
newway05
2013-12-23
知道答主
回答量:39
采纳率:0%
帮助的人:18万
展开全部
这只是一些系统自动生成的必要的代码,可以帮助你减少一些负担
追问
我知道,我是想知道这些都是什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式