VC++ V6.0 MFC Win98環境でのリストボックスにロングファイル名を表示する方法

このQ&Aのポイント
  • VC++ V6.0 MFC Win98環境下でリストボックスにファイルリストを作成する方法を教えてください。
  • 作成したリストボックスでファイルを表示する際、Win98環境では8.3フォーマットのファイル名しか表示されません。
  • どのようにすればWin98環境でもロングファイル名を表示することができますか?
回答を見る
  • ベストアンサー

VC++ V6.0 MFC Win98環境にて

VC++ V6.0 MFC Win98環境にて VC++ V6.0 MFC Win98環境にて リストボックスにファイルリストを作ろうとしています。 リストボックスに m_file を割り当て、以下のようにしました。 m_file.ResetContent(); m_file.Dir( DDL_READWRITE | DDL_READONLY, "C:\\*.*" ); m_file.SetCurSel( 0 ); これでリストさせると8.3ファイル名表示となってしまいます。 どうしたらWin98環境でロングファイル名で表示させることができますか? FindFile で自分探し AddString するとか・・・!? ちなみにWin2000ではOKでした。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

windowsAPIですがGetLongPathName()で出来ると思いますが。 http://msdn.microsoft.com/ja-jp/library/cc429335.aspx

peanus15
質問者

お礼

ありがとう。 ファイル名だけならこちらの方が簡単ですね。 ディレクトリ名はこのAPIを使うとメチャメチャに変換されてしまいます。 "[PathName]" って取得されるからでしょうね でも、GetLongPathName()ってあるのに、パスはダメでファイル名がOKなんて・・・

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

>FindFile で自分探し AddString するとか・・・!? これ(↓)見ると、そうなんでしょうねぇ。 http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200112/01120126.txt

peanus15
質問者

お礼

ありがとうございます。 ファイルについてだけ書きましたが、ディレクトリも同じでした。 示していただいた方法でロングファイル名にするのは良いのですが、親ディレクトリの項目(..)は自分で 処理してあげないと無効でした。 m_path.Dir( DDL_DIRECTORY, "*." ); なら、親ディレクトリへのデータとして扱ってくれるのですけどね。 疲れました。

