[ad_1]
私はisfを使用します(タイプ: IShellFolder*
ShlObjDl_Core.h で定義) を使用する ParseDisplayName
これは IShellFolder の非静的メンバーであるため、特定のオブジェクトに関連している必要があります。
しかし、そのコードを使用すると:
IShellFolder* isf; LPITEMIDLIST lprnt = { 0 }; ULONG lngth; isf->ParseDisplayName(hWnd, NULL, (LPWSTR)"C:", &lngth, &lprnt, NULL);
私は得る:
スローされた例外: 読み取りアクセス違反。 isf は nullptr でした。
私が間違っていることは何ですか?
私が試したこと:
私はもう試した:
1- IShellFolder* に * を追加して IShellFolder** にしましたが、うまくいきませんでした。
そして、この質問は前の質問 (引数の 1 つで渡された構造体を取得する関数に関するもの) とは異なりますが、関数の変数からの参照に関するものです。
解決策 1
での以前の質問に似ています 「例外がスローされました: 書き込みアクセス違反です。Lpsh は nullptr でした」というエラーが常に表示されます。[^]. ただし、この場合、ポインターを作成しますが、何かを指すように初期化していません。 ポインターと参照を理解していない場合は、C リファレンスに戻ってガイダンスを参照してください。
使用例については、 IShellFolder
インターフェイス 参照 フォルダーの内容に関する情報の取得 – Win32 アプリ | マイクロソフト ラーン[^].
[edit]
また、次の呼び出しでは正しくありません ParseDisplayName
;
(LPWSTR)"C:"
キャストを使用して変換することはできません ASCII
文字列に Unicode
. を生成する必要があります。 Unicode
を使用してコンパイル時に文字を L
したがって、次のように文字列にプレフィックスを付けます。
L"C:"
[/edit]
[ad_2]
コメント