特殊フォルダの取得

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
三毛CAT

特殊フォルダの取得

#1 投稿記事 by 三毛CAT »

デスクトップやマイドキュメントなどの、特殊フォルダのパスを取得する方法はありますか?
マイドキュメントに自動保存などの機能を付けたいのでできたら教えてください。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Re: 特殊フォルダの取得

#2 投稿記事 by M.S. »

> デスクトップやマイドキュメントなどの、特殊フォルダのパスを取得する方法はありますか?
> マイドキュメントに自動保存などの機能を付けたいのでできたら教えてください。

ほとんどコピペですが…

SHGetSpecialFolderPath() というのを使います。
他の定数は参考の二つ目のサイトに載ってますので、
知りたい場合はそちらをご覧ください。

参考:
SPIRIT さんの WinTips
WinAPI Database for VB Programmer
最後に編集したユーザー M.S. [ 2008年8月11日(月) 15:54 ], 累計 1 回
三毛CAT

お礼

#3 投稿記事 by 三毛CAT »

ありがとうございます!!!
でも、
ダイアログボックスを取得させるウィンドウハンドル
とは何ですか?
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Re: お礼

#4 投稿記事 by M.S. »

> ありがとうございます!!!
> でも、
ダイアログボックスを取得させるウィンドウハンドル
とは何ですか?

スイマセン、間違いです
「取得」ではなく、「所有」です
三毛CAT

すいません

#5 投稿記事 by 三毛CAT »

それで、その、
「ダイアログボックスを所有させるウィンドウハンドル」
とは、何のことで、何を指定したらいいのですか??
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#6 投稿記事 by konisi »

ダイアログボックスより上に来るのがまずいウインドウのハンドル という感覚で指定してます。間違ってるかもしれませんが・・・

「使い方」にあるように、GetDesktopWindow()でもいいと思いますし、
プロジェクトならhMainWnd等でいいと思います。

でもこの「使い方」のString型の使用方法はAB3時代の物のように思えます・・・
このまま流用する時は引数bufをStrPtrでくくるか、
自信があるようならString型を使わずに*Byte型やByte型配列を用いるほうがいいと思います。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#7 投稿記事 by イグトランス »

GetDesktopWindowはだめです,絶対。hMainWndなど渡すものがなければNULLです。

この引数のウィンドウハンドルを使うときというのは,つまり親にしてダイアログを表示するときです。そのダイアログが表示されている間,親のウィンドウは無効化(操作できないように)されます(例えばProjectEditorでオプションや名前を付けて保存を表示している間,ファイルの編集ができないのもこのためです)。

もし,GetDesktopWindow()を渡してダイアログを表示しようとすると,デスクトップが操作できなくなる,つまり表示されているすべてのウィンドウが操作できなくなるという結論が導き出されてしまうのです。

現実には,誤ってGetDesktopWindow()を渡すプログラムが多かったため,GetDesktopWindow()が渡されたらNULLが渡されたかのように振る舞うようになっているのでそういうことにはなりませんが,だからと言ってGetDesktopWindow()を渡すことが正当化されるわけではありません。

参考: The Old New Thing : What's so special about the desktop window?
SPIRIT
記事: 9
登録日時: 2005年5月31日(火) 22:59
お住まい: 兵庫県神戸市
連絡する:

#8 投稿記事 by SPIRIT »

自分で書いておいてなんですが、イグトランス様のおっしゃるとおり、GetDesktopWindow() はいけません(^^;)

今回質問されている関数に関わらず、DialogBox 関数なども、親ウィンドウが無い場合は NULL を指定するほうが良いです。

今からしてみれば全く分かっていない頃に書いたもので、しかも内容が古くて申し訳ありません(_ _)

ちなみに「The Old New Thing」は翻訳されて本にもなっているので、手にとってみるのもいいかと思います。
今回のことに限らず、非常に役に立つことがたくさん書いてありました。おススメです!
返信する