c# 怎么用aspose.words读取doc文档的目录和对应内容,利用treeview保存,求代码

c# 怎么用aspose.words读取doc文档的目录和对应内容,利用treeview保存,求代码,第1张

楼下的答案有所欠缺,我这里有个比较完整的,也很简洁的方法,大家参考下import javaawtImage; import javaawtimageBufferedImage; import javaawtimageRenderedImage; import javaximageioImageIO; import javaio;public class image { public static void main(String []args)throws IOException{ Image[] array = new Image[10]; Image image = ImageIOread(new File("c:\\supermaket1jpg"));//这里是你要读取的图像文件 array[0] = image; ImageIOwrite((RenderedImage) image, "png", new File("f:\\testtxt"));//这里是你要写入的文件,如果不存在这个文件,那么系统会自动创建它 }

view类是在框架类之上,所以如果你需要实现画面显示之类的,就只能在VIEW类中响应

基本上文档类是用于存储数据管理的类,而视图类是用来显示数据结果的类,他们一般情况下是关联的,因为他们息息相关,一个存储、一个显示

另外App类和Doc类都是从CCmdTarget类派生而来,所以只能接收命令消息和控件通知消息,View类与Frame框架类都是从CWnd类派生所以能够接收命令消息和控件通知消息还有windows消息三种消息对于三种消息,期响应的顺序是这样的:

首先由框架类接收到该消息,框架类将该消息递交给其子窗口View,如果View没有对该消息进行响应,则由View递交给Doc,如果Doc也没有对该消息进行响应,那么它回再次将该消息回交给View,View再回交给Frame框架,框架检查自己是否对该消息有相应的处理函数,如果没有则递交给App,如果App也没有则由Windows系统自己处理。

所以另外一个顺序问题在doc类定义的还是会回交给view类

希望我的答案对你能有所帮助

DOC是一个文档的类,关于文档的 *** 作一般放在这里用。比如说CArchive 用于存取的在这个类里面,新建文档也是跟这个类有关。VIEW是一个视类,绘图啊还有一些跟视图有关的 *** 作在这里,视图类是覆盖在窗口类上面的。还有就是其实这几个类是可以相互调用的。

MFC文档视图结构程序结构总揽

当我们使用MFC AppWizard生成一个MFC程序,选用所有默认的设置(当然也是Multiple Documents,本文讨论主要基于Multiple Documents,对于Single Document情况仅以简单表述提及,皆因后者和前者很多相似相同之处,但前者更为复杂,并且更加常用。),假设你的程序名称为A ,则你会得到CMainFrame、CChildFrame、CAboutDlg、CADoc、CAView、CAApp 6个类(Single Document 仅少一个CChildFrame类,其余均同)。这些类的具体含义将在后面给出,这里先要给出一个MFC 支持文档视图结构程序(以下简称App)的主要组成:

步骤/方法

1

一个App(对应类CAApp)可以包含多个文档模版(CDocTemplate),但是MFC AppWizard(无论是SDI还是MDI)都只是默认生成一个。但是在实际开发中一个文档模版不够,需要自己手工添加(在后面实际项目例子提供示例)。这个结构是通过MFC中CWinApp的成员变量CDocManager m_pDocManager实现的,我们的CAApp正是继承自MFC提供的CWinApp类。

2

CDocManager类则拥有一个指针链表CPtrList m_templateList来维护这些文档模版。这些文档模版都是在CAApp::InitInstance()中通过AddDocTemplate(pDocTemplate)。

3

  CDocTemplate拥有3个成员变量,分别保存着Document、View、Frame的CRuntimeClass指针,另外持有成员变量m_nIDResource,用来指定这个Document显示时候采用的菜单资源。这4份数据都在CAApp::InitInstance()中CDocTemplate的构造函数中指定。在Document中拥有一个回指CDocTemplate的指针(m_pDocTemplate)。

4

一个文档可以有多个视图,由Document中成员变量CPtrList m_ViewList维护。

5

CFrameWnd拥有一个成员变量CView m_pActiveView指向当前活动的View。

6

CView中拥有一个成员变量CDocument m_pDocument指向该视图相关的Document。

7

[注解]:①MFC SDI/MDI程序默认都默认生成了一个文档模版,并将这个文档模版Add到其文档模版的链表中,由于这是MFC默认提供的,因此这个文档模版会被插入到文档模版的第一个位置,而MFC也是通过这个文档模版的特定位置可以确定的。默认情况下,当我们点击File(Open)/ File(New)的时候,这个文档模版会被启用。

不用纠结在“选项卡”上,反正楼主的意思就是能有一种供用户选择不同VIEW的办法。菜单也可以,工具栏也可以,快捷键等都可以,无非是个交互方式而已。

楼主应该做过动态控件吧,就是好比在一个对话框中,原本只有一个按钮,点击一下对话框的菜单后,又会显示一个新的按钮,然后再点击这个菜单,原来的两个按钮就只剩一个了。

如果对以上的程序模式楼主很熟悉了,那一个文档对应多个VIEW的程序模式就容易实现多了。

应该把CFrameWnd想象成对话框,CView想象成按钮,它们的基本模式是差不多的。然后还要再融入一些SDI特有的属性,就可以了。

首先必须明确,点击了菜单(也可以是楼主说的选项卡)后,由哪个类负责相应这条命令。一般都是由CFrameWnd来维护的,然后必须明确CView必须和哪个CDocument建立对应关系,或许会认为对于SDI而言应该只有一个CDocument,其实SDI是指只有一个文档模板,即CSingleDocTemplate,一个SDI可以有很多个文档,即一种类型的文档可以具有很多实例,形象点就是一个int类型可以有很多变量,如int i1, i2, i3。CDocument doc1, doc2等。同一类型的所有文档都由一个文档模板来管理。因此在创建新VIEW的时候,楼主要考虑清楚要关联的是doc1, doc2还是doc3。

CView就像对话框中的按钮一样,应该为他分配一个ID,对于SDI而言,当前活动的CView的ID一般是固定的等于AFX_IDW_PANE_FIRST,活动CView的ID不能随意赋值。

创建2个以上的CView要考虑的是:

当点击菜单后,被选择的那个CView是否已经有个窗口了,如果没有先创建CView的一个实例,然后用该实例调用窗口创建函数CreateWindow等。代码类似于:

CView1 CMainFrame::m_pView1;//CFrameWnd的一个指针成员变量

CView2 CMainFrame::m_pView2;

void CMainFrame::OnShowView1() {

if (NULL == m_pView1) {

m_pView1 = new CView1;

ASSERT(NULL != m_pView1);

m_pView1->Create(NULL, NULL, WS_BORDER, CRect(1, 1, 15, 15)/窗口大小无所谓,因为后面必须修改它的大小/, this, 123/ID也无所谓,因为后面也要修改它/, /这个参数和文档有关,后面说明/);

m_pView1->OnInitialUpdate();

}

}

好了CView第一次被调用所需做的工作就如上所示,和动态创建按钮是一样的。如果CView刚刚被创建或早已创建(类似于该菜单项已经被点击过好多次,不可能每次都要创建一个按钮,只是在第一次创建,当点击了CView2这个菜单项时,只是把CView1这个窗口给藏起来了,再点击CView1菜单项时,把CView2藏起来,显示CView1),对刚被创建的CView或被早已创建的CView进行显示的代码如下:

/CFrameWnd类的成员函数/SetActiveView(m_pView1);

m_pView1->ShowWindow(SW_SHOW);

m_pView1->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

最后一句是刚才在Create时提到的窗口大小无所谓,这里简单调用CFrameWnd成员函数就能将CView的大小进行合适调整:

RecalcLayout();

对于本来被显示的那个CView如view2应该对他进行隐藏,并且不能再占用AFX_IDW_PANE_FIRST 这个ID了。代码如下:

CView2 pView = GetActiveView();

pView->ShowWindow(SW_HIDE);

pView->SetDlgCtrlID(124);

还要做的一件事就是CView应该关联哪个文档,一般SDI只有一个文档实例,可以调用CFrameWnd成员函数GetActiveDocument()得到文档指针,然后和CView进行关联,这个关联一般都是在初次创建CView窗口时即上面提到的Create函数被调用的时候就可以进行关联的,代码如下:

CCreateContext context;

contextm_pCurrentDoc = GetActiveDocument();

m_pView1->Create(,&context/最后一个参数/);

大致就是这样的要点了,其他还需要注意的是m_pView1是被new出来的,别忘了自己控制delete。 还要注意的是刚才所示代码是根据新手理解程序的逻辑安排代码先后顺序的,实际排列代码可能需要进行交叉的,如上面现有SetActiveView,再有GetActiveView,实际排列肯定是这样的:

pOldView = GetActiveView();

SetActiveView(pNewView);

pOldView->ShowWindow(SW_HIDE);

pNewView->ShowWindow(SW_SHOW);

以上的代码不是公式,实际会根据需要有很多组合方式,楼主需要根据自己的程序逻辑查看MSDN中关于各个类成员函数的介绍,要点如上!

----------------------------------------------

晕!

大过年的才有时间打这么多字!简单说下吧,首先你要看下CPropertySheet和CPropertyPage两个类的说明。然后在资源视图构造N个对话框,这N个对话框对应N个选项卡,然后为N个对话框添加N个类,基类不要选CDialog,选择CPropertyPage,接着为CPropertySheet的子类构造N个数据成员,这些成员的类型就是刚才对应N个对话框派生的CPropertyPage的子类,如PAGE1 m_page1, PAGE2 m_page2,在CPropertySheet的构造函数为这些PAGE依次调用AddPage。最后为VIEW的菜单构造响应函数:

MyPropertySheet sheet;

sheetDoModal();就可以d出选项卡了。

至于如何将选项卡的选择内容进行保存这个和对话框是一样的。另外的就是对话框的风格必须为:

1)NO BORDER

2)CHILD

3)NO VISIBLE

楼主的问题是个大问题,无法给出具体细节的,就好比一个根本没学过VC的人,问怎么写个VC程序,一般很难回答这样的问题的。:)

-----------------------------------------------------------

CFormView + 对话框资源 + tab control

word有微软的专用格式,如果要读取其内容,可以使用jar包,如下:

1。用jacob

其实jacob是一个bridage,连接java和com或者win32函数的一个中间件,jacob并不能直接抽取word,excel等文件,需要自己写dll哦,不过已经有为你写好的了,就是jacob的作者一并提供了。

jacob下载: >

以上就是关于c# 怎么用aspose.words读取doc文档的目录和对应内容,利用treeview保存,求代码全部的内容,包括:c# 怎么用aspose.words读取doc文档的目录和对应内容,利用treeview保存,求代码、请问MFC中VIEW类和DOC类如何区别、关于MFC中消息处理程序:有的放在DOC中,有的放在VIEW中,具体放在哪里有没有什么标准等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9316517.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存