图像处理知识点
图像处理知识点介绍
1、Assert 是宏而不是函数
1) assert的作用是现计算表达式 expression ,如果其值为假 (即为0),那么它先向
stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清
单badptr.c:
#include
#include
#include
int main( void )
{
FILE *fp
fp = fopen( "test.txt", "w" ) //以可写的方式打开一个文件,如果不存在就创建一个
同名文件
assert( fp ) //所以这里不会出错
fclose( fp )
fp = fopen( "noexitfile.txt", "r" ) //以只读的方式打开一个文件,如果不存在就打
开文件失败
assert( fp ) //所以这里出错
fclose( fp ) //程序永远都执行不到这里来
return 0
}
MFC 中的代码
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,
strAboutMenu);
}
}
解释:MFC 中AEESRT作为断言语句,括号内内容为TRUE,继续执行;为FALSE终止
执行。之后取得 当前窗口的系统菜单,在这个菜单中添加字符串资源 IDS_ABOUTBOX
和 菜单资源IDM_ABOUTBOX,是MFC中一段通用的代码。
2、DECLARE_MESSAGE_MAP()说明
说明:
用户程序中的每个CCmdTarget派生类必须提供消息映射以处理消息。在类
定义的末尾使用
DECLARE_MESSAGE_MAP宏。接着,在定义类成员函数的.CPP文件中,使
用BEGIN_MESSAGE_MAP宏,
每个用户消息处理函数的宏项下面的列表以及END_MESSAGE_MAP宏。
注释:
如果在DECLARE_MESSAGE_MAP之后定义任何一个成员,那么必须为他
们指定一个新存取类型(公
共的,私有的,保护的)。
我觉得他描述得欠妥,我的理解是:
只要有:只要是CCmdTarget派生类,必有消息映射以处理消息,则在类的说
明文件的尾部有
DECLARE_MESSAGE_MAP宏,在类的定义文件中有
BEGIN_MESSAGE_MAP宏和END_MESSAGE_MAP宏以处理
用户消息。
其中BEGIN_MESSAGE_MAP(参数 1,参数2) ,参数 1为该类的类名,参
数2为该类基类的类名。
其中ON_MESSAGE(参数 1,参数2),参数 1为响应的消息,参数2为该
消息对应的处理的函数名。
3、两行语句作用
SetIcon(m_hIcon,TRUE);//Se bigicon 设置大图标
SetIcon(m_hIcon,FALSE);