首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在非MFC项目中使用TRACE宏?

在非MFC项目中使用TRACE宏,可以通过以下步骤实现:

  1. 首先,需要在项目中包含头文件<afx.h>,这个头文件包含了TRACE宏的定义。
  2. 其次,需要在项目中包含头文件<atlbase.h>,这个头文件包含了AtlTrace函数的定义,该函数是TRACE宏在非MFC项目中的实现。
  3. 最后,在代码中使用TRACE宏即可。例如:
代码语言:cpp
复制
#include <afx.h>
#include <atlbase.h>

int main() {
    TRACE("Hello, world!\n");
    return 0;
}

这样就可以在非MFC项目中使用TRACE宏进行调试输出了。需要注意的是,TRACE宏在发布版本中会被禁用,因此不会影响程序的性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASSERT_VALID和ASSERT分析

这个都是MFC的调试. ASSERT_VALID用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。...ASSERT用于确保参数内的表达式正确,如果表达式为false,则会显示一个消息对话框,其中有源文件的名字和当前行号,用户可以选择中断程序或进行调试.这个通常用于校验参数和返回值....以上两个均只在Debug版本中有效,与ASSERT相对应的是VERIFY.VERIFY在Debug版本与ASSERT相同,在Release版本仅执行参数表达式,不进行校验....注意:二者都只能在MFC工程里用。...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

