VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1954|回复: 6

[求助] 将程序嵌入到MFC:sprintf格式字符串%d需要类型int的参数但可变参数拥有类型...

[复制链接]
07_avatar_middle
在线会员 发表于 2018-5-14 13:03:58 | 显示全部楼层 |阅读模式
5驿站币
参照博客的方法,https://blog.csdn.net/sunbibei/article/details/51783783
我想用MFC做验证界面,用opencv做图像处理部分(按照博客的做法创建一个多进程程序, 让创建的进程嵌入在MFC中运行,处理图像更方便

但程序运行会出现如题的错误
请问大佬,该问题该如何解决?万分感谢。。

MFC:
PROCESS_INFORMATION pi;
void CaboutMFCDlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知处理程序代码
    STARTUPINFO startupinfo;
    memset(&startupinfo, '\0', sizeof(startupinfo));
    startupinfo.cb = sizeof(startupinfo);
    //设置进程创建时不显示窗口
    // startupinfo.dwFlags = STARTF_USESHOWWINDOW; /*startf_useposition*/
    // startupinfo.wShowWindow = SW_HIDE;

    char* CommandLine = new char[128];
    memset(CommandLine, '\0', 128);
    // 主进程窗口句柄
    HWND mainWnd = AfxGetMainWnd()->m_hWnd;
    // 显示控件句柄
    HWND viewWnd = GetDlgItem(IDC_STATIC)->m_hWnd;
    CRect rect;
    GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);
    // 将参数写入命令行, 传递给马上要创建的进程
   sprintf(CommandLine, "%d %d %d %d", mainWnd, viewWnd, rect.Width(), rect.Height());
    BOOL b = CreateProcess("..\\Debug\\OpenCVProc.exe", CommandLine, NULL, NULL, FALSE, NULL, NULL, NULL, &startupinfo, &pi);
    if (!b)
        MessageBox("创建进程失败!");
    delete[] CommandLine;
    CommandLine = NULL;
}








上一篇:C语言,写一个函数,求平均值,最大值,最小值
下一篇:突然觉得可以实现,但失败了。。。。,
07_avatar_middle
ico_lz  楼主| 发表于 2018-5-14 13:07:22 | 显示全部楼层
补充一下:warning C4477: “sprintf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“HWND”
51_avatar_middle
online_admins 发表于 2018-5-14 17:44:18 | 显示全部楼层
FUCMFC 发表于 2018-5-14 13:07
补充一下:warning C4477: “sprintf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型 ...

你这个是警告,不是错误!
他的意思是窗口句柄HWND 不是一个整型,但是你把这个用 %d 进行格式化了,所以给你个警告而已!如果程序崩溃了问题应该不是出在这
07_avatar_middle
ico_lz  楼主| 发表于 2018-5-14 19:32:12 | 显示全部楼层
嗯。十分感谢。
程序有下面所示的错误,是程序别的地方导致的还是由于类型的不匹配导致的?
错误        C4996        'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
严重性        代码        说明        项目        文件        禁止显示状态
警告        C4477        “sprintf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“HWND”
严重性        代码        说明        项目        文件        禁止显示状态
警告        C4477        “sprintf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 2 拥有了类型“HWND”       
51_avatar_middle
online_admins 发表于 2018-5-14 21:13:24 | 显示全部楼层
FUCMFC 发表于 2018-5-14 19:32
嗯。十分感谢。
程序有下面所示的错误,是程序别的地方导致的还是由于类型的不匹配导致的?
错误        C4996        ' ...

主要是类型不匹配了
59_avatar_middle
在线会员 发表于 2018-5-16 09:38:20 | 显示全部楼层
新版的vs可以使用较新的函数sprintf_s ,或者在预处理里边加上宏_CRT_SECURE_NO_WARNINGS,就可以使用sprintf了
05_avatar_middle
在线会员 发表于 2018-6-13 09:24:48 | 显示全部楼层
你这是用OpenCV导出来的代码?看起来不像呢。用halcon导出来的话,一般不会出现类似错误
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-20 03:43

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表