- 1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-10くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build65 pc11.2ch.net/test/read.cgi/tech/1208847084/
- 463 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 01:33:14 ]
- >>462
それは良かったですね
- 464 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 01:37:50 ]
- とってもよかったでーす^^^;
- 465 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 01:53:01 ]
- >>462
赤字で書いてるとこと違う事をしてるのは、分かっててやってるの? 変更したクラスから新しくウィンドウを作るってんなら、それでいいんだけど。
- 466 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 11:46:16 ]
- どこをどう見ると間違ってないんだよw
SetWindowLong、SetWindowLongPtr、SetWindowSubclass使えよ
- 467 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 11:53:56 ]
- 間違い探しかよw
ぱっと見てスルーしてたけど、SetClassLong使ってたのか
- 468 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:56:47 ]
- >>451
VS2005なら、Windows SDK6.0だか6.1入れてCLやRCをそちら付属品を 使うようにすればVista圧縮形式に対応できる。 VS2008はRCでもMSDEVリソースエディタでも標準サポート
- 469 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 15:43:24 ]
- >>452
9xだと本当にDOSが動いてるからね。 NTだと単なるエミュだし
- 470 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 15:52:02 ]
- >>468
さんくす RC.EXEだけでも入れ替えておけばビルド後のイベントでゴニョゴニョする必要は無さそうだw IDEのリソースエディタでアイコンなんて作らないからそっちはまぁいいや
- 471 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 16:26:48 ]
- >>470
VS2005だと、圧縮形式アイコンが含まれる.rcファイルがMSDEVで開けないんで注意
- 472 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 16:35:26 ]
- VC2005はmsdevじゃなくてdevenvだったと思うが。
そんな俺はVC6ユーザー
- 473 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:01:52 ]
- imepita.jp/20080526/612210
このような四角いボタンってどうやって作るんですか?
- 474 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:03:04 ]
- 言い忘れました。×ボタンです。
- 475 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:09:14 ]
- クローズボタンのことが聞きたいのかオーナードローのボタンのことが聞きたいのか
- 476 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:25:53 ]
- 1. Toolbar を作る
2. ImageList を作る 3. [×] のビットマップを作る 4. 3. のビットマップを 2. の ImageList に追加する 5. ImageList を Toolbar にセットする 6. Toolbar に 3. のビットマップを持つボタンを追加する
- 477 名前:デフォルトの名無しさん [2008/05/26(月) 18:08:23 ]
- 指定したiniファイルのキーを削除するapiを教えてください
- 478 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 18:08:57 ]
- やだ
- 479 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 18:55:43 ]
- WritePrivateProfileStringで
lpAppNameにセクション名 lpKeyNameにキー名 lpStringにNULL lpFileNameにiniファイルのパスを指定すると 指定したセクション内のキーが消える
- 480 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:04:01 ]
- >>479
まじっすか^^ WritePrivateProfileStringで値をNULLにすると消えるんですね これは知らなかった。ありがとうございます!
- 481 名前:479 mailto:sage [2008/05/26(月) 19:04:52 ]
- ってかMSDN読めよ
- 482 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:05:09 ]
- MSDNも読まずにWin32APIを使おうとする奴の気が知れない
- 483 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:05:36 ]
- つーか引数どうやって知ったのかw
そこに説明もあると思うんだがなあ
- 484 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:33:34 ]
- MSDNなんて読まなくていい
ここで質問するだけで丁寧な解説が日本語で得られる お人好しな人間ほどうまく扱えば便利なものは無い というのが俺の妄想 一応言っとくが俺はちゃんとMSDNで調べる派だからな
- 485 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:36:57 ]
- 俺みたいに嘘を教える奴も居るから気をつけないと
- 486 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:40:39 ]
- 俺みたいにかく乱する奴もいるからry
- 487 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:45:04 ]
- お前ら必死でワロタ
- 488 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:31:16 ]
- VC.net2003 + SDKで、ImageList使える?
ビルドは通るが、CreateWindowExでウィンドウ作成した時点で、'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から 型 '_IMAGELIST' を読み込めません。って出て落ちるんだけど・・・
- 489 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:37:28 ]
- DiskcopyコマンドってどういうAPI使ってフロッピーに出力してるの?
このコマンドに限らずブート領域を書き込めるのって同じやり方だと思うんだけぢ 少なくともfoutやCopyFileではなさそう。
- 490 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:39:08 ]
- > 思うんだけぢ
どこの方言でぢか?
- 491 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:43:52 ]
- アマゾン地方の方言が出てしまいました
- 492 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:47:15 ]
- DeviceIoControlとかじゃないの
知らんけど
- 493 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:55:32 ]
- >>489
DDKを見ましょうね。
- 494 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:04:43 ]
- やだ
- 495 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:06:57 ]
- >>489
NTならCreateFileで"\\\\.\\A:"のようにすると生のドライブを開ける。SDKにも書いてある。 9xなら>>452。KB125712やKB174569など。
- 496 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:10:48 ]
- あした試してみよう
- 497 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:27:50 ]
- もうすぐ明日だろ
- 498 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:56:37 ]
- 関数を動的に作ってウィンドウプロシージャとして渡す事ってできないんですか?
クラスのメンバ関数をウィンドウプロシージャにできないのが、 理屈ではよくわかるんですけど、なんか納得できなくてw static使って場合分けするのもなんか反則的というか、やりたいことと違う気がして… クラスのコンストラクタで関数を動的に作ってコントロールのプロシージャとして使い、 デストラクタでコントロールは期すると共に関数も破棄できないかなぁと。 …ゴメンナサイ、なんかもう投げやりです。
- 499 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:06:12 ]
- グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?
- 500 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:09:06 ]
- つーか自分でラッパー書けばいいだけじゃね
- 501 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:10:07 ]
- 僕ハッカー!!!
- 502 名前:489 mailto:sage [2008/05/27(火) 00:11:11 ]
- CreateFile
DeviceIoControl WriteFile でなんかフロッピーに出してるのは判った しかしこの方法でフロッピーの中にファイルを作る方法がわからなう
- 503 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:13:47 ]
- FAT32の仕組みでも覚えろ
- 504 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:14:44 ]
- >>498
web.archive.org/web/20070810174250/http://techtips.belution.com/ja/vc/0009/ ようするに、静的メンバ関数の中から 何らかの方法でウィンドウに対応するオブジェクトを得て、 そのオブジェクトの非静的メンバ関数に処理を渡せばいい。 ウィンドウクラスの場合、次のようなものを使って オブジェクトへのポインタを保存する例が多い。 Get/SetProp Get/SetWindowLongPtrとウィンドウクラスごとの追加データ Get/SetWindowLongPtrとGWLP_USERDATA ちなみに、ATLは本当に動的に関数を作って対処している。 hp.vector.co.jp/authors/VA022575/c/msgmap.html
- 505 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:16:02 ]
- >>502
逆に、ファイルがある状態のフロッピーディスクを 吸い出して中身を眺める、もちろんFATの構造の解説と一緒に。
- 506 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:10:13 ]
- アプリケーションへのアイコン設定は、
検索で調べると必ず .rc への記述方法が紹介されてますが、 .rc を経由せずに .cpp のプログラムのみで設定って出来るんでしょうか? よろしくお願い致します。
- 507 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 03:17:45 ]
- >>502
何がしたいのかよくわからんが フロッピーの中にファイルを作るのならばCreateFileでいいと思うが。 diskcopyだったらセクタを全部コピーすればいい
- 508 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 07:09:57 ]
- あるウィンドウがHWND_TOPMOSTで最善面になっているかどうかを判断するにはどうすればいいのでしょうか?
- 509 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 07:58:26 ]
- GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST
- 510 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:25:20 ]
- >>504
atlthunk.cppが凄い てかこんなのMSの中の人でないと書けないだろw
- 511 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:45:38 ]
- 書ける奴はいくらでもいるだろうが、実際に、書こう思う奴は、それほどいない。
MFCはHWNDとベースクラスへのポインタを、 いわば、std::map< HWND, Hoge >的なもので管理していて、メッセージが来るたびに検索してると聞いたが。
- 512 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:33:10 ]
- >>511
実際に中身を見てから言って欲しいね
- 513 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:46:49 ]
- コード生成はWindowsより前なら常套手段だから昔の人なら楽勝
- 514 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:52:23 ]
- そんな話はしていない
いいから当該ソースを見ろ
- 515 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:24:54 ]
- WinMainからDialogBoxでモーダルダイアログを作成しております。
DialogProc内から例外をthrow(あるいはRaiseException)したところ、 WinMainで正常にcatch出来ました。 ところがDialogProcからさらに孫ダイアログを作成し、 孫ダイアログのDialogProc内から例外をthrowしたところ、 子ダイアログのDialogProcでcatch出来たのですが、 return後にAccess violationで落ちてしまいました。 どうすればreturn後に処理を続行できるのでしょうか?
- 516 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:27:53 ]
- 長くて恐縮ですがソースを貼らせて頂きます。
INT_PTR CALLBACK proc2(HWND wnd, UINT msg, WPARAM w, LPARAM) { switch (msg) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch (LOWORD(w)) { case IDOK: EndDialog(wnd, LOWORD(w)); throw std::exception("HOGE!"); // 例外をthrow case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE; } break; } return FALSE; } INT_PTR CALLBACK proc1(HWND wnd, UINT msg, WPARAM w, LPARAM) { switch (msg) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch (LOWORD(w)) { case IDOK: try { DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_2), wnd, proc2); } catch (const std::exception&) {} return TRUE; // return後にAccess violation case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE; } break; } return FALSE; } int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_1), 0, proc1); } catch (const std::exception&) { } catch (...) {} return 0; }
- 517 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:44:00 ]
- >>515
C++以外のスタックフレームを飛び越えるthrow〜catchって 頭の悪いlongjmpと同じだと思うがどうか
- 518 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:01:23 ]
- 文字列の"123.45"をfloatに変換するAPIを教えてくだせえ
- 519 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:07:35 ]
- なんでわざわざAPI使うん?
- 520 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:11:36 ]
- wsprinf があるんだから wsscanf もあるにちがいないw
- 521 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:13:22 ]
- atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。
- 522 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:17:36 ]
- いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど
- 523 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:36:08 ]
- VarR4FromStr
VarR8FromStr
- 524 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:23:01 ]
- >>520
wsscanfならMSのFTP鯖にソースが置いてある Win16時代の物みたいだから今でも使えるかどうかは知らん
- 525 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:30:58 ]
- crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?
- 526 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:52:43 ]
- msvcrt.dllならいいんじゃね
- 527 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:07:36 ]
- crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?
- 528 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 14:28:31 ]
- wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ
- 529 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:10:26 ]
- うるせークズ
- 530 名前:デフォルトの名無しさん [2008/05/27(火) 15:13:58 ]
- >>528
キモいよ
- 531 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:14:00 ]
- 可変長のはともかく、strcpyとかもCDECLでいいんだろうか?
- 532 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:16:09 ]
- 試せばいいだろハゲ
- 533 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:23:22 ]
- そんなの関係ねーだろクズが
- 534 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:31:18 ]
- 関係ねー事聞くなカス
- 535 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:35:03 ]
-
ノ (゚Д゚) ( (7 < ヽ
- 536 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:38:25 ]
- >>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの
- 537 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:44:25 ]
- >>535
なんだその態度は!!
- 538 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:42:51 ]
- >>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く
- 539 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:25:05 ]
- FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:26:36 ]
- WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?
- 541 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:28:35 ]
- 正しくはどのメッセージを送ればよいのでしょうか?
- 542 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:29:27 ]
- >>541
MoveWindow 関数で
- 543 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:30:30 ]
- ありがとうございます。
- 544 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:32:30 ]
- SetWindowPosとかもあるし、好きなので。
- 545 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:17:01 ]
- >>540
WM_SIZEを送ると動くウィンドウならあるよ
- 546 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:29:00 ]
- 動かないウィンドウもあるってことですね。
- 547 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:49:39 ]
- >>517
遅レスすいません。 プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。 とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。
- 548 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:50:20 ]
- STLが○| ̄|_にみえたのは俺だけですか?
- 549 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:53:30 ]
- >>548
面白くないよ
- 550 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:02:12 ]
- 確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような
- 551 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:07:35 ]
- >>549は大爆笑して悔しかったんだろうなぁ
- 552 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:17 ]
- そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない
- 553 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:49 ]
- >>548=>>551
はいはいわろす
- 554 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:11:58 ]
- >>535,537
ワロタw
- 555 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:41:01 ]
- >>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど C++言語的には未定義動作だからやめた方がいい
- 556 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:56:03 ]
- 未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い
- 557 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:57:48 ]
- VCなんてもう終わってるだろうがw
- 558 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:27:35 ]
- 終わってません
というか終わりません
- 559 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:08:58 ]
- MSではVBについで売れてる言語製品だしな
- 560 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:13:15 ]
- でも、そのVB6も来月で...
- 561 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:13:38 ]
- 何その時代錯誤
- 562 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:39:04 ]
- 俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、 とっととExitProcessするだけだな。
- 563 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:16:09 ]
- VBwwwwwwwwwwwwwwwwwwwwww
|

|