注册 登录
编程论坛 VC++/MFC

求解cmd和mfc相关联的问题

serena1992 发布于 2011-08-06 15:01, 1924 次点击
我现在写好了一个画图功能的mfc程序,具体功能是载入一张地图然后能够通过设置参数来在地图上画出相关的圆点(画图功能)。现在在cmd下能够通过进入.exe的目录,来调用这个可执行程序,但现在要求实现在cmd下面通过输入.exe的名字,后面加参数来传入给这个可执行文件,然后不出现.exe的对话框,直接将画好图的图片返回到参数所包含的目录中,请问大家,这个功能要怎么才能实现啊?本人初学mfc,不甚了解这些东西,菜鸟一个,希望大家帮忙解决下问题哦~~
13 回复
#2
hahayezhe2011-08-06 15:07
??没明白你的需求
你是想通过命令行传参么?
#3
serena19922011-08-06 15:12
回复 2楼 hahayezhe
嗯,是的,比如说这个可执行文件叫MyProject.exe,那么我希望可以做到在cmd中输入 MyProject   参数(比如载入地图的地址,画图的参数,画好的图的另存的地址……),而且用cmd执行后不要出现.exe的对话框,也就是说只要一个结果就可以了,不需要在对话框中用button之类的控件来画东西。
#4
hahayezhe2011-08-06 15:16
还真没做过GUI的命令行传参呢,一般是通过控制台程序,main里进行传参,
不过WinMain也应该可以吧 ,你再app里找找 相关变量或者函数,看有没有提供相关接收命令行参数的接口

WinMain封装在app类里
#5
serena19922011-08-06 15:32
以下是引用hahayezhe在2011-8-6 15:16:35的发言:

还真没做过GUI的命令行传参呢,一般是通过控制台程序,main里进行传参,
不过WinMain也应该可以吧 ,你再app里找找 相关变量或者函数,看有没有提供相关接收命令行参数的接口

WinMain封装在app类里

winmain主函数封装在APPMODUL.cpp中吧,请问你说的app类是什么?
#6
hahayezhe2011-08-06 16:04

在MFC程序中,可以用以下几种方法来获取命令行参数。
为方便说明,我们假设执行了命令:C:\test\app.exe -1 -2

方法一
::GetCommandLine();
将获取到 "C:\test\app.exe"  -1 -2

方法二
for (int i=0;i<__argc;i++)
{
__argv[i];
将依次得到C:\test\app.exe  -1  -2
}

方法三
AfxGetApp()->m_lpCmdLine;
将获取到 -1 -2


#7
serena19922011-08-07 11:16
回复 6楼 hahayezhe
很感谢你的回复,我再来试试看吧==
#8
serena19922011-08-08 15:20
回复 6楼 hahayezhe
6楼,你好,我在app中找到了你所说的winmain,确实是有cmd的接口的,叫做theApp.m_lpCmdLine这样的一个LPTSTR类型的参数,但对C++不熟悉的我不知道如何将这种类型的参数的值变成我需要的double类型的值。感谢你的回答!
#9
zhoufeng19882011-08-09 01:56
进程通信如何?
#10
serena19922011-08-09 09:21
以下是引用zhoufeng1988在2011-8-9 01:56:36的发言:

进程通信如何?

请问为什么用进程通信呢?
#11
hahayezhe2011-08-09 15:46
这种东西与进程通信 有鸡毛关系
LPTSTR不就是一个字符指针么,你看看其定义啊

无非就是char *和double之间的转换

Format sprintf atof 太多的方法可以搞的
#12
zhoufeng19882011-08-10 09:27
不好意思,看错了。
我以为是通过控制台程序与MFC程序交互。

楼上说得好。确实是有个鸡*毛关系。
#13
serena19922011-08-10 16:47
真的是太谢谢你们啦!
#14
黄大小瓜瓜2012-07-04 10:53
你好 看到了论坛上你的提问 我也遇到了同样的问题
可否将你这部分的程序发给我 帮忙解答一下呢?
如果你不介意的话或者也可以加我QQ 785145835 帮忙指点下 吼吼

我做的是EXE程序功能和你不一样 但MFC的要求一模一样
需要 按按钮 程序就自动运行 但是不要出现运行的状态 只要返回结果
  在MFC 界面打开只能在CMD下运行的EXE程序

1