フォルダ参照ダイアログの検索開始点 – プログラミング – Home

フォルダ参照ダイアログの検索開始点
 
通知
すべてクリア

[解決済] フォルダ参照ダイアログの検索開始点


mua
 mua
(@mua)
ゲスト
結合: 22年前
投稿: 26
Topic starter  

フォルダ参照ダイアログの検索開始点の設定の仕方ですが、
以下の記述の位置に、検索開始点を入力すればいいのですが、
相対パスを入力するとエラーが出てしまいます。

bi.pidlRoot =NULL; //検索開始点(nullならdesktop)

NULLの位置に./などのパスを入力すると、次のようなエラーがでました。
エラー:'char [3]' から 'const struct _ITEMIDLIST *'に変換することはできません。

どうすれば、ルートフォルダを検索開始点にできるのでしょうか。


引用未解決
トピックタグ
mua
 mua
(@mua)
ゲスト
結合: 22年前
投稿: 26
Topic starter  

Win2000 VC6.0SP2 MFC
<対象:VC++ラウンジ>

開発環境を書き忘れてしまいました。
大変申し訳ございませんでした。
次回から気をつけます。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

わからなかったらとりあえず
Google等で
「SHBrowseForFolder」「使い方」
を検索しましょう。


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

>どうすれば、ルートフォルダを検索開始点にできるのでしょうか。
下記のようなコードを試してみて下さい。(bi.pidlRootを使わない方法です)

int CALLBACK f( HWND hWnd, UINT iMsg, LPARAM, LPARAM lpData )
{
if( iMsg == BFFM_INITIALIZED && lpData != NULL ){
SendMessage( hWnd, BFFM_SETSELECTION, TRUE, lpData );
}
return 0;
}

bi.lParam = (LPARAM)初期フォルダパス名文字列へのポインタ
bi.lpfn = f;

※ bi.pidlRootは直接「初期フォルダパス名文字列へのポインタ」
を設定する物ではないです。


返信引用
mua
 mua
(@mua)
ゲスト
結合: 22年前
投稿: 26
Topic starter  

> 下記のようなコードを試してみて下さい。(bi.pidlRootを使わない方法です)
確かめてみましたが、以下の2つのエラーが表示されます。

error C2440: '=' : 'int (__stdcall loView::*)(struct HWND__ *,unsigned
int,long,long)' から 'int (__stdcall *)(struct HWND__ *,unsigne
d int,long,long)' に変換することはできません。

error C2440: '=' : 'char [3]' から 'long' に変換することはできません。(新しい動
作 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。

bi.lpfn =f;
bi.lParam =(./);
のように記述しましたが、記述ミスでしょうか。


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

>記述ミスでしょうか。
そうです。

>error C2440: '=' : 'int (__stdcall loView::*) ...
fを通常の関数にして下さい。loViewのメンバ関数ではありません。

>error C2440: '=' : 'char [3]' から 'long' ...
(LPARAM)でキャストして下さい。

追伸:
上記は最低限自力で解決すべき事です。
まず C++文法とWinコーディングの基礎を固めて下さい。
「九九を覚えていないのに円の面積を求める」のは無理があります。
面倒かもしれませんが頑張って下さい。


返信引用
mua
 mua
(@mua)
ゲスト
結合: 22年前
投稿: 26
Topic starter  

> 面倒かもしれませんが頑張って下さい。
まったくその通りです。
少しやってみて、できなかったらすぐに人に頼ってしまうのはよくありませんね。

fを通常の関数にしたら無事にできました。
しかし、フォルダは開きますが、そのフォルダが選択された状態ではありません。
どうしたら、フォルダ選択ダイアログが開くと同時に選択された状態にできるのでしょうか。

もしよかったら、f関数が何をしているのか教えていただきたいです。


返信引用
mua
 mua
(@mua)
ゲスト
結合: 22年前
投稿: 26
Topic starter  

> しかし、フォルダは開きますが、そのフォルダが選択された状態ではありません。
パスにファイル名が入っていたために選択されませんでした。
実行ファイル名を取り除いたら無事に選択されました。
コールバック関数の使い方が少しわかったような気がします。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました