C++的main函数如何添加到MFC对话框消息响应
C++的main函数怎么添加到MFC对话框消息响应
我前期做了一些图像处理的算法的工作,是main函数的形式,有输入输出,现在想把它作为工程的一部分添加到对话框按钮响应消息下,把原来的输出通过弹出对话框的形式实现,不知道怎么添加,是要把处理函数定义一个类吗,然后再按钮响应消息下调用,不是很清楚。
------解决方案--------------------
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
比如:
A将请求数据写到文件a.txt,写完后改名为aa.txt
B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt
A发现bb.txt存在时,读取其内容,读完后删除bb.txt
以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。
除非A或B不支持判断文件是否存在、文件读写和文件更名。
但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢?
共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的:
·进程之间松耦合
·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。
·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。
·方便在线开关服务,只需删除或创建该临时文本文件即可。
·方便实现分布式和负载均衡。
·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满)
·……
------解决方案--------------------
这个没难度吧,算法你写好了,如果是C代码自不用说,你新建MFC工程,写在按钮响应函数就行,至于弹出式对话框,可以用MessageBox()也可以自定义一个CDialog子类,如果这些你不会的话,可以先学习如何使用MFC或者win32创建窗体程序,再来做
------解决方案--------------------
楼上回答已经很好了
------解决方案--------------------
cout的可以替换为MessageBox,cin的要自己做一个CDialog子类,里面添加输入框,自己做变量关联来获取输入值
------解决方案--------------------
看样子你是对MFC不太熟悉的。熟悉的话不会问这问题。
其实整合过去还是比较麻烦的。
原来的Main你是调用了用win32接口?还是就是控制台程序?
原来Main你是自己写的消息循环么?
------解决方案--------------------
在你的函数里面往主线程发消息PostMessage,把需要更新的数据的指针传入WPARAM或LPARAM,主线程做一个自定义消息映射,接收发过来的WPARAM或LPARAM:比如说你要更新的数据是一个字符串:
1.自定义消息ID
2.自定义消息响应函数
3.映射自定义消息
你的函数里面发消息就这样:
比如你要发字符串数据hello,wolrd
------解决方案--------------------
上面的代码在多线程的时候常用,如果你的程序没有开工作线程,就直接调用SetDlgItemText传入更新的文本
------解决方案--------------------
这样吧,你把需求写详细一点,我给你贴个代码,貌似你不是很熟悉MFC
------解决方案--------------------
新建MFC exe工程,拖出控件,把你的main里面代码放到按钮响应函数里,main外围的其他变量和函数你需要写成MFC的成员变量或是成员函数,你的代码多,也不全,没法给完整代码,给个关键的:

把输入框关联一个成员变量,计算出最小值后复制给这个关联变量,然后UpdateData(FALSE)界面就显示了
我前期做了一些图像处理的算法的工作,是main函数的形式,有输入输出,现在想把它作为工程的一部分添加到对话框按钮响应消息下,把原来的输出通过弹出对话框的形式实现,不知道怎么添加,是要把处理函数定义一个类吗,然后再按钮响应消息下调用,不是很清楚。
------解决方案--------------------
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
比如:
A将请求数据写到文件a.txt,写完后改名为aa.txt
B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt
A发现bb.txt存在时,读取其内容,读完后删除bb.txt
以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。
除非A或B不支持判断文件是否存在、文件读写和文件更名。
但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢?
共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的:
·进程之间松耦合
·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。
·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。
·方便在线开关服务,只需删除或创建该临时文本文件即可。
·方便实现分布式和负载均衡。
·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满)
·……
------解决方案--------------------
这个没难度吧,算法你写好了,如果是C代码自不用说,你新建MFC工程,写在按钮响应函数就行,至于弹出式对话框,可以用MessageBox()也可以自定义一个CDialog子类,如果这些你不会的话,可以先学习如何使用MFC或者win32创建窗体程序,再来做
------解决方案--------------------
楼上回答已经很好了
------解决方案--------------------
cout的可以替换为MessageBox,cin的要自己做一个CDialog子类,里面添加输入框,自己做变量关联来获取输入值
------解决方案--------------------
看样子你是对MFC不太熟悉的。熟悉的话不会问这问题。
其实整合过去还是比较麻烦的。
原来的Main你是调用了用win32接口?还是就是控制台程序?
原来Main你是自己写的消息循环么?
------解决方案--------------------
这个没难度吧,算法你写好了,如果是C代码自不用说,你新建MFC工程,写在按钮响应函数就行,至于弹出式对话框,可以用MessageBox()也可以自定义一个CDialog子类,如果这些你不会的话,可以先学习如何使用MFC或者win32创建窗体程序,再来做
你的意思是直接把写好的main函数(带cin>>或cout<<...)的直接放在我添加按钮的响应下面,在输出的地方用MessageBox()
cout的可以替换为MessageBox,cin的要自己做一个CDialog子类,里面添加输入框,自己做变量关联来获取输入值
我的函数是消息循环函数,每次输出的数值不一样,MessageBox函数实现不了,我觉得应该插入一个新的对话框,然后静态文本的文字不变,编辑框的值实时更新,这个应该怎么实现?谢谢啦
在你的函数里面往主线程发消息PostMessage,把需要更新的数据的指针传入WPARAM或LPARAM,主线程做一个自定义消息映射,接收发过来的WPARAM或LPARAM:比如说你要更新的数据是一个字符串:
1.自定义消息ID
#define USER_UPDATE_DATA WM_USER + 100 // 自定义消息ID
2.自定义消息响应函数
LRESULT OnUpdateData(WPARAM wParam, LPARAM lParam)
{
const char* lpData = (const char*)wParam; // 你的消息发过来的指针
SetDlgItemText(IDC_EDIT,lpData); // 更新输入控件文本
return 0;
}
3.映射自定义消息
ON_MESSAGE(USER_UPDATE_DATA, OnUpdateData)
你的函数里面发消息就这样:
比如你要发字符串数据hello,wolrd
const char* lpszText = "hello,world";
PostMessage(USER_UPDATE_DATA, (WPARAM)lpszText, NULL);
------解决方案--------------------
上面的代码在多线程的时候常用,如果你的程序没有开工作线程,就直接调用SetDlgItemText传入更新的文本
------解决方案--------------------
上面的代码在多线程的时候常用,如果你的程序没有开工作线程,就直接调用SetDlgItemText传入更新的文本 上面的代码在多线程的时候常用,如果你的程序没有开工作线程,就直接调用SetDlgItemText传入更新的文本 上面的代码在多线程的时候常用,如果你的程序没有开工作线程,就直接调用SetDlgItemText传入更新的文本
就是在什么地方添加函数,我现在不是很清楚,我想实现的是:首先自己定义几组数据范围,然后实时输入数据,在那个范围内就输出第几组。点击一个按钮实时进行输入,然后再弹出对话框实时显示是第几组数据。
这样吧,你把需求写详细一点,我给你贴个代码,貌似你不是很熟悉MFC
------解决方案--------------------
新建MFC exe工程,拖出控件,把你的main里面代码放到按钮响应函数里,main外围的其他变量和函数你需要写成MFC的成员变量或是成员函数,你的代码多,也不全,没法给完整代码,给个关键的:
把输入框关联一个成员变量,计算出最小值后复制给这个关联变量,然后UpdateData(FALSE)界面就显示了