看不懂MFC中的一种函数电路割集定义看不懂,请大家帮助下

MFC成员函数的定义及调用_百度知道
MFC成员函数的定义及调用
我想问的是mfc中下面是我定义的成员函数,可以调用吗,怎么调用如果不能调用,我该怎么定义,并且怎么调用谢谢
error C2065: 'initial' : undeclared identifier类型要定义为指针型的吗
我有更好的答案
首先你要生成一个CaboutDlg对象,然后调用这个函数,不懂你为什么在CaboutDlg中定义函数,费解,为什么不在你主对话框的intalizedialog中初始化
我不太懂MFC,因为我不止一次调用,所以想定义为函数型的。在主对话框的intalizedialog中初始化,怎么处理(跟我说说具体的步骤后者程序)。。。,非常谢谢
假如你的主对话框名称叫mydlg,那么在mydlg.h定义一个函数:void sdk_init();在mydlg.cpp实现void Cmydlg::sdk_init(){/'/你要写的的代码}在需要的地方调用这个函数sdk_init(),例如:你可以在mydlg的构造函数调用sdk_init()初始化
采纳率:65%
来自团队:
printf是不能直接使用的,这个是控制台下的函数,在窗口下无效。而且?如果是基于对话框的MFC程序,应该将代码放到主对话框的自定义成员函数再调用,你放到CAboutDlg下面,有什么意义呢这貌似是一个数控类的代码吧。在MFC下,你不能简单的把示例代码复制过来使用。至少
是数控程序,那些处理好了。我不太懂MFC,因为我不止一次调用,所以想定义为函数型的。将代码放到主对话框的自定义成员函数再调用,或者,直接将代码写到主对话框的OnInitDialog(通过向导生成)函数中,怎么处理(跟我说说具体的步骤后者程序)。。。,非常谢谢
你几乎没用过MFC吧,这些都是最基础的问题,建议你看几个简单的教程或者视频再动手,这样问不是办法,遇到的问题会有很多。你需要在主对话框(注意不是关于对话框)类添加一个函数,添加办法是在VC6右侧的类视图中,对该类右键,选择添加函数(Add Function),public类型。然后将代码放到cpp类该函数的实现中,这样在主对话框的任何函数中都可以随意调用了。
本回答被网友采纳
/A;/全局函数/B.h& GetB().Fun(); ///B.CPPCB g_B;CB * GetB(){return &g_B;}/&#47.cpp#include &CB * GetB();/B.hclass B{public:Fun(); }用指针:&#47
为您推荐:
其他类似问题
成员函数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。利用 OpenCV 在MFC中显示图像问题以及解决方法 - 简书
利用 OpenCV 在MFC中显示图像问题以及解决方法
最近在做一个项目,需要在MFC中显示OpenCV读取的图像,遇到了一些问题,现在总结如下,希望对大家有帮助。
问题1:如何在MFC控件中显示OpenCV读取的图像
1.1问题说明
在做工程项目的时候遇到了这样一个问题,将用OpenCV读取的图像(Mat类型,或者IPlImage类型)显示在MFC的Picture控件中,那么将如何才能方便的显示呢?
1.2解决方法
经过研究发现如下两种方法:
1、利用CvvImage类,可以方便的在MFC对应控件中显示图像,方法如下:
首先,由于从OpenCV 2.2.0开始,OpenCV取消了CvvImage这个类,具体原因暂时不太清楚,所以导致OpenCV2.2后面的版本无法直接使用这个类,但是这个类对于MFC的显示确实非常的简单,所以为了继续使用这个类,我们可以下载CvvImage的源码,将CvvImage.cpp以及CvvImage.h添加到工程中去(注:CvvImage.cpp需要在开头加上预编译头文件 #include "stdafx.h" )!,添加到工程之后便可以利用CvvImage进行显示了。并且由于CopyOf后cimg空间不会自动回收,所以不要忘记手动释放内存。
Mat mat = imread(filePath);
CDC* pDC = GetDlgItem( ID )-&GetDC();
HDC hDC = pDC-&GetSafeHdc();
IplImage img =
cimg.CopyOf(&img);
GetDlgItem( ID )-&GetClientRect(&rect);
cimg.DrawToHDC(hDC, &rect);
cimg.Destroy();
//注意释放空间
ReleaseDC(pDC);
2、利用c++以及windows系统函数进行显示,方法如下:
主要利用 StretchDIBits函数将图像数据显示到对应控件中,对于StretchDIBits具体含义,读者可以自行百度,这里给出显示函数代码以及主函数代码,注意在显示的时候,存在数据对其的问题,由于数据存储要求4字节对其,可能需要对显示的数据进行调整,int NewWidth = (width*(bit / 8) + 3) / 4 * 4,请读者注意。
主函数调用:
IplImage *frame = cvLoadImage("path");
DrawPicToHDC((BYTE *)frame-&imageData, IDC_VIDEO, frame-&width, frame-&height, 24);
cvReleaseImage(&frame);
显示函数:
void DrawPicToHDC(BYTE *img, UINT ID, int width, int height, int bit)
if (img == NULL)
CWnd* pwd = AfxGetApp()-&GetMainWnd()-&GetDlgItem(ID);
CDC *pDC = pwd-&GetDC();
pwd-&GetClientRect(&rect);
//pwd-&RedrawWindow();
BITMAPINFO* pI
if (bit == 24)
pInfo = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFO)];
else if (bit == 8)
pInfo = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFO) + 256 * sizeof(pInfo-&bmiColors)];
for (int i = 0; i&256; i++)
pInfo-&bmiColors[i].rgbRed =
pInfo-&bmiColors[i].rgbGreen =
pInfo-&bmiColors[i].rgbBlue =
pInfo-&bmiColors[i].rgbReserved = 0;
AfxMessageBox("显示视频遇到严重错误");
pInfo-&bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pInfo-&bmiHeader.biWidth =
pInfo-&bmiHeader.biHeight = -//图像数据倒着存储,所以-height显示为正,如果为+height图像倒立
pInfo-&bmiHeader.biPlanes = 1;
pInfo-&bmiHeader.biBitCount =
pInfo-&bmiHeader.biCompression = BI_RGB;
pInfo-&bmiHeader.biSizeImage = 0;
pInfo-&bmiHeader.biXPelsPerMeter = 0;
pInfo-&bmiHeader.biYPelsPerMeter = 0;
pInfo-&bmiHeader.biClrUsed = 0;
pInfo-&bmiHeader.biClrImportant = 0;
int NewWidth = (width*(bit / 8) + 3) / 4 * 4;
BYTE* NewImg = new BYTE[NewWidth*height];
memset(NewImg, 0, NewWidth*height);
for (int i = 0; i& i++)
memcpy(NewImg + i*NewWidth, img + i*width*(bit / 8), width*(bit / 8));
SetStretchBltMode(pDC-&GetSafeHdc(), COLORONCOLOR);
StretchDIBits(pDC-&GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0, width, height, NewImg, pInfo, DIB_RGB_COLORS, SRCCOPY);
delete[] pI
delete[] NewI
pwd-&ReleaseDC(pDC);
截止目前,图像的显示已经基本实现了,但是到此运行之后你会发现一个奇妙的现象,内存泄漏。
问题2:出现内存泄漏
2.1问题说明
在显示实现的时候,明明没有自己new变量,为什么会出现内存泄漏呢?并且在进行调试后发现,在MFC工程中,只要定义了Mat,或者IPlImage变量,即使运行结束释放掉,仍然会出现内存泄漏,这是什么原因呢?
2.2解决方法
经过查询发现出现内存泄漏的原因不是你代码有问题,而是MFC编译的问题,网上说,由于引入OpenCV库之后,OpenCV的链接库core.dll先与MFC的库文件生成,所以导致内存泄漏,解决方法是将MFC的动态编译该为静态编译,进行如下操作,在工程环境中依次选择:
工程-- 属性--
配置属性 --常规 --MFC的使用 选择静态库使用
到此,内存泄漏已经解决,但同时很可能出现另一个问题,程序崩溃。错误提示为 _pFirstBlock==pHead,如下图,此问题如下解决。
出现这样的bug
问题3:解决_pFirstBlock==pHead导致程序崩溃
3.1问题说明
在问题2中内存泄漏的问题已经解决了,但是在进行开发的过程中,可能会发现程序崩溃的问题,特别是当程序比较庞大的时候更容易出现此问题,错误提示为:_pFirstBlock==pHead。
3.2解决方法
此问题的产生多半是因为在调用库的过程中产生了冲突,所以解决此问题的方法就是将OpenCV的调用方法改为静态调用, 使用OpenCV的静态库
opencv中在静态库中使用MFC的配置方法如下:
1、lib选择staticlib;
也就是VC++目录中的包含目录应该为如下路径
D:/Program Files/opencv/build/x86/vc12/staticlib
2、属性页---配置属性----MFC的使用---在静态库下使用MFC;
这样会将你程序用到的一些库写到你的exe文件中,换来的是可移植性,但是exe文件会稍微大一些
3、属性----C/C++ -----代码生成----运行库选择位多线程调试(/MTd)。
在静态库下也可能会出现异常错误:
这时候考虑的问题有如下2个:
1、确实是你程序错误,如果程序错误最有可能是你new的指针没有delete,或者某个内存没有分配就开始用再或者就是野指针等情况,最好单步调试,注意指针和数组。
2、opencv的配置错误
配置好opencv后发现我的程序在共享DLL下使用MFC是没有错误,但是一旦选择了静态库下使用MFC就出现了上面的错误。如果不是程序问题,那么通常,Debug下面可能引用了Release下面静态编译的库。如果在debug环境下运行,只要将release下面的库全部删除就可以了。
37 视频滤镜 在配置编译FFmpeg时可以通过--disable-filters来禁止所有滤镜的编译。也可以配置编译脚本来输出所有包含进编译的滤镜信息。 下面是当前可用的视频滤镜介绍。 alphaextract 把输入视频作为灰度视频来提取透明通道,它通常和alphame...
[TOC] Class I. Words Expressing Abstract Relations Section I. Existence 1. Being, in The Abstract existence 1 absolute
a.绝对的,完全的; 无(条件...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
1、禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisabled = YES; 2、隐藏某行cell - (CGFloat)tableView:(UITableView *)tableView heightForRow...
背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcode是什么样的体验? 慢慢有一些赞和感谢, 备受鼓舞, 于是我把所做过的题目用一个script跑了一下,编辑成一篇文章。这个总结页面是这么规划的: 题目名称(答案...
1. 静态库工程打开后设置工程的 scheme, 选择run-&将Debug模式改成Release模式,选择Close具体步骤如下图: 2. 设置好 scheme 后, 分别选择真机和模拟器进行编译(编译之前先command+shift+k进行清理编译缓存), 编译完成后,...
冷心已经不能使出之前那种强大的力量,就连神怒的力量她也激发不出来,现在她只靠御剑诀、太乙剑气以及白虎杀魂跟鬼夜叉战个平手。至于三京,华丽丽地大显神威一通之后,耗尽了气力,只得无奈地充当看客。眼见赤瞳已经无甚大碍,他便放下心来,密切关注着冷心跟鬼夜叉的对战。 所有人的注意力都...
它是白酒市场的新星,在白酒市场中脱颖而出。不是他的伟大的历史,而是它对人们的坚持,始终坚持的理念:“把酒的价值还原于酒”。它就是今年的新星——仪品酒。 望眼看看整个白酒市场,假酒盛行,扰乱了白酒的很多市场。例如我们都知道的茅台酒,很出名,然后出名的背后却被很多假酒而让其名声...
明天是立春的节气,一年之计在于春,此刻写下关于春的感受。野火烧不尽,春风吹又生是春季的真实写照,一切生机正在等待着勃发,不久将绿意散满人间,将这天地尽情的装扮起来,开启一年的轮回,花将年年开,今年将不同,是的,今年大街小巷早早流行起了绿色,生机早已注入到每个人的心间,急待着...
草酸作为引发人体肾结石的重要因素,在茶叶当中的含量相当高。相关研究显示,如果一个人每天喝10克茶叶,人体所摄取的可溶性草酸的总量就会超出正常人每天草酸排出量。当胃肠道吸收草酸含量过高,汇集到肾脏中就容易与钙结合,引发或者加重结石病情。 传统茶叶 传统茶叶在冲泡过程中茶汤和茶...Windows编程中回调函数的使用心得(MFC篇)
来源:博客园
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
Windows SDK中回调函数处处可见,MFC中使用回调函数要比纯Window SDK或C#,VB.net中麻烦许多,笔者想借这篇文章来总结MFC中回调函数的使用。
本文以回调函数EnumWindows为例,介绍如何在MFC中使用回调函数:
函数功能 
该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。 函数原型 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); 参数: lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。 回调函数原型 BOOL CALLBACK EnumWindowsP
函数原型:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
参数:lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。lPararm:指定一个传递给回调函数的应用程序定义值。
回调函数原型BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);
参数:hwnd:顶层窗口的句柄lparam:应用程序定义的一个值(即EnumWindows中lParam)
回调函数注意:
1. 回调函数函数必须修饰为CALLBACK并且只能声明类的为静态成员函数:

static BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);//获取进程句柄中的主窗口句柄

这种声明方式带来了一个问题,即EnumWindows只能使用类中的静态成员变量,如何解决这种矛盾呢?
2. 可以使用lParam来传递指向该类的指针已访问类的非静态变量,即:

BOOL CALLBACK CSimInstDlg::EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
 DWORD
 HWND
 CSimInstDlg* CurInst = (CSimInstDlg*)lP
 id=GetWindowThreadProcessId(hwnd,NULL);
 if (id==(DWORD)CurInst-&m_dwInstTID)
 {
while((thwnd=::GetParent(hwnd))!=NULL)
hwnd=
CurInst-&m_hWind =
::SetLastError(0);// 设置无错误
return FALSE; // 返回 false 以终止枚举窗口
 }
 return TRUE;
}

3. EnumWindows函数不列举子窗口,只能列举所有的主窗口

 
 
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动&>&MFC中cstring转换成char*函数
MFC中cstring转换成char*函数
上传大小:440B
这是我自己找的一个函数整理了下,做MFC开发时在unicode字符下使用,希望帮到大家,谢谢
综合评分:4(2位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有2条
这个函数可以 用,对我的帮助很大,谢谢。。。。。。
chenshuye009
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
MFC中cstring转换成char*函数
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
shisanshisan
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
MFC中cstring转换成char*函数 上传我的文档
 下载
 收藏
粉丝量:135
该文档贡献者很忙,什么也没留下。
 下载此文档
MFC下如何定义全局变量和全局函数
下载积分:30
内容提示:在VC
MFC下如何定义全局变量和全局函数
文档格式:PDF|
浏览次数:235|
上传日期: 23:57:06|
文档星级:
全文阅读已结束,如果下载本文需要使用
 30 积分
下载此文档
该用户还上传了这些文档
MFC下如何定义全局变量和全局函数
关注微信公众号}

我要回帖

更多关于 请用自定义函数的形式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信