関連するQ&A

  • VC++ MFC

    MFCの初心者です。 MFC環境は2003.NETです。 現在はメインダイアログからサブダイアログを呼び出すコードを編集しています。メインダイアログから2回以降サブダイアログを呼び出す際にその前のダイアログのチェックボックスやリストボックスの情報を記憶させておきたいのですが、なにかいい方法があれば是非ご教授お願いいたします。

  • コンボボックスのボタンを押しても、アイテムリストが開きません。

    コンボボックスのボタンを押しても、アイテムリストが開きません。 h_ComboBox = CreateWindowEx(0, TEXT("COMBOBOX"), TEXT(""),WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST,16, 90, 500, 24,hWnd, (HMENU)IDC_COMBOBOX, h_Inst, NULL); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験1"); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験2"); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験3"); SendMessage(h_ComboBox, CB_SETCURSEL, 0, 0); このようなボックスを数個作っていますが、最初の3個のボックスはリストが開くのですが後が開きません。 解決策を教えてください。

  • コンボボックスにリストを表示させるには?

    VC++6.0でコンボボックスにリストを表示させようと思っているのですが プロパティのところのデータに追加しても表示されません ほかに設定するところはあるのでしょうか? もちろんコンボボックスは生きています。 他のhpをみて CComboBox* p = (CComboBox*)GetDlgItem(IDC_COMBO1); p->ResetContent(); p->AddString("項目2"); p->AddString("項目1"); p->AddString("項目4"); p->AddString("項目3"); も試してみたのですがうまくいきません。 よろしくお願いいたします。

  • MFCのリストボックスについて

    MFCをVC6.0で作成しています。現在、ダイアログボックスを作成しているのですが、ダイアログボックスの中のリストボックスについて、教えてください。 void CFileReadeDlg::GetIndex() { UpdateData(TRUE); m_nCount = m_xcList.GetCurSel(); if(m_nCount==LB_ERR) { AfxMessageBox("選択してください"); } } の関数で、リストボックス内に存在するカーソルの位置を割り出したいのですが、 この関数は、 void CFileReadeDlg::OnSelchangeDatatable() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください GetIndex(); } のようにリストボックスの中のセルを変更した際に稼動する関数内で呼び出しています。 ですが、実際、このm_nCountには、0しか入りません。 これは、単にOnSelchangeDatatable()の関数を何処かの関数内にも呼び出していないからでしょうか。 そもそも、呼び出す必要はないかと思っていたのですが。 又、VCのヘルプに『単一選択リスト ボックスで、現在選択されている項目があれば、その項目の 0 から始まるインデックスを取得します』 とありましたが、0から始まるインデックスとは、どういうことを意味しているのでしょうか。 よろしくお願いします。

  • VC++6.0とWindows2003Serverについて

    既出でしたらすみません。 OS:WinXP、VC++6.0(SP6)で開発したWinアプリがあります。 上記、WinアプリをVS又はVCをインストールせずに OS:Win2003Server上で動かしたいのですが、 mfc42.dll、msvcrt.dll以外に必要なファイルはありますか? また、上記以外に足りないファイルや設定等あれば教えて下さい。 (MFCが正常に動作しない箇所があり、困っています。) ご存知の方、宜しくお願いします。

  • コンボボックスの使い方について

    環境はWIN98 VC++6.0 MFCです。 コンボボックスを初めて使うのですが、コンボボックスに何かを記入し、コマンドボタンを押すとコンボボックスのプルダウンのリストの中に追加されるようにするにはどうすれば良いですか? 具体的なコードなり参考サイトを教えてください。

  • MFCでグリッド

    MFCでグリッド 現在、MFCでGUIプログラムを行っています。 MFCではデフォルトでグリッドコントロールがありません。 そこで質問なのですが、以下の条件を満たすようなグリッドコントロールをMFCで実装する 場合、皆さんはどうしていますか? ・セルの入力をコンボボックスにしたり、入力制限を設けたりしたい。(SpreadSheetのように) ・ActiveXコントロールは使いたくない(配布時、レジストリをいじりたくない) やはり、リストなどの基本的なクラスを派生させて自分でコツコツ作るしかないですか? 詳しい方がいましたら教えて下さい。 環境:WindowsXP SP3 言語:VC++6.0 MFC

  • MFC コンボボックスを複数扱う

    環境:VC++2008 MFC 同じリストの内容を持つコンボボックスを16個作りたい。(IDC_COMBO1~16) 16個のDDX変数を用意し、16回値を格納するのは綺麗じゃないので1個のDDX変数でなんとかしたいです。 ソースは以下の物で練習しています。 http://www.g-ishihara.com/mfc_cb_01.htm どのようにすれば簡潔にかけるでしょうか?

  • VC++にてファイル入出力サンプルアプリの作り方

    はじめまして。 VC++2005にてMFCを使用してサンプルアプリを作ることになりました。 あるフォルダを選択して、その配下のファイルをリストで出力。そのうち選択したファイル(txt)を読み込んで、その内容を出力させる。 という機能です。 ポイントは (1)入力したフォルダパス配下のファイルをリストボックスに列挙する。 (2)リストボックスで選択したファイルの内容をエディットボックスに表示する。 ┌――――――――――――――――――――――――┐ └――――――――――――――――――――――――┘ |┌―――┐┌―――┐ ||パ ス ||ボタン | |└―――┘└―――┘ |┌―――――――――┐ ||リストボックスリストボ | ||ックスリストボックスリ |┌―――┐ ||ストボックスリストボッ ||ボタン | |└―――――――――┘└―――┘ |┌――――――――――――――――――┐ ||エディットボックスエディットボックスエディット| ||エディットボックスエディットボックスエディット| |└――――――――――――――――――┘ └――――――――――――――――――――――――┘ その部分のコードだけは近いのが載ってたりもしたのですが、 まだMFCの操作自体もろくにできない状態なので、 どなたか操作も含めた説明の載ったサイト紹介や、直接この場でご教授頂ければ助かります。 前は操作を含めた説明まで載った親切なサイトがあったのに、いつの間にかなくなってしまって。。。

  • VC++ MFC CListCtrlで、ボタンのあるリストの作り方

    環境はVisualStudio .NET2003です。 VC++ MFCにて、動画の一覧をリストで表示するようなものを作りたいと 考えています。 リスト上部に「ファイル名」「ファイルサイズ」「再生回数」などの 項目名が横方向に並び、その下の各行(表示されるデータ)には、 左端にサムネイル、続いて実際のファイル名、ファイルサイズ、 再生回数などが表示される、といった具合です。 CListCtrlを使うことで、ファイル名などの各項目、サムネイルの 表示などはできるようなのですが、各行にそれぞれ「ボタン」を 設置することはできないでしょうか? 「再生」「削除」などのボタンを設置し、各行のデータに対する 映像再生、ファイル削除の処理を割り当てたいと考えています。 「各行にわざわざ設置しなくても、リストとは別にボタンを用意し、 リスト内の各行を選択してからボタンを押すようにすればよい」という 考え方もあるかと思いますが、できるだけ操作のステップ数を 減らそうと思い、このような仕様を考えました。 もしCListCtrlで各行にボタンを設置する方法をご存知の方が いらっしゃいましたら、具体的な方法または参考ページを 教えていただけないでしょうか。 よろしくお願い致します。