85820
  • CC++ HOOK 全局 API

    全局 Hook 不一定需要用到 Dll ,比如全局的鼠标钩子、键盘钩子都是不需要 Dll 的,但是要钩住 API,就需要 Dll 的协助了,下面直接放上 Dll 的代码,注意这里使用的是 MFC DLL...DLL 是动态链接的, // 则从此 DLL 导出的任何调入 // MFC 的函数必须将 AFX_MANAGE_STATE 添加到 // 该函数的最前面。...MFC 调用 // 出现在每个函数十分重要。...这意味着 // 它必须作为函数的第一个语句 // 出现,甚至先于所有对象变量声明, // 这是因为它们的构造函数可能生成 MFC // DLL 调用。...LIBRARY EXPORTS StartHook StopHook ; 此处可以是显式导出 然后开始写调用 Dll 的代码:(这里要用 MFC 项目,因为全局鼠标钩子需要用到 CWnd

    98110

    (转载)VC的内存泄漏检查

    :DEBUG_NEW,可以找到“DEBUG_NEW ”,在"请参见其他资源",打开“MFC的内存泄漏检测”,在“MFC的内存泄漏检测”页面下方的相关章节,可找到“检测和隔离内存泄漏”,它就是介绍如何使用...这些方法不仅MFC程序可以使用,win32程序也可以使用。并且这些方法,不仅C++的内存分配方式(new)可用,C的内存分配方式(malloc)也可用。...(s, _NORMAL_BLOCK, __FILE__, __LINE__) // 其它C内存分配函数的定义,calloc等 #endif /* _CRTDBG_MAP_ALLOC */ 通过包括...也是个,定义为: #define DEBUG_NEW new(THIS_FILE, __LINE__) 所以,在MFC debug下,调用new操作符,会使用 void* __cdecl operator...而,已把malloc映射到_malloc_dbg上了。但MFC程序,也做了对malloc的映射。

    1.4K20

    VC的内存泄漏检查

    :DEBUG_NEW,可以找到“DEBUG_NEW ”,在"请参见其他资源",打开“MFC的内存泄漏检测”,在“MFC的内存泄漏检测”页面下方的相关章节,可找到“检测和隔离内存泄漏”,它就是介绍如何使用...这些方法不仅MFC程序可以使用,win32程序也可以使用。并且这些方法,不仅C++的内存分配方式(new)可用,C的内存分配方式(malloc)也可用。...(s, _NORMAL_BLOCK, __FILE__, __LINE__) // 其它C内存分配函数的定义,calloc等 #endif /* _CRTDBG_MAP_ALLOC */ 通过包括...也是个,定义为: #define DEBUG_NEW new(THIS_FILE, __LINE__) 所以,在MFC debug下,调用new操作符,会使用 void* __cdecl operator...而,已把malloc映射到_malloc_dbg上了。但MFC程序,也做了对malloc的映射。

    1.8K40

    MFC和QT的区别

    早期很多学习计算机专业的读者可以在学校里面都有接触过,因为这个是每一个计算机专业的读者必修课程,所以在早期的C++项目里面很多都是使用MFC为开发框架进行构建的,因为它有一个很大的好处就是和我们的windows...,所以这个时候我们现实生活在windows系统开发的程序很大部分都是使用MFC框架进行开发,在如今我们的很多酒店、政府等等很多行业上面用的都是MFC框架进行开发,MFC全面支持COM组件开发,这个时候很多在...,只要微软不倒闭,MFC的工作者就不会失业,为啥呢,哪怕现在在windows上面最为流行的C#语言也没有C++的windows编程对windows操作系统操作这么流利,打个比方如果你的电脑里面在加上一个高拍仪这个时候要用到的是...Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些,Qt很容易扩展,并且允许真正地组件编程。...商业转载请联系作者获得授权,商业转载请注明出处。

    1.8K51

    VC编程入门浅谈「建议收藏」

    对于没有编程基础的人首先要学习编程的基础知识,变量,语句,基本的算法等,然后写一些小的程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。...注意,C++是一门语言,而VC则是讲解如何在VC环境下使用MFC类库,学习VC应建立在充分了解C++的基础上的。...学起来MFC来可能会很费解。...通过比较成员函数和对应的API函数间的区别,尝试去理解MFC是怎样封装相关的API的。例如,相当多的,看起来很奇怪,但你不必理会其实现方法,只要知道如何使用便可,这点也很重要。...其实,常见的链表等结构以及排序等算法在C++标准模板已经实现了,不用你去费劲,但有些了解总是有好处的。至于离散数学、线性代数什么的,对于复杂的算法是必要的,其中离散数学是数据结构的基础。

    99510

    mfcgetdlgitem_mfc queue

    返回的指针可能是临时的,不能被保存以供将来使用。 参数: nID 指定了要获取的控件或子窗口的标识符。 phWnd 指向子窗口的指针。...项目的Resource.h文件定义了各种资源ID,如下图单选按钮的定义 疑问: 定义:IDC_RADIO1对应1000 CWnd* GetDlgItem( int nID ) const; GetDlgItem...IDC_RADIO1 + m_Radio - 1) ( IDC_RADIO1 + m_Radio – 1 )是一个int型数值,也就是说在函数调用的时候会将 IDC_RADIO1 转换为 1000 但是在MFC...通过拖动添加按钮后会出现定义不连续的现象,即: IDC_RADIO 1000 IDC_RADIO1 1002 是不是通过以下方式查找按钮会出现问题 void CGetRadioDlg:...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    29530

    金山WPS,C++研发工程师,一面

    怎么为各种变量分配内存空间的 16、引用了解吧,介绍一下 17、拷贝构造函数内部做了什么,什么时候需要重写 18、初始化列表了解吗(以为是那个C11特性,没敢说) 19、平时用什么编程环境(Windows+MFC...+Qt) 20、用过Qt是吧,说一下信号和槽的机制,绑定的方式 21、你觉得MFC和QT比各自有什么优缺点 22、MFC的消息机制和Qt消息机制的对比 进程线程相关 1、了解过线程吗,谈一下进程和线程的联系和区别吧...2、对于共享的区域多个进程或线程一起访问会不会出问题,要怎么解决(同步和互斥) 3、进程通信有哪几种方式,介绍一下 网络(项目里有) 1、Socket的流程是什么样的(服务端和客户端两个) 2、项目里用的什么协议...数据结构 1、说说vector和list的不同,优缺点 2、平衡二叉树了解吗,说说它的特点,时间复杂度(logN) 3、说说二叉树的三种遍历(想让我写来着,没带纸笔,口述了算法思想和区别,递归和递归...) 4、图了解吗,说一说它的遍历(广度和深度) 回到C++ 1、说说定义和const的区别 2、定义和内联函数的区别 3、内联函数的作用,和普通函数有什么区别 4、C++有几种转换方法,简单介绍一下

    55920

    VC++6.0 转 VS2005以上版本(1)

    如果使用ARX 2004,则则需要使用VS .NET 2002编译,因为ARX 2004自身是用VS .NET 2002编译的,它的图形显示部分使用MFC库高于VC6.0自带的版本。...7.2 程序中使用的字符类型或处理函数不能支持Unicode 如常量字符串"XXX"的形式要加 _T,应该使用TCHAR 类型系列替代char系列,应该使用支持 Ansi/Unicode的字符串处理函数...四、"字符串转换"的几种情况 字符串转换的实质是使目前的Unicode方式编译的代码能使用ObjectARX 2007Unicode方式编译出的代码。...我们程序APArxInterface里有类UeDockControlBar派生自CAcUiDockControlBar,重载使用了类似LPCREATESTRUCT这样的能自适应字符串编译方式的MFC定义的数据结构的接口时...ON_WM_CREATE()消息映射MFC头文件 afxmsg_.h 定义: // Message map tables for Windows messages #define ON_WM_CREATE

    27720

    MFC学习笔记-HellowWorld

    VS2008->新建->vsual c++->常规->空项目 添加个头文件,代码如下 class CMyApp:public CWinApp { public: virtual BOOL InitInstance...() { Create(NULL,"MYAPP Application"); } void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point) { TRACE...-》属性-》配置属性-》常规-》项目默认值-》MFC使用-》在共享 DLL 中使用 MFC 同样在配置属性-》连接器-》高级-》入口点-》WinMainCRTStartup 然后项目可正常运行 下面挑一部分内容解释一下这个程序...程序运行先构造一个CWinApp派生出来的类的对象(MFC框架决定的) 就是这个对象:CMyApp theApp; MFC内部有一个WinMain函数 这个函数是程序的入口点,函数执行过程中发现了...CMyApp 的对象,即执行它的InitInstance函数 此函数负责主窗口的构造和显示工作 我们可以看到在InitInstance程序创建了一个继承自CFrameWnd的CMyFrame类 这就是代表窗口的类

    56820

    MFC编程入门之五(MFC消息映射机制概述)

    MFC软件开发,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。 比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。...MFC使用一种消息映射机制来处理消息,在应用程序框架的表现就是一个消息与消息处理函数一一对应的消息映射 表,以及消息处理函数的声明和实现等代码。...用户自定义消息实际上就是用户定义一个作为消息,此的值应该大于等于WM_USER,然后此就可以跟系统消息 一样使用,窗口类可以定义它的处理函数。...消息映射除了在CMainFrame的实线文件 添加消息映射表外,在类的定义文件MainFrame.h还会添加一个调用:    DECLARE_MESSAGE_MAP() 一般这个调用写在类定义的结尾处...本节对MFC消息映射机制只是做了比较简单的讲解,让大家对它有一定的认识,编程入门这不必强求完全掌握。在以后的教程中会经常涉及 到消息的使用,大家会逐渐熟悉MFC的消息映射机制。

    1.8K10

    Debug和Release之本质区别

    你可以在 Release 版本强制加入 /Oy- 编译选项来关掉帧指针省略,以确定是否此类错误。此类错误通常有:  •  MFC 消息响应函数书写错误。...例如,函数中有一个未被使用的变量,在 Debug 版它有可能掩盖一个数组越界,而在 Release 版,这个变量很可能被优化调,此时数组越界会破坏栈中有用的数据。当然,实际的情况会比这复杂得多。...除此之外,VC++还有一系列断言。...但有时 /W4 会带来很多冗余信息, 未使用的函数参数 警告,而很多消息处理函数都会忽略某些参数。我们可以用: #progma warning(disable: 4702) //禁止 //......这样调试器就能使用 pdb 文件的调试符号。但调试时你会发现断点很难设置,变量也很难找到??这些都被优化过了。

    3.8K90

    牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    30.阻塞方式和阻塞方式,阻塞connect与阻塞connect。(比较难,有兴趣可以了解) 31. HTTP基本格式。(java程序员必须掌握) 三:设计模式 1....提供的同步措施哪些是内核对象? 试比较互斥量和临界区。 二:MFC 1. MFC包含哪几类程序? 其中MFC应用程序又包含哪几类? 2. MFC的大多数类都继承自哪个类? 3....MFC的消息分类。自注册消息用什么函数进行注册?消息映射是什么? 10. MFC菜单、工具栏、状态栏所用的类是什么? 11. 怎么定义一个视图窗口? 12. 划分窗口使用什么类?...序列化机制 的,怎么使用? 执行>>和<<时进行的内部操作及其相应函数。 23. MFC的对话框的种类,各自怎么使用?及相关函数。 24. 定义对话框数据交换的步骤,及使用方法,实现原理。...二叉树前序、序、后序递归遍历算法。二叉树前序递归遍历算法。 5. 堆,建堆算法,堆的插入和删除算法,堆排序。 6. 哈希。哈希函数的有哪些种?余数的取法? 处理冲突的方法?

    2.4K41

    windows编程 为什么要用宽字节

    ); 比如在Windows API: FindWindowW和FindWindowA W的意思为wide(宽) A的意思为ASCII 在Windows.h中有一个UNICODE 底层调用宽字节版本...C语言中的宽字符的使用 1. 在C语言中使用wchar_t表示宽字符,使用L告知编译器使用Unicode表。wchar_t x1 = L’’; 2....MFC下提供的ATL 转换: T2A T2W T2CA T2CW W2A W2CA W2T W2CT A2W A2CW A2T A2CT T:TCHAR  2:To  C:CONST  A:CHAR(...ANSI)  W:WCHAR 先到atlconv.h头文件下看看这些的定义,还需要在转换上方添加,并以分号结束:USES_CONVERSION;它定义了转换所需的一些局部变量。...打印信息的方式 int a = 10; TRACE("a == %d", a); CString s; s.Format(CString("a == %d"), 20); AfxMessageBox

    96230

    VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性

    项目内部使用__declspec(dllexport)导出 //在dll项目外部使用时。...用__declspec(dllimport)导入 //DLL_IMPLEMENT在SimpleDLL.cpp定义 #ifdef DLL_IMPLEMENT #define DLL_API __declspec...5、在应用程序设置。选择应用程序类型下的控制台应用程序。 6、单击完毕创建项目。 在控制台应用程序中使用类库的功能: 1、为SimpleDLLTest.cpp加入内容。...这样拷贝到其他没有安装VS2010的电脑上是用不了的; 在项目上单击鼠标右键,属性: 在左側的配置属性中选择常规。在右側找到MFC使用,选择在静态库中使用MFC 这里是改动MFC使用。...用__declspec(dllimport)导入 //DLL_IMPLEMENT在SimpleDLL.cpp定义 #ifdef DLL_IMPLEMENT #define DLL_API __declspec

    1.3K20
    领券