none
アプリの起動を指定する拡張子  RRS feed

  • 質問

  • お世話になっています。Windows Xp、VC++6.0 MFC使用環境

     

    //  現行 メニュー FileでOpen File .texのダイアログが出て、Openして アプリの描画のデータを取り込みます。

    //  現行 メニュー FileでSave File .texのダイアログが出て、saveして アプリの描画のデータを保存します。

     

    それを

    // 未完 1:データの保存する場合 ファイルの拡張子を 現行.txtから.ngtに変更する。 

    // 未完 2:アイコンを専用にする。 3:そのアイコンをクリックすると、アプリケーションソフトDesignerを起動し、かつアイコンのファイルを取り込

    としたいのですが、どのようなコードがひつようでしょうか?


    static char BASED_CODE szFilter[] = "Text Files(*.txt), use (PrintImage) for printing Image|*.txt|";

    void CChildView::OnOpenKomaFile() // open Kolam KomaFile and EdgeChain data file in TXT format
    { // TODO: Add your command handler code here

    int clGR, clGG, clGB, clTR, clTG, clTB, clAR, clAG, clAB, clFR, clFG, clFB; //colordata
    int colordata = 0;
    // ここにWindowで選択するようにする
    CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, szFilter, this /*AfxGetMainWnd()*/);

    // if (fileDlg.DoModal() == IDOK) // コメントアウト
    if (HookFileDialogDoModal(&fileDlg) == IDOK)// 日本語->英語置換ファイルダイアログ
    {

      char fname[30], buf[201], dats[9]; // 200 < 4 char x 50 KoMa in a line
    int size, xno, yno; //, dat; long pntpos;
    int kna = 0; int io = 0; int fudex = 0;
    for( int ii = 0; ii < 1850; ii++)  m_koM[ii] = short int( 0x8000); //-1 & ~0xFF;
    //memset(m_koM, -1 & ~0xFF, sizeof(m_koM) );
    CStdioFile ftxt; // for read a text file 
    CString cStrng;
    m_strPathFileName = fileDlg.GetPathName();//ディレクトリ、ファイル名を含めフルパス名

    // m_strFileName = fileDlg.GetFileName(); //GetFileNameは、拡張子付きのファイル名を返します。
    // m_strFileName.Left( m_strFileName.Find('.'); //m_paramDlg.m_ImageFileName = m_strFileName;
    // m_paramDlg.m_ImageFileName = 
    m_strFileTitle = fileDlg.GetFileTitle(); //GetFileTitle は、拡張子を除いたファイル名を返します。

    //FILE *pf = fopen(fileDlg.GetPathName(),"r"); 
    //if( !pf ) printf( "Sorry but the file %s could not be opened !\n", fileDlg.GetPathName() );
    ftxt.Open( m_strPathFileName, CFile::modeRead | CFile::typeText );
     

     


    void CChildView::OnSaveKomaFile()

    CreateDirectory("KolamImages", NULL);//2009/11/7 Holder"KolamImages" が既存でないときは作成

    //ここにWindowで選択するようにする //CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, szFilter, this);

    CFileDialog fileDlg( FALSE, "txt", fnmdat, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, szFilter, this /*AfxGetMainWnd()*/ );


     

     

    2010年4月13日 6:36

回答

  • // 未完 1:データの保存する場合 ファイルの拡張子を 現行.txtから.ngtに変更する。 

    現行のソースで txt という文字列はいくつも出てきているわけですから、関連しそうなメソッド、クラスについてヘルプを調べてみてはいかがでしょうか。

    ただ単に聞くよりも調べましょう。調べてわからないのであればどこまでわかったのか述べましょう。

    // 未完 2:アイコンを専用にする。 3:そのアイコンをクリックすると、アプリケーションソフトDesignerを起動し、かつアイコンのファイルを取り込

    アプリケーションソフトとか、Designer とか何の関連があるのかまったくわかりません。

    一般的に、特定の拡張子とアプリケーションを結びつけることは、関連づけと呼ばれています。
    これはインストーラーの仕事と言えると思います。

    Visual C++ 6.0 時代の MFC ではアプリケーション起動時に登録する仕組みがありますが、これは UAC が有効となっている Windows や、管理者権限のないユーザーでは効果がありません。(管理者権限で実行すれば効果は出ると思いますが、推奨しません)
    限定された環境でなければ、インストーラーで対応してください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 菊地俊介 2010年4月23日 4:26
    2010年4月13日 15:08
    モデレータ