您的位置:首页 > 编程语言 > C语言/C++

open cv+C++错误及经验总结(九)

2014-03-17 14:06 411 查看
GetDocument()使用

视图对象是用来显示文档对象的内容,函数GetDocument()用于获取当前文档对象的指针m_pDocument.而函数OnDraw()是一个虚函数,负责文档对象的数据在用户视图区的显示输出。在向导生成的成员函数OnDraw()中调用了函数GetDocument().通过获取的文档类指针可以在视图中显示文档内容。

BOOL CDicomTestDoc::OnOpenDocument(LPCTSTR lpszPathName)
{	if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO:  Add your specialized creation code here
CFile fp;
if(!fp.Open(lpszPathName, CFile::modeRead))
return FALSE;
char ext[5] = ".dcm";
int length = strlen(lpszPathName);
if (strcmp((lpszPathName+length-4),ext) != 0)
{
return FALSE;
}
return TRUE;
}



association

去背



[əˌsəʊʃɪ'eɪʃn][əˌsoʊʃi'eɪʃn]



n.协会,社团; 联合,联系; 联想


presentation

去背



[ˌpreznˈteɪʃn]


[ˌprɛzənˈteʃən, ˌprizən-]



n.陈述; 报告; 介绍; 赠送


context



去背诵

[ˈkɒntekst]


[ˈkɑnˌtɛkst]



n.上下文; 背景; 环境; 语境MFC单文档打开文件

打开文件类之间关联 在向导创建的应用程序中,程序的默认菜单有“文件”、“编辑”、“视图”和“帮助”。

当运行程序后,打开“文件”菜单中的“打开”命令时,应用程序会自动打开相应的“打开”文件通用对话框。之所以有这功能,是因为向导创建的应用程序框架中,自动将“打开”菜单命令与CWinApp的OnFileOpen成员函数相关联。 当用户在通用“打开”文件对话框中指定一个文件后,应用程序将调用文档对象的CDocument::OnOpenDocument虚成员函数。该函数将打开文件,并调用DeleteContents清除文档对象的内容,然后创建一个CArchive(归档类)对象用于数据的读取,接着又自动调用Serialize函数。之后便调用视图对象的CView::OnInitialUpdate虚成员函数。

上述的Serialize函数是一个很特别的函数,它既可以从中读取文档数据,也可以保存文档数据,称为“序列化”函数。它被添加用户的文档类中,用来根据CArchive内部的一个标志来决定文档数据的流向(读或写),打开机制:可以看到消息映射ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen),如果你没有映射ID_FILE_OPEN消息,就会调用CWinApp::OnFileOpen,否则调用你的消息映射函数。

在CWinApp::OnFileOpen中调用CDocManager::OnFileOpen(),这样函数完成以下任务:

1.弹出对话框让用户选择待打开的文件,返回该文件的全路径名称, 供下面函数调用时使用

2.调用应用程序的OpenDocumentFile(LPCTSTR lpszFileName)。

至此,这个对话框的出处就真相大白了。 文档数据的读操作 对于上述过程,我们所做的仅仅是在文档类的Serialize函数中添加文档数据读取(加载)和存储的代码。需要说明

的是,Serialize函数的参数ar是一个CArchive类的引用对象。CArchive类提供了“<<”和“>>”运算符,分别可以向文档对象写入数据或从文档对象中读取数据。它们的含义与

C++中的“<<”和“>>”运算符相同,只不过CArchive支持更多的数据类型,如:CObject、CString等。除此之外CArchive类还提供ReadString和WriteString成员函数来读写文档中

的一行文本。 文档数据的显示方法和技巧 用户的视图类是负责显示文档数据的,目前常用的显示方法有二个:一是在视图的客户区中使用编辑控件,二是直接调用CDC类的

文本输出函数绘制所有的文本内容。 1. 使用编辑控件 “编辑控件”是一个可以让用户从键盘输入和编辑文本的控件,通过它可以输入各种文本、数字或者口令,也可使用它来

编辑和修改简单的文本内容。MFC类CEdit封装了编辑控件的全部操作。 使用编辑控件实现文档数据的显示的思路是,先在视图中创建一个与视图客户区大小相同的编辑控件,

然后把文档的文本内容转送到编辑控件中。 2. 直接控制文本的输出(详细) (1)重写OnOpenDocument函数,读取文本文件到字符串变量 BOOL

CMFCDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;      // TODO:  在此添加您专用的创建代码
if(lpszPathName!=NULL)
{
CFile pCFile;
int hResult=pCFile.Open(lpszPathName, CFile::modeReadWrite); //以读写方式打开文件
if(hResult != 0)
{      //
AfxMessageBox("打开文件成功");
        }    //将文件读到str字符串
pCFile.Read(str.GetBuffer(pCFile.GetLength()), pCFile.GetLength());
pCFile.Close();
}return TRUE;
}
(2)ondraw函数中将文件显示出来 CDC为我们提供了四个输出文本的函数:TextOut、ExtTextOut、TabbedTextOut和DrawText,分别用于不同的场合。

如果想要绘制的文本需要支持Tab符,那么采用TabbedTextOut函数,可以使绘制出来的文本效果更佳;如果要在一个矩形区域内绘制多行文本,那么采用DrawText函数,

会更富于效率;如果文本和图形结合紧密,字符间隔不等,并要求有背景颜色或矩形裁剪特性,那么ExtTextOut函数就将是最好的选择。如果没有什么特殊要求,那使用TextOut函数就显得简练了。

pDC->DrawText(pDoc->str,pDoc->str.GetAllocLength(),CRect(0,0,1000,1000),DT_WORDBREAK);

类的private成员可以被该类的任何一个成员函数访问,protected成员可以被该类或该类的派生类的成员函数访问,public成员可以被任意函数访问。

在类里面,当然可以调用它自己的任何成员

可是当你到类的外面了,你生成的这个类的对象就不能直接调用它的私有或者保护成员了


dereferencing

生词本

[də'rɪfərənsɪŋ][də'rɪfərənsɪŋ]

非关联化


garbage

生词本



去背诵

[ˈgɑ:bɪdʒ]


[ˈɡɑrbɪdʒ]



n.垃圾; 脏东西; 丢弃的食物; 无用的数据


value multiplicity



价值的多样性


CFile Class

Visual Studio 2013

Other Versions



0 out of 1 rated this helpful - Rate
this topic

The base class for Microsoft Foundation Class file classes.

Remarks

It directly provides unbuffered, binary disk input/output services, and it indirectly supports text files and memory files through its derived
classes. CFile worksin conjunction with the CArchiveclass
to support serialization of Microsoft Foundation Class objects.

The hierarchical relationship between this class and its derived classes allows your program to operate on all file objects through the polymorphic CFile interface.
A memory file, for example, behaves like a disk file.

Use CFile and its derived classes for general-purpose disk I/O. Use ofstream or other Microsoft iostream classes for formatted text sent to a disk file.

Normally, a disk file is opened automatically on CFile construction and closed on destruction.

Static member functions permit you to interrogate a file's status without opening the file.

For more information on using CFile, see the articles Files in MFC and File
Handling in the Run-Time Library Reference.

unbuffered英 ['ʌn'bʌfəd]['ʌn'bʌfəd]

adj.无缓冲的,不含缓冲剂的

CET4IELTSGRE
CET6


conjunction

生词本



去背诵

[kənˈdʒʌŋkʃn]


[kənˈdʒʌŋkʃən]



n.连词; 连接; 联合,结合物; (恒星、行星等的)合


