用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);
} 展开
{
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);
} 展开
展开全部
这个你得先把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高级编程 看一看
这只是 给你一个程序的基本骨架 方便你 往上加 属于你的东西
先 找 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高级编程 看一看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询