几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » 程序设计 » vc编程
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2006-11-24, 11:26 AM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 Visual C++ MFC 中常用宏的含义

Visual C++ MFC 中常用宏的含义



1. ASSERT
  
ASSERT(booleanExpression)
  
1.1
适用范围









只在DEBUG版中有效,常用来判断指针是否为空。


1.2作用
验证表达式booleanExpression的值。

当表达式的值为false,则输出诊断消息,并且终止程序运行。
  

1.3 Example

// 判断指针point是否为空
ASSERT (point != NULL);

2. TRACE
  

TRACE(exp)
2.1 适用范围

只在DEBUG版中有效,常用于调试状态,跟踪多个变量在某个时刻的值。比如,统计或分析不同代码段的执行时间。


2.2作用
当程序在调试状态下多次运行时,跟踪多个变量的值。
  

2.3 Example

// 跟踪且输出四个变量的值

TRACE(_T("\tVertex %d (%f, %f, %f)\n"), geometricID[k], pCoord[0], pCoord[1], pCoord[2]);


3TRYCATCH

CATCH(exception_class,exception_object_pointer_name)


3.1 适用范围

用于文件读写操作或与第三方组件通讯时,捕获并处理其异常。TRYCATCH一般都成对使用。


3.2 作用

捕获可能发生异常的代码块。


3.3 Example

// 捕获可能发生异常的代码块,并且抛出异常处理

try

{

CaxArchive << pCax;

}

catch (CException *e)

{

e->GetErrorMessage(ErrStr + 5, 120);

AfxMessageBox((LPCTSTR)ErrStr);

}

4. DECLARE_DYNAMICIMPLEMENT_DYNAMIC

DECLARE_DYNAMIC(class_name)

IMPLEMENT_DYNAMIC(class_name,base_class_name)


4.1 适用范围

识别从CObject派生的类的类型,比如,在CAD软件的二次开发时,扩展并自定义的类。


4.2作用或说明  

当程序运行时,可通过RUNTIME_CLASS宏和CObject::IsKindOf函数识别类的类型。

4.3 Example

// *.h

DECLARE_DYNAMIC(CCax_Curve)

// *.cpp

IMPLEMENT_DYNAMIC(CCax_Curve)













此帖于 2007-06-08 11:07 AM 被 yogy 编辑.
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
旧 2006-12-19, 02:59 PM   #2
VCMacro
初级会员
 
注册日期: 06-12
帖子: 1
精华: 0
现金: 2 标准币
资产: 2 标准币
VCMacro 向着好的方向发展
默认 回复: Visual C++ MFC 中常用宏的含义

CATCH_ALL(e)
{
CWinThread* pWinThread = AfxGetThread();
if ( pWinThread != NULL )
{
lResult = pWinThread->ProcessWndProcException(e, &pThreadState->m_lastSentMsg);
TRACE1("Warning: Uncaught exception in WindowProc (returning %ld).\n",
lResult);
}
else
{
TRACE0("Warning: Uncaught exception in WindowProc.\n");
lResult = 0;
}
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
VCMacro离线中   回复时引用此帖
旧 2007-09-07, 02:23 PM   #3
yogy
高级会员
 
注册日期: 06-11
帖子: 1527
精华: 15
现金: 6353 标准币
资产: 6353 标准币
yogy 向着好的方向发展
默认 回复: Visual C++ MFC 中常用宏的含义

下面这个宏,可以用在带提示的ASSERT
#ifdef _DEBUG
 #define ASSERT_MSG(e,msg) if(!(e)){AfxMessageBox(msg);ASSERT(0);}
#else
  #define AASSERT_MSG(e,msg)
#endif//
yogy离线中   回复时引用此帖
旧 2007-09-07, 02:23 PM   #4
yogy
高级会员
 
注册日期: 06-11
帖子: 1527
精华: 15
现金: 6353 标准币
资产: 6353 标准币
yogy 向着好的方向发展
默认 回复: Visual C++ MFC 中常用宏的含义

Assert使用
  assert需要用在程序员认为肯定不会出错,或者不能容忍的错误的地方;而不能用在有可能出现的错误地方,比如:网络连接、数据库连接等等。
yogy离线中   回复时引用此帖
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 02:35 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多