polymorphic英 [ˌpɒlɪ'mɔ:fɪk]


[ˌpɒlɪ'mɔ:fɪk]

adj.多形的,多态的,多形态的; 多晶形polymorphic a
多形的(poly 多+morph+ic)isomorphic a 同形的(iso 同等+morph...


interrogate英 [ɪn'terəɡeɪt]


[ɪnˈtɛrəˌɡet]



vt.询问,审问; 提出问题; [计]询问

vi.审问; 质问:inter-,intro-inter-表示“在…之间,相互” rog=ask,
ate


sequential英 [sɪˈkwenʃl]

[sɪˈkwɛnʃəl]



adj.按次序的,相继的,构成连续镜头的; 时序; 序贯


abort

生词本



去背诵

[ə'bɔ:t]


[əˈbɔrt]



vt.使流产; 使夭折; 使中止

vi.流产; 堕胎; 发育不全

n.流产; 中止计划


maintain

生词本



去背诵

[meɪn'teɪn]


[menˈten]



vt.保持,维持; 保养,维护; 抚养,赡养


module

生词本



去背诵

['mɒdju:l]


[ˈmɑdʒul]



n.模块; 组件; (宇宙飞船上各个独立的)舱; 测量流水等的单位


voxel

生词本

[vɒk'səl][vɒk'səl]

n.三维像素

“图像引导下的手术工具箱”Image-Guided Surgery Toolkit(IGSTK),

Kitware Public不知道是什么?
http://www.vtk.org/Wiki/Main_Page 维基网页 vtk itk cmake http://public.kitware.com/IGSTKWIKI/index.php/DICOM_data_orientation 有空好好看看这个网页 DICOM
data orientation



referenced

生词本



去背诵

['refrənst]['refrənst]

adj.参考的,引用的 我把一个非const实参传个constt形参的解决办法 http://bbs.csdn.net/topics/90128981







要注意unsinged char、signed char、char在C++中是不同的三种类型,char的算术运算结果类似unsigned还是signed,由实现(编译器)决定。ISO C允许不同类型指针的隐式转换,包括参数传递时实参向形参类型的转换。但是ISO C++对于类型检查更严格,必须使用显式的类型转换。所以在此表达式func1((const char *)ch1)可以通过编译,而func1(ch1)会导致编译错误,并不是const的原因。对于修饰指针指向类型的const来说,一般不允许随意转换const char*为char*(如果要转换必须用const_cast<char*>或C风格显示类型转换(char*);反过来可以,strcmp接受const char*参数,因此这里可以隐式转换)。不过对char而言有个deprecated(以后可能不被标准支持)的用法,可以用字面量const char*指针隐式转换为char*指针,用于兼容char *p = "abc";之类的旧代码。



error LNK2019: unresolved external symbol "public: __thiscall RAM::~RAM(void)" (??1RAM@@QAE@XZ) refe

RAM类没有实现析构函数函数体,只有析构函数的声明


追问
已认识到了,谢谢
帮忙看看这个
error LNK2019: unresolved external symbol "public: __thiscall _Array<int>::_Array<int>(int)" (??0?$_Array@H@@QAE@H@Z) referenced in function _main


回答
_Array<int>::_Array<int>(int)
这个说的是_Array类模板没有实现这个一个形参为整数的构造函数,但是main函数中调用了


追问
我已经定义过了,确实定义了


回答
这样吧,你将该模版类的定义或者文件包含传过来看看


追问
我用的是VS2010,
template<class Tarr>
_Array<Tarr>::_Array(int)
{
n=x>0?x:20;
ptarr=new Tarr
;
if(!ptarr)
{
cout<<"Memory Allocation Error! ";
exit(1);
}for(int i=0;i<n;i++)
ptarr [i]=0;
}


回答
_Array<Tarr>::_Array(int)
这里没有形参名?还是打掉了?另外,是否用了.h 和.cpp的分离编译


追问
.h和。cpp我是分离定义的
_Array<Tarr>::_Array(int)怎么没形参 了


回答
模板分离时需要包含cpp文件,另外,你的那个没有形参名啊


把一个非const 实参,传给const 形参,为什么会错?




我把一个非const 实参,传给const 形参,为什么会错?

把一个非const 实参,传给const 形参,为什么会错?我把一个非const 实参,传给const 形参,为什么会错?


我把一个非const 实参,传给const 形参,为什么会错?

/article/10218229.html dicom文件的显示

/article/6019808.html Dicom格式文件解析器
http://hi.baidu.com/ishowfun/item/20d3f72573fe153194f62b3f ######## DICOMDIR结构
http://hi.baidu.com/ishowfun/item/1014f5cf3cc7bcdbee183b3f ######### Matrix
multiply
http://wenku.baidu.com/view/b0f41313a8114431b80dd807.html C++ ofstream和ifstream详细用法
http://www.cppblog.com/saga/archive/2007/06/19/26652.html [转帖]fstream的使用方法介绍

/article/3766689.html DCMTK获取压缩后的pixel data
http://www.cnblogs.com/lee0459/archive/2004/09/05/40040.html DCMTK
data part class map


indentation






压痕;

缩进;

刻痕;

凹槽

C++中模板类和类模板

#include "stdafx.h"

#include <iostream>

using namespace std;

template <class T>

T min(T a[], int n)

{

int i;

T minv = a[0];

for(i = 0; i < n; i++)

{

if(minv > a[i])

minv = a[i];

}
return minv;

}
//类模板//

template <class T>

class A

{

public:

A();

A(T _a, T _b);

T sum();

private:

T a;

T b;

};

template <class T>

A<T>::A()

{

a = 0;

b = 0;

}
template <class T>

A<T>::A(T _a, T _b)

{

a = _a;

b = _b;

}
template <class T>

T A<T>::sum()

{

return (a + b);

}
int _tmain(int argc, _TCHAR* argv[])

{

int a[] = {1,3,4,5,6,5};

double b[] = {1.2, 3.4, 2.2, 5.1, 7.4, 666};

cout<<min(a,6)<<endl;

cout<<min(b,6)<<endl;

A<int> ai(3,5);

A<double> bi(2.4, 3.4);

cout<<ai.sum()<<endl;

cout<<bi.sum()<<endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: