■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build21
251 名前:デフォルトの名無しさん :04/07/28 23:07
TLS使われるのが嫌とか?

252 名前:デフォルトの名無しさん :04/07/28 23:24
errno なんか使わないし、なんとか一つ API だけで許してもらえまいか、
というようなことでは。

253 名前:デフォルトの名無しさん :04/07/28 23:28
msvcrt.lib や libcmt.lib をリンクせずに
全て自前でやってるなら許す。


254 名前:デフォルトの名無しさん :04/07/28 23:30
やった。そのときはCreateThread使った。

255 名前:デフォルトの名無しさん :04/07/28 23:49
作成したワーカスレッドでは CoTaskMemAlloc で頑張るので、許しては貰えまいか。

256 名前:デフォルトの名無しさん :04/07/29 00:36
ランタイムライブラリ使わないのが俺のポリシー。
システムコール直叩き最高。

257 名前:デフォルトの名無しさん :04/07/29 00:44
APIをランタイムライブラリだと勘違いしてる馬鹿がいるスレはここですか?

258 名前:デフォルトの名無しさん :04/07/29 00:44
ランタイムライブラリを呼び出すインターフェイスと考えて差し支えなかろう

259 名前:デフォルトの名無しさん :04/07/29 00:45
CreateThread()は、マルチスレド用ライブラリとシングルスレド用ライブラリの両方に入ってますか?


260 名前:デフォルトの名無しさん :04/07/29 00:53
>>259
どちらにも入っていません。

261 名前:デフォルトの名無しさん :04/07/29 02:29
なんかどうでもいい話になっているな

262 名前:デフォルトの名無しさん :04/07/29 02:49
あたぼうよ

263 名前:デフォルトの名無しさん :04/07/29 07:23
CreateDesktopとは何の為にあるんでしょうか?
どのように使うのか教えてください

264 名前:デフォルトの名無しさん :04/07/29 08:17
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_CreateDesktop.asp
http://www.google.com/search?num=50&lr=lang_ja&q=CreateDesktop

265 名前:デフォルトの名無しさん :04/07/29 08:37
>>264
両方見ましたが
どういう風に使うのか書いてる物を探すのが困難なので訊きました。
一つの関数内でささっと終わらせるサンプルばかりで
関数をまたがって処理するサンプルがありません。
なので、どういう風な事をどういう風にするかサンプルだけでもください

266 名前:デフォルトの名無しさん :04/07/29 08:42
おい、お前。死ねよ

267 名前:デフォルトの名無しさん :04/07/29 10:15
Shell32.dll内の-31751番目の文字列らしき物を取得しようと思い
 hModule = LoadLibrary("C:\\Windows\\system32\\Shell32.dll");
とやり
 LoadString (hModule, -31751, Buffer, 64);
とやったのですが
何も返ってきません

このShell32.dllの-31751番目はどうやって得たかと云うと
レジストリをinfotextと検索して(既定)がマイ コンピュータのinfotextに入ってる数字です。
どうしたらこの文字列らしきものを取得できますか?

268 名前:デフォルトの名無しさん :04/07/29 11:13
>>267
hModuleはちゃんと有効な値を示しているのか?
っていうかロードタイムリンクしてあるからNULLが帰ってるんじゃないのか?

269 名前:デフォルトの名無しさん :04/07/29 11:51
>>267
NT系だとdllのパスが違うが大丈夫か?
LoadLibrary, LoadStringの戻り値確認はしたんだろうな?

270 名前:デフォルトの名無しさん :04/07/29 12:02
>>268-269
LoadLibraryはhModuleに格納してるので
if (NULL == hModule)〜と確認してましたが
LoadStringは確認してませんでした。

今やってみたら、LoadStringの戻り値もNULLでした

271 名前:デフォルトの名無しさん :04/07/29 12:15
>>270
Shell32.dll 開いてみたけど、そんな ID の文字列無いよ・・・?

272 名前:デフォルトの名無しさん :04/07/29 12:19
>>271
文字列じゃないみたいですね…
レジストリの名前がinfotextだったから文字列かと思ったんですが違うようですね。
失礼しました

273 名前:デフォルトの名無しさん :04/07/29 12:22
つうか、
> このShell32.dllの-31751番目はどうやって得たかと云うと
> レジストリをinfotextと検索して(既定)がマイ コンピュータのinfotextに入ってる数字です。
> どうしたらこの文字列らしきものを取得できますか?
ここの意味がまったくわからん。
LoadString以前の問題じゃないのか?


274 名前:デフォルトの名無しさん :04/07/29 19:03
CreateDialogで4つ目の引数にはダイアログボックスプロシージャへのポインタですよね?
LRESULT CALLBACK DlgProc(HWND , UINT , WPARAM , LPARAM );
こう宣言してるものだと、
CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc);
こういう感じで呼び出せばよいのですよね?

error C2664: 'CreateDialogParamA' : 4 番目の引数を 'long (struct HWND__ *,unsigned int,unsigned int,long)' から
'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照)
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。

と、エラーが出てしまいます。どうすればよいのですか?

275 名前:デフォルトの名無しさん :04/07/29 19:18
ダイアログの場合は
LRESULTでなくてBOOLです。

宣言の部分を
LRESULT CALLBACK DlgProc(HWND , UINT , WPARAM , LPARAM );

BOOL CALLBACK DlgProc(HWND , UINT , WPARAM , LPARAM );
と直してみてください

276 名前:デフォルトの名無しさん :04/07/29 19:22
自己解決しました

277 名前:デフォルトの名無しさん :04/07/29 19:33
>>275
だめでした。
というか、サンプル落としてきて、それはコンパイルできるのに、
それ真似て一から作るとエラーがでるんです。
落としてきたサンプルはwin工作部屋のダイアログベースアプリのとこです。

278 名前:デフォルトの名無しさん :04/07/29 19:37
>>277
プロトタイプの方を実際に関数の方の両方の宣言を変更してみた?

279 名前:デフォルトの名無しさん :04/07/29 20:30
もしやと思って、拡張子cppだったのをcにしたら動きました。
というか、これじゃ解決になってないですよね…。

280 名前:デフォルトの名無しさん :04/07/29 20:33
なってる。

281 名前:デフォルトの名無しさん :04/07/29 20:39
書き込んで気づいたんですが、型変換ですね。
探したら(DLGPROC)というのがありました。

282 名前:デフォルトの名無しさん :04/07/29 22:28
Windowsの電源を切るにはどうしたらいいですか?
普通にやるとPCの電源まで切れてしまいます。


283 名前:デフォルトの名無しさん :04/07/29 22:31
ログオフってこと?

284 名前:デフォルトの名無しさん :04/07/29 22:32
原理の分かってない奴はゴタク並べてないで素直に(DLGPROC)使えっての。
議論・討論したきゃ↓へ行け。いくらでも相手してやる。
http://pc5.2ch.net/test/read.cgi/tech/1049790146/

285 名前:デフォルトの名無しさん :04/07/29 22:32
まずはWindowsに電源サブシステムを実装しろ

286 名前:デフォルトの名無しさん :04/07/29 22:48
>>282
Windowsの電源OFF と PCの電源OFF
何がどう違のか、どうしたいのかを述べてくれ。

287 名前:デフォルトの名無しさん :04/07/29 22:52
>PCの電源を切らずにWindowsの電源を切る
while(true{
 GetDC((HWND)1);
}

288 名前:デフォルトの名無しさん :04/07/29 23:02
Windows 3.1までのDOSだけ状態へ戻るとかを想像した。

289 名前:デフォルトの名無しさん :04/07/29 23:17
>>282
SetSystemPowerState

290 名前:デフォルトの名無しさん :04/07/30 00:21
>>288
解読キボン

291 名前:デフォルトの名無しさん :04/07/30 00:22
昔はWindowsを終了してDOSに降りるコマンドがあったんだよ

292 名前:デフォルトの名無しさん :04/07/30 00:43
A:\>win

293 名前:デフォルトの名無しさん :04/07/30 02:17
ウインドウを作成した後でオーナーを変更する事は出来ますか?

294 名前:デフォルトの名無しさん :04/07/30 02:47
ふぁっきゅー

295 名前:デフォルトの名無しさん :04/07/30 02:52
>>293
SetWindowLong(GWL_HWNDPARENT)で一応できることはできるが
MSDNにはするなと書かれているのでどうなっても知らん

296 名前:デフォルトの名無しさん :04/07/30 02:52
SetConsoleCtrlHandler関数で設定したシグナルハンドラがCTRL_C_EVENTを受信する場合と、
signal関数で設定したシグナルハンドラがSIGINTを受信するのは
同じ意味でしょうか?両方設定した場合はどちらが有効でしょうか?

297 名前:デフォルトの名無しさん :04/07/30 02:56
>>295
Zオーダーとかがめちゃくちゃになるらしい

298 名前:デフォルトの名無しさん :04/07/30 07:01
>>295
ぬー,微妙ですね.
変更は初めの一度だけなんで作り直す事にします.

299 名前:デフォルトの名無しさん :04/07/30 07:47
>>293
SetParent

300 名前:デフォルトの名無しさん :04/07/30 10:58
画像編集ツールを作っているのですが、
どうもグリッドライン表示するのにてこずってます。(デバイスコンテキストがいまいち理解出来てない)
HDCを二つ取得するんだろうけれど、実際にどういう流れになるかがよく分かりません。
それと、背景となる画像についてはデバイスコンテキストハンドルを開いてる間はずっと開放しないのでしょうか。
概略でもいいので、助言していただけると助かります。。

301 名前:デフォルトの名無しさん :04/07/30 11:02
勉強しろとしか言いようが無い。

302 名前:デフォルトの名無しさん :04/07/30 11:38
>>300
301のとおり。「猫でも分かる」サイトでも見て自分でやれ。
それだけでもあんまりなのでひとつだけ言っておくと、DCは画面描画を行うときに一時的に借りてくるものだから
使い終わったらすぐ返すのが基本。


303 名前:300 :04/07/30 12:03
分かりました。。
一応これでも猫でも〜や他のSDK系のサイトを見てやってみたんですが。。
もう何度か読み直してみます。失礼しました。

304 名前:デフォルトの名無しさん :04/07/30 12:17
>>303
まあがんがれ。ほとんどはDC取得->コンパチDC取得->描画->選択->Bitbltって感じだろ。


305 名前:デフォルトの名無しさん :04/07/30 12:18
お前は猫未満だ

306 名前:デフォルトの名無しさん :04/07/30 14:22
PathFindExtensionを使うとリンカエラーになるのですが
なにをリンクすればいいですか?

307 名前:デフォルトの名無しさん :04/07/30 14:23
お前の脳

308 名前:デフォルトの名無しさん :04/07/30 14:26
shlwapi.lib

とお前の脳

309 名前:デフォルトの名無しさん :04/07/30 14:37
お前の悩

310 名前:デフォルトの名無しさん :04/07/30 15:02
C++でクラスを作りたいんですけど
クラスを作るごとにクラスごとにクラスの中の変数の値を違うものにしたいのです
俺がやりたいのは、クラスのインスタンスを作るときに、引数にキーの引数を入れると、
クラスの中のRegisterHotKeyの第二引数のIDをクラスごとに自動で別々のものに割り振るには
どうやりるのがプロのやりかたですか、教えてください

311 名前:デフォルトの名無しさん :04/07/30 15:11
>>310
実にプロっぽくないコードだけど、コレで十分な場合っぽいのでこうする。
ついでに map にいれとく。
class hoge {
 static int _CookieBase;
 static std::map<int, hoge*> _Instances;
 int _Cookie;
 hoge() { _Cookie; = _CookieBase;++; _Instances[_Cookie] = this; };
 ~hoge() { _Instances.erase(_Cookie); };
};

32bit 環境だけで動けばいいとするなら、(int) this を ID にしてもいいし。

312 名前:311 :04/07/30 15:12
>>32bit 環境だけで動けばいいとするなら、(int) this を ID にしてもいいし。
あ、RegisterHotKeyの場合使っていい範囲が限定されてるからこれはダメか。

313 名前:デフォルトの名無しさん :04/07/30 15:14
>>307-309
知らないならレスするなよ厨房はゲームでもしてろ

314 名前:デフォルトの名無しさん :04/07/30 15:25
>>312
thisをIDにするのはいい考えなのでそうさせてもらいます

315 名前:デフォルトの名無しさん :04/07/30 15:32
>>313
分からないなら、口出すなよ

316 名前:デフォルトの名無しさん :04/07/30 15:40
class hoge {
 static int _CookieBase;
 static std::map<int, hoge*> _Instances;
 int _Cookie;
 hoge() { _Cookie; = _CookieBase;++; _Instances[_Cookie] = this; };
 ~hoge() { _Instances.erase(_Cookie); };
};
意味が分からないので僕にもわかるようにコメント付けてください

317 名前:デフォルトの名無しさん :04/07/30 15:51
当方、WindowsXPです。
外字エディタを使うことなく、外字ファイル(EUDC.TTE)に外字登録
したいのですが、方法がわかりません。

外字データはベクタデータです。
外字データは数が多いので、外字エディタを使っての登録は現実的
ではありません。

なにか、便利なツールとか、プログラミングの方法とか(VC++の開発
環境はあります。)ご存知の方、ご教示ください。




318 名前:デフォルトの名無しさん :04/07/30 15:58
>>316
C++ スレで聞いてみてはどうでしょう?

319 名前:デフォルトの名無しさん :04/07/30 16:42
I am Windows XP.


320 名前:デフォルトの名無しさん :04/07/30 16:44
I have a dream.

321 名前:デフォルトの名無しさん :04/07/30 16:45
GetWindowTextなどのテキストを格納するバッファを受け取る様な関数に
ATL、WTLのCStringや、std::stringを直接引数として渡すのは無理でしょうか

322 名前:デフォルトの名無しさん :04/07/30 16:45
>>320はキング牧師

323 名前:デフォルトの名無しさん :04/07/30 16:58
>>321
CStirngならGetBufferとReleaseBuffer

324 名前:デフォルトの名無しさん :04/07/30 17:06
>>317
>現実的ではありません。

あなたの技術でツールの製作を行う方が現実的ではありません。

>便利なツールとか

板違いです

325 名前:321 :04/07/30 17:16
>>323
無事にできました、必ずReleaseBufferも必要なんですね
レスありがとうございました

326 名前:デフォルトの名無しさん :04/07/30 18:35
VB6で作成したアプリのウィンドウが非アクティブ状態になっても、
キー入力を取得したいと思い、キーボードフックを使うべく
C言語でdllを作成しました。

VB側からこのdllを呼んで、他のアプリがアクティブになっても、
dll内でキー入力を捕まえることはできたのですが、
これをdllからVBアプリの方へ通知する方法がわかりません。

SendMessageなんかも、他のアプリのウィンドウがアクティブになった
状態だと通らないようです。

何か方法をご存知の方、お教えください。

327 名前:デフォルトの名無しさん :04/07/30 21:49
>>299
オーナーと親は違う。SetParentでは親しか変更できない

328 名前:デフォルトの名無しさん :04/07/30 22:23
>>327
どう違うの?
EnumChildWindowsで列挙できないとか?

329 名前:デフォルトの名無しさん :04/07/30 22:27
>>326
SendMessage自体は通ると思うけど。
ダメならCOM経由とかコールバック関数は?

330 名前:デフォルトの名無しさん :04/07/30 22:55
>>326
PostMessage

331 名前:デフォルトの名無しさん :04/07/30 23:03
自分の作ったメッセージループのウインドーがGetAncestor(hwnd, GA_ROOT)で得られるウインドーですか?
デスクトップウインドーだったらヤバいので教えてください

332 名前:デフォルトの名無しさん :04/07/30 23:42
>>328
MSDN嫁

333 名前:デフォルトの名無しさん :04/07/31 01:25
>>332
MSDNのどのカテゴリでしょうか?
あの膨大な量のドキュメントから探し出す事は無理っぽいです

SetParent/SetWindowLong/GetWindow
Window Relationships>Owned Windows

あたりを読んでみましたが、ParentとOwnerの違いはかかれてませんでした

334 名前:デフォルトの名無しさん :04/07/31 01:42
>>333
あるウィンドウに所有されているが、そのウィンドウの子ウィンドウでないウィンドウのこと。


335 名前:デフォルトの名無しさん :04/07/31 02:40
>>333
SetWindowPos で HWND_TOPMOST を指定するとよさげな感じ。

Parent は一つ上の親、Owner は一番上の親。
子→親 と 子→親→親→....→親の違いですね。

336 名前:デフォルトの名無しさん :04/07/31 02:47
違う

337 名前:デフォルトの名無しさん :04/07/31 04:11
>>333
CreateWindowでhwndParentを指定して、WS_CHILDなら子、ちがうならオウンド

338 名前:326 :04/07/31 08:41
>>329-330
ごめんなさい。
SendMessage通りました。
ウィンドウハンドルの正常な値が渡されていなかったようです。
VBのフォームの表示後、すぐにハンドルを渡していたのを、
DoEventsを実行後に渡すようにするとちゃんと動きました。

339 名前:デフォルトの名無しさん :04/07/31 12:56
一般的には、child windowはowned windowでもあるからややこしく思われてるのかな。

340 名前:デフォルトの名無しさん :04/07/31 14:36
>>335
大嘘。

初心者には、書籍「APIで学ぶWindows徹底理解」の、
「ウィンドウについて詳しく学ぼう」の項がお勧め。

341 名前:デフォルトの名無しさん :04/07/31 17:03
BMPを左右反転して表示する関数ありますか?

342 名前:デフォルトの名無しさん :04/07/31 17:25
>>341
ある。それが何かは自分で探せボケ

343 名前:デフォルトの名無しさん :04/07/31 17:31
自力で反転させても大した手間じゃないと思うが

344 名前:デフォルトの名無しさん :04/07/31 17:44
>>341
あるらしいのでガンバレ

>>342
「ある/ない」を答えるだけのスレではないので
それが理解できるおつむを持ってないならこないでください

345 名前:デフォルトの名無しさん :04/07/31 18:03
左右反転ってBitBltに負数を与えることか?
実行できないバージョンもあるんでない?

346 名前:デフォルトの名無しさん :04/07/31 18:10
PlgBltでネーの?

347 名前:デフォルトの名無しさん :04/07/31 18:14
>>333
Child Windowsの説明も読んで自分でdiffを取れ

348 名前:デフォルトの名無しさん :04/07/31 18:25
>>344
(1) "「ある/ない」を答えるだけのスレではない" などとはどこにも書かれていない。
 勝手な妄想で断定するな。
(2) 341が求めているのが実際に関数の有無だけかもしれない。
 たとえば、各種ウインドウシステムのビットマップ関数の機能調査をしているかもしれないのだ。
 何を調べたいのかも述べていない以上それに対する最も適切な回答は有無を答えることだけである。
(3) だいたい、341には必要なことが何も書いていない。

以上。

349 名前:デフォルトの名無しさん :04/07/31 18:28
StretchBlt なら確実。


350 名前:デフォルトの名無しさん :04/07/31 18:57
WindowsXP付属のサウンドレコーダーの起動中に、それが再生中・録音中のどちらか、
外部のアプリケーションからAPIで調べる方法はないですか?
ボタンのEnable状態を調べようかと思ったのですが、再生も録音もボタンの状態が
同じなので、区別できませんでした。

351 名前:デフォルトの名無しさん :04/07/31 19:00
そういうことするアプリ、嫌いです。


352 名前:デフォルトの名無しさん :04/07/31 19:22
>>351
ゴミレス (゚听)イラネ

353 名前:デフォルトの名無しさん :04/07/31 19:23
>>352
ゴミレスに対するゴミレス (゚听)イラネ


354 名前:デフォルトの名無しさん :04/07/31 19:30
>>1-1000
ゴミスレ (゚听)イラネ

355 名前:デフォルトの名無しさん :04/07/31 20:38
URLDownloadToFileでcgiファイルはダウンロードできますか?

356 名前:デフォルトの名無しさん :04/07/31 20:39
うん

357 名前:355 :04/07/31 20:47
では可能と言う回答の元質問いたしますが、
cgiファイル(URLはhttp://192.168.1.200/cgi-bin/test.cgiと設定)をダウンロードしようとすると戻り値0は返されるのですが、
指定したダウンロード先にファイルがありません。何度実行しても同様の症状が出ます。

ちなみにtest.cgiをブラウザ上で開いた場合はちゃんと表示され、HTMLファイルやZIPファイルのダウンロードには成功します。(ファイルもあります)

URLDownloadToFileは以下のように記述しました。
URLDownloadToFile(0, sUrl, sFileName, 0, 0)

358 名前:355 :04/07/31 21:05
微妙な手段ですが自己解決いたしました。

ありがとうございました。

359 名前:デフォルトの名無しさん :04/07/31 21:40
>>355
報告だけじゃなくて、その方法も記載しような。

360 名前:デフォルトの名無しさん :04/07/31 22:01
>>359
教えて君キタワァ━━━━━━(n‘∀‘)η━━━━━━ !!!!!

361 名前:デフォルトの名無しさん :04/07/31 22:02
夏全開だな

362 名前:デフォルトの名無しさん :04/07/31 22:02
>>360が?
まったくだ。

363 名前:デフォルトの名無しさん :04/07/31 22:09
>>361-362

364 名前:355 :04/07/31 23:07
>>359
cgiファイルを格納しているサーバの設定弄ってたらダウンロードできるようになりました。

だから微妙な解決orz

365 名前:デフォルトの名無しさん :04/07/31 23:35
cgiが一般人に読まれたら困るんでないかい



366 名前:デフォルトの名無しさん :04/07/31 23:50
>>365
まさかcgiファイルそのものをダウンロードするなんて思ってないよね?

367 名前:デフォルトの名無しさん :04/08/01 01:43
妙に気になる解決方法だな

368 名前:デフォルトの名無しさん :04/08/01 02:05
このスレはレベルが高そうなので教えてください。
IEの右クリックのメニューに自アプリを登録して
リンク先のURLを渡したいのですがやりかたがわかりません。
とりあえず、レジストリに登録してIEのメニューに.htmを
追加するところはわかったのですが、その.htmから
exeを呼ぶことができません。IriaなどはActiveXDLLを
作って対応しているようなのですが詳しくはわからず困っています。
もしご存知の方がおられましたら教えてください。
よろしくお願いいたします。

369 名前:デフォルトの名無しさん :04/08/01 02:27
>>368
WScript.Shell の Run メソッド

370 名前:デフォルトの名無しさん :04/08/01 02:28
オートメーション。

371 名前:デフォルトの名無しさん :04/08/01 11:54
>>396
そのメソッドは.vbsだと実行できるのですが
IEのメニューから実行するとHTMLとして実行されるらしく
エラーになってしまいます。


372 名前:デフォルトの名無しさん :04/08/01 12:03
>>368
.htm から任意の .exe なんか呼び出せたら危険でしょうがいないと思うが。

373 名前:デフォルトの名無しさん :04/08/01 12:10
>>372
やっぱりそうですよねー。そうだとは思ったんですけど
何かないかなーと。残念です。

374 名前:デフォルトの名無しさん :04/08/01 12:17
自アプリをActiveX Exe対応にしたらええやん。

375 名前:デフォルトの名無しさん :04/08/01 12:23
ActiveXの作れる開発ツールを持ってないんです。。・゚・(ノ∀`)・゚・。

376 名前:デフォルトの名無しさん :04/08/01 12:25
MinGWでも作れるべさ

377 名前:デフォルトの名無しさん :04/08/01 12:26
てか何で開発してるのさ?

378 名前:デフォルトの名無しさん :04/08/01 12:26
hsp

379 名前:デフォルトの名無しさん :04/08/01 12:26
fuck off

380 名前:デフォルトの名無しさん :04/08/01 12:28
Delスレにいる奴だろう

381 名前:デフォルトの名無しさん :04/08/01 12:30
Delスレの奴です。

382 名前:デフォルトの名無しさん :04/08/01 14:03
Delスレの奴でしたか。

383 名前:デフォルトの名無しさん :04/08/01 14:07
はい

384 名前:デフォルトの名無しさん :04/08/01 17:53
CreateCompatibleBitmapしたHBITMAPはDeleteObjectしますが、
(HBITMAP)LoadImageしたHBITMAPはDeleteObjectする必要は無いのでしょうか。

385 名前:デフォルトの名無しさん :04/08/01 18:00
必要だす。古いマニュアルには載ってないんだけど
(おかげでずっと未解放のままだった。ちゃんと書いといてくれよ)
MSDN には DeleteObject しろと書いてある。
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadimage.asp


386 名前:385 :04/08/01 18:04
でもよく読んだら、"不要になったらDeleteObject してもよい"
"プロセス終了時に自動で解放する" か。一応解放はされていたのか。

387 名前:384 :04/08/01 18:10
>>385
(こことか)ttp://www.users.yun.co.jp/~studiowing/win32api/win-04.htm
DeleteObjectを1回はしているけど、
それはSelectObjectで関連付けたものを離す為の物で、
HBITMAPを消す為にもう一度必要なのに、なぜしないのだろうと思っていました。

Win32APIを研究したわけではなく、ネットのいろんな講座を見ただけだったので、
正しいか正しくないかずっと引っかかっていたのですが、
やっとすっきりしました。ありがとうございました。

388 名前:384 :04/08/01 18:13
>>386
リロードしていませんでした。
なるほど、例え消していなくても、危険というわけではないのですね。
でも、HDCと一緒でなんかすっきりしないので
(HDCは遅くなることもあったっけ?)、消していくやり方で行きます。

389 名前:デフォルトの名無しさん :04/08/01 18:31
Windowsのプロセス間通信てどんなものがありますか?
おしえて!

少量の情報をやりとりするだけで、軽いものがあれば
それがいいのですが。

390 名前:デフォルトの名無しさん :04/08/01 18:33
>>389
COM最高!

391 名前:デフォルトの名無しさん :04/08/01 18:37
>>390

COMてなんですか?googleで検索したら・・・・

"COM" は一般すぎる言葉のため、 検索には使用されていません。

(´・ω・`)

392 名前:デフォルトの名無しさん :04/08/01 18:38
Common Object Modelでぐぐろう

393 名前:デフォルトの名無しさん :04/08/01 18:42
PlaySound()とmciSendCommand()で同じWAVEファイルを再生しようとしたんですが、
PlaySound()のほうは普通に再生できたんですけどmciSendCommand()だと
パスがみつからないというメッセージがでます。これはファイルがみつからないってこと
ですよね?前者なら再生できるのに。どういう原因が考えられますか?

394 名前:デフォルトの名無しさん :04/08/01 18:49
>>392
サンクス。Component Object Modelの略だったのは、ギャグだったと
想像します。:−)

395 名前:デフォルトの名無しさん :04/08/01 18:51
あー、すまん。素で書き間違ったよ

396 名前:デフォルトの名無しさん :04/08/01 19:55
COM
socket
WM_COPYDATA
FileMappingObject

あたりだな。
軽いならWM_COPYDATAがよさげ

397 名前:デフォルトの名無しさん :04/08/01 20:02
Pipe,MailSlot,Clipboardもあるでよ

398 名前:デフォルトの名無しさん :04/08/01 20:12
>387
待ってくれ (;´Д`) DeleteObject って、SelectObject の関連付けを
離す事が出来たっけ?

漏れなんか、むしろ SelectObject で明示的に関連付けを離さないと
DeleteObject してもオブジェクトは解放されないつー話を
ずっと信じてるわけだが

399 名前:デフォルトの名無しさん :04/08/01 20:15
別に軽く無いよ。
楽なのはWM_COPYDATAだけど、
FileMappingObjectの方が軽い

400 名前:デフォルトの名無しさん :04/08/01 20:19
TCP/IPでプロセス間通信を実装するよりはCOMコンポーネントにしたほうが良い・・・のかな

401 名前:デフォルトの名無しさん :04/08/01 20:20
TCP/IPなんて一番重いよ

402 名前:デフォルトの名無しさん :04/08/01 20:26
CでCOMコンポーネント書いてる人居ますか?

403 名前:デフォルトの名無しさん :04/08/01 20:29
C++で書いて下さい

404 名前:デフォルトの名無しさん :04/08/01 20:38
普通はやりませんかね?<Cで

405 名前:デフォルトの名無しさん :04/08/01 20:52
>>399
軽いなら=軽いオブジェクトなら、だなスマソ
WM_COPYDATAなら、通知も気にせずできてお手軽だから、楽だよと。

406 名前:デフォルトの名無しさん :04/08/01 21:28
>>398
DCに選択されたHGDIOBJをDeleteObjectしても当然失敗する
Win9xだと悲惨なことになるだろうな

407 名前:384 :04/08/01 22:28
あれ、かなり間違えてますかね。
自分のやり方はこんな感じです。
間違えている所があったら教えてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=4&fi=no

408 名前:デフォルトの名無しさん :04/08/01 23:24
普通 src dest
日本原理主義 moto saki


409 名前:デフォルトの名無しさん :04/08/02 01:12
>>398
私もそう思ってましたが、それであってるんじゃないですか?
SelectObject の戻り値は大切に保存して、描き終わったら必ず
元に戻すようにしてますが。

410 名前:384 :04/08/02 06:05
かなり勘違いして覚えていたようです。
もう一度勉強しなおします。

411 名前:デフォルトの名無しさん :04/08/02 06:14
資料はまとなものを使ってください

412 名前:384 :04/08/02 09:06
分かりました。

413 名前:デフォルトの名無しさん :04/08/02 19:23
ファイルのバックアップをするツールを作っていまして
サイズと更新日時を調べて重複コピーを避けようとしています。

CopyFile() でコピーした同じファイルの更新日時が、一秒前後ずれています。
いろいろ試したところどうやらNTFS(Cドライブ)からFAT32(Dドライブ)にコピーしたときにのみ
起こっているような感じですが、仕様上の問題でしょうか?
比較にはGetFileTime()→FileTimeToSystemTime()として各要素を比較しています。

・更新日時が違うので上書きしたときの出力例↓
Directoryコピー C:\Documents and Settings\Administrator\デスクトップ\
       memo.txt
       overwrite src 2004/07/30 09:24:03.010 size 1242436
              dst 2004/07/30 09:24:04.000 size 1242436



414 名前::04/08/02 19:25
あげさせていただきます

415 名前:デフォルトの名無しさん :04/08/02 19:26
FATは偶数秒単位でしか時刻を管理できないから。

416 名前:デフォルトの名無しさん :04/08/02 19:28
NTFS delays updates to the last access time for a file by up to one hour after the last access.

417 名前:デフォルトの名無しさん :04/08/02 19:29
>>413
FAT ファイルシステムの更新時刻の分解能は2秒。参照時刻にいたっては1日。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getfiletime.asp
"Remark" のところ参照。

418 名前:デフォルトの名無しさん :04/08/02 19:31
物尻だな

419 名前:413 :04/08/02 19:41
手持ちのMSDNにはそんなこと書かれてねー。
要するに互換性が無いよってことでいいのですね。
アバウトに比較しておきます。まあ簡易ツールなので。

>>416
英語力ぜろなんですが、NTFSでは更新されてもしばらくは更新日時を更新しない
ということですかね?ツール使用前に再起動必須でいいのかな。

ありがとうございました

420 名前:デフォルトの名無しさん :04/08/02 19:43
>>419
更新日時じゃない。

421 名前:デフォルトの名無しさん :04/08/02 19:43
>>413
サイズと更新日時で比較する他に、アーカイブ属性を使うという手段もあるけど、
どうなのだろう…

422 名前:413 :04/08/02 19:45
>>420
あ、ほんとだ。指摘ありがとうございます。

423 名前:413 :04/08/02 19:54
>>421
これは誰でも操作可能なようで少し不安になりますね。
コピーするときに自前のDBを作っちゃうのがもっとも確実でしょうか。
そこまで面倒かけるのもあれですが。

424 名前:デフォルトの名無しさん :04/08/02 20:01
アーカイブ属性ってのは本来こういう用途に使うもんなんだけどな。
変更があったらアーカイブ属性がついてバックアップ時に消す。

425 名前:デフォルトの名無しさん :04/08/02 20:05
バックアップ取ったときにMD5かなんかでハッシュ取っとけ

426 名前:デフォルトの名無しさん :04/08/02 20:11
MD5だと一致しちゃうかもよ

427 名前:デフォルトの名無しさん :04/08/02 20:37
>>426
なぜですか?

428 名前:デフォルトの名無しさん :04/08/02 20:41
>413
コピー後にSetFileTime()は?

429 名前:デフォルトの名無しさん :04/08/02 20:57
>>427
MD5ハッシュは128bitだろ。128bit(0.301x128=38.528桁)ぐらいなら一致しちゃうかもしれないじゃーん。

まあ、これが一致するならGUIDやUUIDも一致する危険性があると言えるけど。

430 名前:デフォルトの名無しさん :04/08/02 20:59
>>429
アフォですか?

431 名前:デフォルトの名無しさん :04/08/02 21:04
>>430
そう思った根拠をどうぞ。現実的でない話、というの以外で論理的にお願い。

432 名前:デフォルトの名無しさん :04/08/02 21:05
いちいち煽りに反応しない

433 名前:デフォルトの名無しさん :04/08/02 21:08
運のいい人なら一致するよ
おれは運が悪いから一生当たらないだろうけど

434 名前:デフォルトの名無しさん :04/08/02 21:15
ジャンボ宝くじ1等が当たる確率のほうが高い。

435 名前:デフォルトの名無しさん :04/08/02 21:33
通りすがりの者す。
まったく根拠がないので大嘘かもしれないが、概略計算してみた。
現在、56BitのDESが何とか解読可能らしいから、1台のPCで解読可能な限界が
64Bit程度とすると、128BitであればPC1台で解読不能な64Bit倍の組み合わせ
が残っている。
これを100億台のPCで分散して計算したとしても
2^64 / 10,000,000,000 = 1,844,674,407.
通りの組み合わせがまだ残ってる。
つまり100億台のPC をフル稼働して128Bitビットの暗号を解読して解析される
確立は 1/1,844,674,407 とかそんなオーダーじゃないのかな?
運のいい人なら一致するレベルではないような気がする。

436 名前:デフォルトの名無しさん :04/08/02 21:42
MD5が一致する確立と、暗号の解読云々に何の関係があるんでしょうか。

437 名前:デフォルトの名無しさん :04/08/02 21:44
俺も、MD5とファイルサイズが一致するのに、別ファイルなんて考える事はないと思う。
それに、アバウトなタイムスタンプも組合わせれば、故意にそんなファイルを作成しない
限り問題ないと思うけどなあ

438 名前:デフォルトの名無しさん :04/08/02 21:45
MD5の一致でファイルの一致としてしまって、
万が一間違って国家機密ファイルを消してしまったらどうするのだろう

439 名前:デフォルトの名無しさん :04/08/02 21:47
>>438 が国家機密ファイルを扱うような身分になることはない。安心しろ。

440 名前:デフォルトの名無しさん :04/08/02 21:47
つーかMD5の中にファイルサイズも含まれてるんだら、
MD5とファイルサイズ両方調べても意味無いだろ

441 名前:デフォルトの名無しさん :04/08/02 21:48
あと、CRC32とかも組合わせれば、まず問題ない。

でも、市販ソフトはそこまでやっていないと思うぞ。


442 名前:デフォルトの名無しさん :04/08/02 21:51
つーか頭悪すぎる人多いのね。
430の気持ちが少しわかった。

443 名前:デフォルトの名無しさん :04/08/02 21:51
>>435
どうでもいいけど、その確率は宝くじが2回当たる確率をはるかに上回るから、無いとは言えないんじゃ。

444 名前:デフォルトの名無しさん :04/08/02 21:55
MD5は特定の条件下で結果が偏るから実際はそんなに確率低くないよ

445 名前:デフォルトの名無しさん :04/08/02 21:55
もしMD5が核の発射ボタンだとしても使えますか?

446 名前:デフォルトの名無しさん :04/08/02 21:58
SHA-1にすればだいぶ安全になるよ

447 名前:デフォルトの名無しさん :04/08/02 21:59
>>443
>無いとは言えないんじゃ

通常のものなら問題ないと思うが、ないとは言えないね。
もちろん
>国家機密ファイル
などという重要なものにはまだ足りないとも思うけど。
少なくとも普通の人が適当に入力し世界で1人ぐらい当たってしまうほど、脆い
符号化でもないということ。

448 名前:デフォルトの名無しさん :04/08/02 22:01
SHA512くらいでやっと安心かな

449 名前:デフォルトの名無しさん :04/08/02 22:05
ミラー・ラビン法みたいな感じで、底を変えて複数回評価することでより一意性を高める方法が良いのかもね。

450 名前:デフォルトの名無しさん :04/08/02 22:17
そこまでするなら、

1.日時が等しい(もしくは極めて近い)
2.サイズが等しい
場合に、
3.バイナリ比較

すればいいだけの話のような気もする。

451 名前:デフォルトの名無しさん :04/08/02 22:22
>>450
1も2も弱すぎる

452 名前:デフォルトの名無しさん :04/08/02 22:30
バックアップでしょ?
バックアップされてないファイル名があったらコピー。
もし、そのファイルが既存のもののコピーであったとしても、
それを検出する必要ってあるのか?

453 名前:デフォルトの名無しさん :04/08/02 22:46
>>452
更新されてたらどうするの?
日付とファイルサイズが変わって無くても中身が更新されてたらどうするの?

454 名前:デフォルトの名無しさん :04/08/02 23:48
>>452は視点がずれてる。
だれも新しいファイルの話などしてない。

というか、そろそろAPIの話題じゃないね。

455 名前:デフォルトの名無しさん :04/08/03 03:15
そろそろぬるぽの話ですね。

456 名前:デフォルトの名無しさん :04/08/03 03:21
そろそろガッの話です

457 名前:デフォルトの名無しさん :04/08/03 08:06
一致したらコピーしないんだから、そもそも上書きの心配はないだろ?

458 名前:デフォルトの名無しさん :04/08/03 09:36
       (\        /)
       (\\     //)
       (\\\  ///)
    / ̄ ̄    ∧Ω∧    ̄ ̄\  
   (/// ̄  ( ´∀`) ̄\\\) 
      ( \) ⊂   つ(/  )
       \\) │││ (//
        \) (_)__) (/

459 名前:デフォルトの名無しさん :04/08/03 22:03
教えて下さい。
IMEで現在変換候補選択中かどうかを知るにはどうしたらいいでしょうか?


460 名前:デフォルトの名無しさん :04/08/03 23:14
MD5が一致する確率は、HDDが壊れる確率の1/1000000000以下だよ。
もちろん確率だから、最初の1回でヒットする確率もゼロでは無い。
そういう意味では、地球に隕石が衝突して、人類が滅亡する確率のほうが100000倍も大きいのだがな…

なんと!Windowsがハングする確率は10回に1回以上だぞ!?
これは「ほぼ間違いなく」Windowsは異常終了する(何が起きてもおかしくない)ってコトなんだが(w


461 名前:デフォルトの名無しさん :04/08/03 23:18
100%成功する方法が存在するのに、失敗する可能性がある方法で
やろうとする神経がわからん。

462 名前:デフォルトの名無しさん :04/08/04 00:23
>>461
100%絶対に成功するが10万年かかる方法と、
10%しか成功しないが0.1秒でできる方法があったとしたら、
藻前は絶対、10万年かけろよ。絶対だぞ。自分から言ったんだからな。
せいぜい長生きしてくれ。

463 名前:デフォルトの名無しさん :04/08/04 00:34
死んで

464 名前:デフォルトの名無しさん :04/08/04 01:30
>>462
100%絶対に成功する方法が
10%しか成功しない方法より
時間がかかることを前提にされてもな。

100%絶対に成功するが10万年かかる方法と、
10%しか成功しないが同じく10万年かかる方法とじゃ
100%絶対に成功する方法を選ぶだろ。

特にMD5計算で単純なファイル読み込み以上に時間がかかる場合はなおさら。
ファイルを読み込んでMD5なんて無駄な計算をしてから比較するより、
ファイルを読み込んでそのまま比較した方がいい。

465 名前:デフォルトの名無しさん :04/08/04 01:30
プゲラ

466 名前:デフォルトの名無しさん :04/08/04 01:33
ゲラプシュ

467 名前:デフォルトの名無しさん :04/08/04 01:46
>>459
IME の動作を監視したいなら、対象のウィンドウで WM_IME_NOTIFY を処理する。
開いた時に IMN_OPENCANDIDATE、閉じた時に IMN_CLOSECANDIDATE が送られる。

実行時の瞬間に開いてるかどうかを調べるのは ImmGetCandidateWindow かな?
こっちは試してないのでよくわからん。

468 名前:デフォルトの名無しさん :04/08/04 02:47
>>464
片方はあらかじめ計算しておけば読み込みにかかる時間は半分になるだろ

469 名前:デフォルトの名無しさん :04/08/04 03:39
100%絶対に成功する方法が
この世にあることを前提にされてもな。


470 名前:デフォルトの名無しさん :04/08/04 04:01
チェインハッシュコンテナを作らせたら恐ろしいものがみられそうだな。

471 名前:デフォルトの名無しさん :04/08/04 08:35
>>460
10回に1回ってなんだ?起動した回数か?

472 名前:デフォルトの名無しさん :04/08/04 10:55
winnyで逮捕される可能性と同じくらいだろ
逮捕騒ぎでwinnyやめた奴はMD5使えないよな
一致する可能性同じだから不安で

473 名前:デフォルトの名無しさん :04/08/04 11:02
>>472
Winnyは実際に逮捕されたぞ。
winnyと同じとするならば、現実に起こりうる確率だが。

474 名前:デフォルトの名無しさん :04/08/04 11:04
スレ違いだったらゴメンナサイ

興味をもったので、仮想CDなどのソフトが実装している、仮想ドライブのアプりを作りたいのですが・・・
どのようなWinAPIを使えばよいのでしょうか?

また、参考になるドキュメントって存在しますか?
ググルときのキーワードの助言でも助かります。

テストとして、特定のディレクトリをドライブにしたり、仮想CDソフトのようにバイナリーファイル(イメージファイル)に複数のファイルをマッピングするようなドライブを作ってみたいと思っています。

よろしくお願いします。


475 名前:459 :04/08/04 11:08
>467
ありがとう、できました!
よく考えたら選択ウィンドウだけじゃなく、単に入力開始/終了したかを
取りたかっただけだったので、WM_IME_STARTCOMPOSITIONと
WM_IME_ENDCOMPOSITIONでハンドリングするようにしたら、完璧でした。


476 名前:デフォルトの名無しさん :04/08/04 11:18
>>474
まずddkを入手して慣れろ
話はそれからだ

477 名前:デフォルトの名無しさん :04/08/04 11:20
>>475
ttp://d.hatena.ne.jp/einseul/?of=15
WM_IME_STARTCOMPOSITIONとかアテにするな
だそうな

478 名前:459 :04/08/04 12:36
>477
ひー!でもIME2000以前なんて、手元に無いよぅ。問題が全角スペースだけなら、
まだ影響は少ないんですけどね。2002ならまともに動いてるみたい。

ATOKでも推奨しとこうかな(w

479 名前:デフォルトの名無しさん :04/08/04 17:48
ディレクトリを扱うDir()関数のようなものはないでしょうか?
:: を打ってみたのですがdir()関数が出てきませんでした
質問が間違っていたらごめんなさい

480 名前:デフォルトの名無しさん :04/08/04 17:55
FindFirstFileとその仲間

481 名前:479 :04/08/04 17:59
>>480
ありがとうございました!

482 名前:デフォルトの名無しさん :04/08/04 22:20
int LoadString(
    HINSTANCE hInstance,
    UINT uID,
    LPTSTR lpBuffer,
    int nBufferMax
)
という関数がありますが
第4引数 nBufferMax に渡す数を動的にしたいのです。

そこで、どうすれば文字列テーブルから1文字列のバイト数か文字数を取得できるのでしょうか?
環境は WinXP & VC++ & PlatformSDK です。

SizeofResource()は1セクション(複数の文字列の合計)のサイズを返すので使えないです。


483 名前:デフォルトの名無しさん :04/08/04 22:34
>>482
atlcore.h の AtlGetStringResourceImage を読んでみると良いよ。

484 名前:デフォルトの名無しさん :04/08/04 22:46
MFCのCString::LoadStringでも追ってみれば何かわかるんじゃ。

485 名前:デフォルトの名無しさん :04/08/04 23:19
>>482
今月のCマガにちょうどのってたな。
よく覚えてないけど、_から始まるやつだった。

486 名前:デフォルトの名無しさん :04/08/05 00:01
リストビューについての質問なんですが、
SuperTagEditorのように、大量のタグ、文字列や数値を扱う場合、

・リストビューに反映させておいて必要な時だけリストビューから直接データを取り出す
・リストビューに反映させているのと同じ内容のデータを常に保持しておき、リストビュー側に変更があったら保持してあるほうにも変更を加える

のどちらが効率としては良いのでしょうか?

487 名前:デフォルトの名無しさん :04/08/05 00:05
その二択だと前者だけど、構造に自由がきかない。
仮想リストをつかうべし

488 名前:デフォルトの名無しさん :04/08/05 00:33
>>486
どうしても性能あげたきゃ、出来合いコンポ使わず、自前でやれ。
(データとビューを分離して、ビューはリストビューじゃなく自前って事。)

489 名前:デフォルトの名無しさん :04/08/05 00:56
>>485
あー俺も見た。あの新連載よさげ。

490 名前:デフォルトの名無しさん :04/08/05 01:32
>>488
仮想リストビューでいいじゃん

491 名前:デフォルトの名無しさん :04/08/05 16:01
他スレでも聞いたんだけど返答が無かったので、こちらでも質問させて下さい。

実はC#からWin32をコールしていた時の不思議な現象なんですが、
開発機のXP Homeで、RichTextBox内の文字を選択して書式設定するために
EM_SETSELをSendMessageで文字選択してました。
これは全然問題なかったんですが、別のXP Pro機で動かしたところ、選択文字が
ことごとくずれてました。どうやら選択指定範囲が文字数ではなくバイト単位で
動作しているようで、SendMessageWにするとXP Proでもうまく動きました。

基本的にSendMessageならOSとして対応するのがSendMessageWか
SendMessageAかを勝手にハンドリングしてくれてると理解してますが、違うのでしょうか?
また、なんでXP HomeとProなんかでこんな違いが出てしまうんでしょう??

492 名前:デフォルトの名無しさん :04/08/05 16:06
マルチポストウゼー

493 名前:デフォルトの名無しさん :04/08/05 16:09
マルポ

494 名前:デフォルトの名無しさん :04/08/05 16:21
ま、そう言わずに。
C#スレで聞くよりこっちで聞いてた方が相応しかったと考え直したもので。

495 名前:デフォルトの名無しさん :04/08/05 16:32
>>491
C (C++) では SendMessage は
#ifdef UNICODE
#define SendMessage SendMessageW
#else
#define SendMessage SendMessageA
#endif // !UNICODE

なるマクロで、コンパイル時に SendMessageA または SendMessageW に変換されてます。
C# で user32.dll からインポートして使うなら、どちらを使うのか自分で指定するべき。

496 名前:491 :04/08/05 17:10
なるほど、C#からだとこのマクロがどう作用するのかは分かりませんが、
要はどちらが使われるか保障がないんですね。
内部的にUNICODEに対応しているかどうか最初にチェックしないといけないわけですか。

ありがとうございました。

497 名前:デフォルトの名無しさん :04/08/05 17:47
VC++ Win32のTreeViewコントロールでビューのアイテムなどを
ダブルクリックしたかどうかを検出するにはどうしたらいいですか?

いろいろ調べたのですがわかりませんでした。
私の方で思いつく手段は GetClassLongでTreeViewウィンドウの
クラススタイルを取得して
CS_DBLCLKS を ORしてSetClassLongでセットする
ウィンドウをサブクラス化して、置き換えてたプロシージャ内で
WM_LBUTTONDBLCLKなどを検出

以上のような方法ぐらいしか思いつきません。
もっとスマートな方法はない物でしょうか?
WM_NOTIFYなどで受け取る方法でもよいのですが・・
(APIなのだからあるとはおもうのですが・・)


それとトップのテンプレ↓リンクきれてましたけど・・
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm



498 名前:デフォルトの名無しさん :04/08/05 17:49
NM_DBLCLKだったかな

499 名前:デフォルトの名無しさん :04/08/05 19:07
サブクラス化

500 名前:デフォルトの名無しさん :04/08/05 19:34
>>498-499以外には無いと思われ


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.