none
Otevření externího souboru

    Dotaz

  • Zdravím,

    měl bych dotaz ohledně otevření souboru pdf z programu napsaném v C++, MFC (win 32). Potřeboval bych, abych měl v jedné složce soubory pdf a v programu potom tlačítko, na které když klepnu, tak se mi daný soubor otevře (v Adobe Readeru nebo něčem podobném). Měl by to být program na CD jako autorun. Poradili byste mi, jak bych to měl napsat?

    Děkuji

    (Visual Studio 2010, C++, MFC, Dialog)

    12. května 2012 13:29

Odpovědi

Všechny reakce

  • Obávám se, že jste mi příliš nepomohl. Abych upřesnil moji situaci, mám dialogové okno, kam mám vložené tlačítko po jehož stisku potřebuji otevřít pdf soubor.

    // Sekce01b.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "MujProgram.h"
    #include "Sekce01b.h"
    #include "afxdialogex.h"
    
    
    // Sekce01b dialog
    
    IMPLEMENT_DYNAMIC(Sekce01b, CDialog)
    
    Sekce01b::Sekce01b(CWnd* pParent /*=NULL*/)
    	: CDialog(Sekce01b::IDD, pParent)
    {
    
    	EnableAutomation();
    
    }
    
    Sekce01b::~Sekce01b()
    {
    }
    
    void Sekce01b::OnFinalRelease()
    {
    	// When the last reference for an automation object is released
    	// OnFinalRelease is called.  The base class will automatically
    	// deletes the object.  Add additional cleanup required for your
    	// object before calling the base class.
    
    	CDialog::OnFinalRelease();
    }
    
    void Sekce01b::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    }
    
    
    BEGIN_MESSAGE_MAP(Sekce01b, CDialog)
    	ON_BN_CLICKED(IDC_MFCBUTTON1, &Sekce01b::OnBnClickedMfcbutton1)
    END_MESSAGE_MAP()
    
    BEGIN_DISPATCH_MAP(Sekce01b, CDialog)
    END_DISPATCH_MAP()
    
    // Note: we add support for IID_ISekce01b to support typesafe binding
    //  from VBA.  This IID must match the GUID that is attached to the 
    //  dispinterface in the .IDL file.
    
    // {CC0DC276-F26A-4171-ABB4-541CE5661EBA}
    static const IID IID_ISekce01b =
    { 0xCC0DC276, 0xF26A, 0x4171, { 0xAB, 0xB4, 0x54, 0x1C, 0xE5, 0x66, 0x1E, 0xBA } };
    
    BEGIN_INTERFACE_MAP(Sekce01b, CDialog)
    	INTERFACE_PART(Sekce01b, IID_ISekce01b, Dispatch)
    END_INTERFACE_MAP()
    
    
    // Sekce01b message handlers
    
    
    void Sekce01b::OnBnClickedMfcbutton1()
    {
    	
    	// TODO: Add your control notification handler code here
    }

    Hledal jsem ještě přímo zde na fóru, ale uvedené "file.Open()" mi nefunguje. Mohl byste mi tedy poradit, jak by měla tato část kódu vypadat?

    Děkuji



    • Upravený AmarLite 13. května 2012 7:11 Překlep
    12. května 2012 20:50
  • Dobrý den,

    psát kod se mi nechce, ale buď zavoláš (System.Diagnostic.Process) AcrobatReader a jako parametr mu dáš ten PDF soubor nebo otevřeš PDF soubor v IE (jak ti radí ty odkazy).

    file.Open na to fungovat nemůže. Musel by jsi použít nějaké knihovny přímo zobrazující PDF (například placený http://www.pdftron.com/pdfnet/features.html).


    JCH
    13. května 2012 7:55