main 及 WinMain参数
来源:互联网 发布:编程字体在哪下 编辑:程序博客网 时间:2024/06/09 20:40
最近在写win32的界面程序比较多(以前多写命令行和dll), 所以多了解了下WinMain, 并与main作下比较. 作为一个笔记吧.
C/C++语言中的main函数, 经常带有参数argc, argv, 如下:
int main(int argc, char** argv)
int main(int argc, char* argv[]) //也可以是wchar_t 或 tchar
argc 是指命令行输入参数的个数, argv存储了所有的命令行参数. 在命令行下, 每两个argv[n]之间以空格分隔.
如在命令行下输入 test.exe a b
argc 为 3
argv[0] 为 "test.exe"
argv[1] 为 "a"
argv[2] 为 "b"
以下一个简单的程序可以帮你看看argc, argv具体代表什么.
#include <stdio.h>
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
另外, vc环境下向程序传递参数可以在 Debugging -> command argument 下设置. (下面说的WinMain也一样)
WinMain函数的原型声明如下:
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
WinMain函数接收4个参数, 这些参数都是在系统调用WinMain函数时, 传递给应用程序的.
第一个参数hInstance表示该程序当前运行的实例的句柄, 这是一个数值. 当程序在Windows下运行时, 它唯一标识运行中的实例(注意, 只有运行中的程序实例, 才有实例句柄). 一个应用程序可以运行多个实例, 每运行一个实例, 系统都会给该实例分配一个句柄值, 并通过hInstance参数传递给WinMain函数.
第二个参数hPrevInstance (MSDN)在Win32环境下, 这个参数不起作用.
第三个参数lpCmdLine是一个以空('\0')终止的字符串, 指定传递给应用程序的命令行参数.
注: 这个跟命令行的int main(int argc, char* argv[])不同
仍以上文
test.exe a b
为例, lpCmdLine 为 "a b"
第四个参数nCmdShow指定程序的窗口应该如何显示, 例如最大化、最小化、隐藏等. 这个参数的值由该程序的调用者所指定, 应用程序通常不需要去理会这个参数的值.
关于WinMain函数前的修饰符WINAPI, 请参看下面关于__stdcall的介绍. 读者可以利用goto definition功能查看WINAPI的定义, 可以看到WINAPI其实就是__stdcall
C/C++语言中的main函数, 经常带有参数argc, argv, 如下:
int main(int argc, char** argv)
int main(int argc, char* argv[]) //也可以是wchar_t 或 tchar
argc 是指命令行输入参数的个数, argv存储了所有的命令行参数. 在命令行下, 每两个argv[n]之间以空格分隔.
如在命令行下输入 test.exe a b
argc 为 3
argv[0] 为 "test.exe"
argv[1] 为 "a"
argv[2] 为 "b"
以下一个简单的程序可以帮你看看argc, argv具体代表什么.
#include <stdio.h>
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
另外, vc环境下向程序传递参数可以在 Debugging -> command argument 下设置. (下面说的WinMain也一样)
WinMain函数的原型声明如下:
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
WinMain函数接收4个参数, 这些参数都是在系统调用WinMain函数时, 传递给应用程序的.
第一个参数hInstance表示该程序当前运行的实例的句柄, 这是一个数值. 当程序在Windows下运行时, 它唯一标识运行中的实例(注意, 只有运行中的程序实例, 才有实例句柄). 一个应用程序可以运行多个实例, 每运行一个实例, 系统都会给该实例分配一个句柄值, 并通过hInstance参数传递给WinMain函数.
第二个参数hPrevInstance (MSDN)在Win32环境下, 这个参数不起作用.
第三个参数lpCmdLine是一个以空('\0')终止的字符串, 指定传递给应用程序的命令行参数.
注: 这个跟命令行的int main(int argc, char* argv[])不同
仍以上文
test.exe a b
为例, lpCmdLine 为 "a b"
第四个参数nCmdShow指定程序的窗口应该如何显示, 例如最大化、最小化、隐藏等. 这个参数的值由该程序的调用者所指定, 应用程序通常不需要去理会这个参数的值.
关于WinMain函数前的修饰符WINAPI, 请参看下面关于__stdcall的介绍. 读者可以利用goto definition功能查看WINAPI的定义, 可以看到WINAPI其实就是__stdcall
0 0
- main 及 WinMain参数
- main 及 WinMain参数
- main与WinMain命令行参数提取
- 传递WinMain的参数给main
- WinMain、Main的大小
- WinMain与Main
- _tmain main wmain WinMain
- WinMain和main
- 从main到WinMain
- 将main、WinMain封装
- main函数和WinMain 函数
- 全局变量先于main/winmain执行
- main与WinMain的区别
- main WinMain入口函数比较
- main WinMain _tmain的区别
- 到底是main还是WinMain?
- main WinMain入口函数比较
- _tmain与main,winMain,wmain
- stl-非变异算法
- 【C++】输入流小结
- 给出101个整数数,这101个数是1~100中的数,其中只有一个是出现两次的数,要求找出这个数。
- 学习OpenStack(一)环境准备
- 高级图像去雾算法的快速实现。
- main 及 WinMain参数
- 在win8下安装vs2008出现Microsoft Visual Studio Web创作组件安装失败问题的解决方法
- 轻松学习之Linux教程一 ubuntu14.04+windows双系统安装
- ubuntu14下的gedit3插件安装
- struts2中把list转为json
- 利用优酷的一个插件,做炫的幻灯片效果
- SecureCRT上传文件到CentOS:"rz: command not found"
- 几种进程间的通信
- spring quartz 使用demo