1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ] スレ立てるまでもない、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 【前スレ】 61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
855 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:39:24 ] >>852 >>853 TCHARにすると error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。 こんなエラーが出ます このエラーからすると第一引数にはchar型が入るように見えるんですが、違う、のかなぁ >>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。 >ってLPWSTR chStr[128]ってしたってこと? です、エラーからしてそういうことかなぁと思いまして
856 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:40:49 ] >>855 TCHAR chStr[128]; wsprintf(chStr , TEXT("インスタンスハンドル : %d") , hInstance);
857 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:41:54 ] * UNICODE, ANSI ビルド * TCHAR, CHAR, WCHAR 型 * TEXT, _T マクロ この辺についてちゃんと調べるなりドキュメント読んだほうが良いと思う
858 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:48:20 ] >>855 違うよ。>>852 の意味は [プロジェクト]-[プロパティ]-[構成プロパティ]-[全般]-[文字セット]をマルチ バイト文字セットを使用する に変更するという意味だよ。
859 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:30 ] error C2664:〜〜〜〜 'A’ から 'B' に変換できません。 ※ABは char / wchar_t / LPSTR / LPWSTR / LPCSTR / LPCWSTR など 巷のサンプルコードがこのようなコンパイルエラーを発生させる場合、文字セットが適切ではないです。 開発環境の文字コードの設定をソースにあわせるか、ソースを開発環境の設定にあわせるかしましょう。 方法は各々の開発環境のスレへどうぞ。 この辺の文言がテンプレにあったほうがいいような気がするがお前らはどう思うか
860 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:41 ] >>849 コード見ないとわかんね ここエスパースレじゃねえし
861 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:52:53 ] >>860 分からないなら無理に答えていただく必要はありません
862 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:55:44 ] >>861 なりすまし乙 >>860 エスパーレスが欲しかったんですけど、ダメですかねえ
863 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:31 ] 違うプロセスのウィンドウに SetWindowText を使っているとか
864 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:37 ] 無茶言うなw
865 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:36:24 ] >>863 SetWindowText(WM_SETTEXT)は他プロセスでも平気じゃなかったか
866 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:04:58 ] >>865 WM_SETTEXT は大丈夫だけど SetWindowText は駄目 msdn2.microsoft.com/en-us/library/ms633546.aspx >To set the text of a control in another process, >send the WM_SETTEXT message directly instead of calling SetWindowText.
867 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:15:11 ] ちょっと占ってみると HWNDを間違えてる、とでますた。
868 名前:855 mailto:sage [2008/03/01(土) 00:27:56 ] ありがとうございました、1~10辺り200回くらい読みなおしてきます
869 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:47:18 ] VCってどの辺のバージョンからUnicodeビルドがデフォになってるの?
870 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:59:55 ] 2005。Expressロハ化と軌を一にしており 全国の初心者をドツボにハメた。
871 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:07:34 ] なんかしらんが、Unicodeが楽すぎ。マルチバイトで文字区切りなんて悪夢だ。
872 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:15:58 ] >>871 で、油断してるとサロゲートペアとかにはまると。
873 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:19:47 ] UTF16じゃなくて32ならよかったのにな
874 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:32:53 ] まだWin98が現役だというのに・・・
875 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:34:54 ] 現役じゃねえよバカ LANケーブル引っこ抜け
876 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:15 ] Windowsフォームアプリケーションでデザイナを使って生成されるコードはMFC?
877 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:54 ] 開発環境のスレで聞け
878 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:17:58 ] >>870 VS2005インスコして確かめてみたら、マジだ なんでデフォの動作をころころ変えるかねぇ・・・ つうかメモリ128MBでVS2005が予想以上に重いw
879 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:24:58 ] オレは今どきデフォでMBCSの方が嫌だよ
880 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:49:41 ] >>849 ですが解決しました、Win32APIと関係無いところでミスってたようです。 どもでした。
881 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:58:54 ] ktbr
882 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 07:44:23 ] ころころ動作を変えてねぇだろ。 いままでずっとMBCSだったじゃないか。 というかおれとしては2002か2003の時点で変えてほしかった。
883 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:41:54 ] 2005でもコマンドラインからclやnmake叩いてコンパイルすればデフォはMBCSじゃないの?
884 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:53:56 ] プロジェクト作ったときに、デフォルトで/DUNICODE /D_UNICODE あたりが定義されるだけだからなー。 だから、nmakeについてはMAKEFILEをどうやって作ったかにもよるんじゃね? あと、環境変数CLとかw
885 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:35:16 ] つーか今時メモリ128MBで開発しようなんて思うほうがどうかしてるよ。
886 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:23:20 ] UNICODE文字が全角幅か半角幅か簡単に調べる方法はありますか? デバイスコンテキストに固定長フォントセットしてGetTextExtentPoint32()呼び出すしかないでしょうか?
887 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:36:01 ] 一部罫線系の記号なんかは、フォントによって 全角半角の扱いがちがったりするし。 UNIXなら、wcwidthでいけるんだけどね。 まー、64Kbit程度のテーブル一回作れば終わるわけだし作れば。
888 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:37:29 ] 日本語ターゲットなら、SJISに変換して何バイト取るか調べる手もあるか。 BMP外にあるSJIS表現不能な連中はシラネ。
889 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:39:19 ] >>885 エミュレータだよ >>886 >>462
890 名前:886 mailto:sage [2008/03/01(土) 13:03:39 ] >>887-888 ありがとうございます。 記号なんかを含めるとそっちのほうが手っ取り早い気もしますね。 >>889 同じスレ内に答えあったとは・・・ ありがとうございました&すいませんでしたszo
891 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:12:53 ] >>889 エミュレータでしかもメモリ128KBなら、さくさく動くと思う方がおかしい。
892 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:52:39 ] >>891 うむ、たしかにそれは桁違いにおかしいな。
893 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:05:19 ] 今時128kのメモリなんて手に入らないだろw
894 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:08:47 ] 今時のCPUのキャッシュよりも小さいな。
895 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:41:47 ] 64KBのおれのマシンじゃ このスレのdatすら入らないんだぜ(現在194KB)
896 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:43:22 ] まぁ、基本的に文字が幅をもってるじゃなくてグリフが持ってるんだけどね。
897 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:13:11 ] ZwSetSystemInformationの使い方教えて〜
898 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:59:39 ] >>895 オンメモリ前提なんてここ数年の出来事なんだぜ もうちょっと前はオンディスクもほぼ不可能で人間様の手と手書きラベルが前提だったんだぜ もちっとまえはきりが無いので止めとく
899 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:00:53 ] 第一引数に動作モードの定数 第二引数に結果を受け取る構造体のポインタ 第三引数の第二引数が示す構造体のサイズ 戻り値はNTSTATUS 構造体と定数は目的によるのでぐぐる
900 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:02:57 ] ASIC内に内蔵されているメモリとかだと、128Kはそれなりに。
901 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:30:01 ] WindowsをスタンバイにするAPIは何でしょうか?
902 名前:デフォルトの名無しさん [2008/03/01(土) 19:38:13 ] 最小化されている任意のウィンドウの通常時のサイズを取得するには どうすればいいでしょうか?
903 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:23:34 ] GetWindowPlacement
904 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:26:34 ] IShellFolder::ParseDisplayNameの第3引数 MSDNの説明では入力専用のはずなのに、LPCWSTRじゃなくてLPWSTRです。 これは間違いという事でconstな文字列渡してもいいんでしょうか?
905 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:54:43 ] ぜんぜん知らんけど、コンパイラに怒られなかったら大丈夫なんじゃね コンパイラに怒られたら、渡す以前の問題だわな
906 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:14:17 ] さー? CreateProcessみたいな例もあるし、 いまのMSDNでconstじゃないなら、一応従っておいたほうがいいんじゃない?
907 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:09:43 ] フォルダを作成すると通知コードはどんなのが来るのでしょうか。
908 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:19:46 ] 来ねーよ 自分で待ち構えてないとな
909 名前:907 mailto:sage [2008/03/02(日) 05:01:13 ] >>908 ありがとうございます。 WM_で探してみたけどたしかにそれらしいものはありませんでした。 調べてみたところ、 RemoveDirectory()、CreateDirectory()はkernel32.dllの関数らしい のですが、これをフックして、戻り値を調べればわかるような気がしました。 難しそうなので、まだ自分には早そうですね。
910 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 05:05:17 ] >>907 そのディレクトリを作成したディレクトリをFindFirstChangeNotification()で監視しておけばいい。 どういうパラメータを設定すればいいかは忘れた。
911 名前:907 mailto:sage [2008/03/02(日) 05:23:18 ] >>910 ありがとうございます。 これは相当使えそうです。
912 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 06:15:29 ] ファイルやフォルダが作られる度に全ウィンドウへ WM_ なんて投げてたら重くてやってられないだろw >>911 ReadDirectoryChangesW を使った方がいい
913 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 07:16:31 ] 今回は選ばれない可能性が高いが、選択肢としてSHChangeNotifyRegisterもある
914 名前:907 mailto:sage [2008/03/02(日) 12:07:17 ] >>912 >>913 ありがとうございます。 ファイルなど個別に調べる場合に使えそうです。
915 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:35:32 ] ダイアログボックスのプロシージャの戻り値って、BOOLかINT_PTRどっちが正解ですか?
916 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:37:27 ] BOOL
917 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:40:46 ] 64 ビットのことも考えると INT_PTR じゃないの?
918 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:51:00 ] BOOL=INT_PTRだとばかり思ってたらwindef.hに typedef int BOOL; と書いてあって鬱になった俺が通りますよ
919 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:55:13 ] DLGPROC 型の定義を見てみたら? 仕様としては TRUE/FALSE 返すから BOOL なはずではあるけど、 知らない間に仕様拡張されてたら知らん。
920 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:18:00 ] あれってポインタ値以内ならなんでも返せるんじゃなかったっけ?
921 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:21:46 ] >通常、ダイアログボックスプロシージャはメッセージを処理した場合に 0 以外の値(TRUE)を、 >処理しなかった場合に 0(FALSE)を返すべきです。 >ダイアログボックスプロシージャが 0(FALSE)を返した場合、 >ダイアログマネージャはそのメッセージに応答して既定のダイアログ処理を実行します。 > >ダイアログボックスプロシージャが、特定の戻り値を必要とするメッセージを処理する場合、 >ダイアログボックスプロシージャは 0 以外の値(TRUE)を返す直前に >SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) を呼び出し、 >希望の戻り値を設定するべきです。 >0 以外の値(TRUE)を返す直前に、 >SetWindowLong を呼び出さなければならないことに注意してください。 >それより早く呼び出すと、ネストされたダイアログボックスメッセージが、 >DWL_MSGRESULT の値を上書きする可能性があります。 って書いてあるけど。
922 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:42:58 ] msdn2.microsoft.com/en-us/library/ms645469 (VS.85).aspx MSDNにはINT_PTRと書いてある
923 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:46:12 ] しかし、MSDN はたまに嘘書いてるからなあ。
924 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:50:11 ] 例えば?
925 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:07:04 ] GetModulePathName の MAX_PATH 以上のパスを取得する方法が 実は使えないとか?
926 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:14:50 ] >>438 セットアップファイル群の中にそれらしいcabファイルがあるから、 VS2008が入ってない環境だと入るのかもしれない。
927 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:02:29 ] すげー亀レスだな
928 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:05:52 ] 最近のSDK typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM); 古いSDK (VC6付属) typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
929 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:25:55 ] 仕様変わったのか・・・。 何で INT_PTR にしたんだろう?
930 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:31:10 ] TRUEかFALSEを返すをかえす仕様なんだから、BOOLだったんだろ。 INT_PTRにかえた理由は、64bitコードでは64bitにしたかったんじゃない?
931 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:23 ] せめて 32/64 を切り替えるような BOOL 型を導入するべきだと思うんだけどな。
932 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:35 ] TRUEFALSEっていうよりはなから0かそれ以外か負の数っていってほしい
933 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:34:29 ] 負の数はここでは関係ないと思うが。 GetMessage は別だが。
934 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:09:07 ] GetMessageは未だに使い方間違ってる例を見かけるなぁ
935 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:16:56 ] VS 2008 EE の 「Windows アプリケーション」のテンプレートでも >while (GetMessage(&msg, NULL, 0, 0)) 吐き出すんだけど
936 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:30:22 ] GetMessageって-1とかちゃんと見てないとアチョーなんだっけ?
937 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:31:30 ] 実はエラーなんて返さないのかもしれない・・・。
938 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:09:39 ] いまだにIEとかメモリ無くなるギリギリまで 複数インスタンス立ち上げると リソースがボロボロ欠けたウィンドウが開いて そのうち黙り込んで応答もしなくなって システム全体再起動しないといけなくなるのは IEの中のひとがメモリ確保時にエラーチェック してないからだと思うんだけどどう?
939 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:21:27 ] 100個近くWin95時代のブラクラ状態でIE立ち上げてもヌルヌルにはなるけどシステム落とすまでは逝かないぜ? 環境になんかヘンなもん突っ込んでるんじゃねーの?
940 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:36:41 ] デスクトップヒープの枯渇じゃないの。
941 名前:デフォルトの名無しさん [2008/03/02(日) 18:42:50 ] ここで質問させてください。 とりあえずC言語の基本を学んだので、ゲーム作りをしてみたいと思った のですが、Win32APIで1からゲーム作りをするのは効率が悪いのでしょうか? DirectXから学んだ方がいいのでしょうか?
942 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:45:42 ] どっちでもいいんじゃない
943 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:47:52 ] DirectX自体は、DXライブラリっての使えば簡単に扱えるよ。 ゲーム作りの本質と関係ないところは、既存のライブラリを利用するので充分。 俺に言わせて貰えば、ゲームみたいなシビアというか、ちょっと変わった処理が多いような場合は、 WinAPI直接叩く方が、やりたいことが直にやれるし、ベンキョにもなっていいと思う。
944 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:49:31 ] ある程度頑張ったら、 自分で全部やってみるのも勉強になると思う。
945 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:51:55 ] C++をやりながら、DirectX9か10をやるといい。 C++は使えないと困ることになる。
946 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:52:29 ] C で DirectX 使うのは面倒いからな。
947 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:00:37 ] C#のほうがいいと思う
948 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:01:20 ] 折角高速さを追求してるのに C++ 使わないのはもったいなさ過ぎる。
949 名前:デフォルトの名無しさん [2008/03/02(日) 19:06:08 ] レスありがとうございます。 C++は現在勉強中です。APIでもいろいろ出来そうなのでこれも並行して 勉強しようと思います。 それと最後に、Win32APIでは、PS2レベルの滑らかな3D描写は出来ないのでしょうか?
950 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:10:15 ] そもそも Win32API には 3D 描画機能が用意されてないから 全部ソフト的に対処する必要があるぜ。 要するに 3D 描画エンジンを自作するという。 しかもハードウェアの助けが得られないから遅い。 まあ、DirectX を通さずにグラフィックボードを直接操作するんなら話は別だが、 あまり意味がないよね。
951 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:12:47 ] これを見て勉強しる! www.geocities.jp/higuchuu4/index.htm
952 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:16:00 ] >>950 OpenGLがあるじゃないか 微妙な所だがChoosePixelFormatなんかはgdi32にあるからWin32APIということにする
953 名前:デフォルトの名無しさん [2008/03/02(日) 19:29:29 ] DIRECTXはマニアがやってたハードを解析して最大限の性能を引き出す というのをMSが肩代わりしてくれる仕組みだ winAPIでは3Dは無理
954 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:45:52 ] こんなのもあるよ DarkGDK www.microsoft.com/express/samples/GameCreators/
955 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:59:43 ] >>953 全角厨キモイ
956 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:02:36 ] 全角だけでなく、大文字小文字も無茶苦茶。 3 は半角で D が全角だったりも。
957 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:59:59 ] 少し話題に上ったので GetMessage() の戻り値の話をさせてください。 どうやら GetMessage() で -1 が返るのは、引数が無効な値の場合に 限られるようです。つまり msg を MSG 構造体とすると、 (A) GetMessage(&msg, hWnd, 0, 0); (B) GetMessage(&msg, NULL, 0, 0); (A) では -1 かどうかのチェックをした方がいいですが、(B) のような より一般的なケースではチェックは不要ということになります。 なお、MSDN に載っているのも (A) に対する警告と思われます。
958 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:01:04 ] なるほど。
959 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:30:44 ] でもそれはFor exampleとして載っているだけであって それ以外ないとは書かれていないわけで
960 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:15:16 ] >>957 参考になったが >>959 という意見もあるし結局どっちなんだろう
961 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:24:28 ] 俺は心配性だから常に-1が返ってくる可能性があると思っている。
962 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:27:35 ] そもそも"handle the error and possibly exit"って具体的にどうすればいいのやら・・・ 問答無用でbreakするようなコードだとWM_DESTROYを通さないから色々リークするだろうし、 WTLはcontinueしてるけど、毎回-1が返ってくるような状況だとループから抜け出せないし 正直-1の場合は無視でいいとオモタ
963 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:31:29 ] リークとか気にしないでreturnしています。
964 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:35:23 ] とりあえずGetLastError()だけどっかに吐いてから即死します。
965 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 12:59:40 ] なんで誰も>>915 〜>>932 の件の正解を書かない? 一例として、WM_CTLCOLOR*** は「HBRUSHを直接返さなければならない」(DWL_MSGRESULTは禁止) だから64bitはINT_PTRじゃなきゃまずいんだよ。 HBRUSHの中身が64bitになる実装は存在しないとかいうのは無しね。 If the dialog box procedure processes a message that requires a specific return value, the dialog box procedure should set the desired return value by calling SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) immediately before returning TRUE. Note that you must call SetWindowLong immediately before returning TRUE; doing so earlier may result in the DWL_MSGRESULT value being overwritten by a nested dialog box message. The following messages are exceptions to the general rules stated above. Consult the documentation for the specific message for details on the semantics of the return value. WM_CHARTOITEM WM_COMPAREITEM WM_CTLCOLORBTN WM_CTLCOLORDLG WM_CTLCOLOREDIT WM_CTLCOLORLISTBOX WM_CTLCOLORSCROLLBAR WM_CTLCOLORSTATIC WM_INITDIALOG WM_QUERYDRAGICON WM_VKEYTOITEM
966 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:28:18 ] だったら BOOL を INT_PTR にするという選択肢もあったはずでは わざわざ 64-bit 対応の為に関数宣言を書き換える必要があるなんて馬鹿げている
967 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:36:16 ] 大量に使われているBOOL(ほとんどは1ビットで足りる用途)を根こそぎ64bitにしたらそれこそ無駄だろうに
968 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:49:14 ] ダイアログプロシージャと違って、こっちが実装する関数ではないけれど、 VirtualAllocとかにも、大きさを指定する引数(今はSIZE_T)が 以前はDWORDだったとか似たような事例は他にもあるな。
969 名前:デフォルトの名無しさん [2008/03/03(月) 14:00:34 ] 猫でものページの第123章 メモリマップト・ファイルのソースをコピペして 実行したんですが「ファイルマッピングのオープン失敗」のメッセージが出て 最後まで実行できませんでした。どこが悪いのでしょうか教えてください。 ソースのページは www.kumei.ne.jp/c_lang/sdk2/sdk_123.htm でコピペして実行したcppファイルもあげときます kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6115.txt すいませんが教えてください
970 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:04:35 ] IDM_READ呼ぶ前にIDM_WRITE呼んでるのか?
971 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:53:13 ] >>967 つ bool / BOOLEAN
972 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:05:23 ] >>971 APIが使ってるBOOL書き換えてどうするんだよw
973 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:16:02 ] >>972 何が言いたいのかよく分からん そもそも引数や返値を int 型からポインタ型 (INT_PTR) に置き換えても何ら無駄にはならない
974 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:47:44 ] しいて言えばスタック使用量倍増?
975 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:00:23 ] 戻り値はレジスタだろうからスタックは使わないんじゃない?
976 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:10:57 ] 引数もWin x64 ABIではスタックアクセスは64bit単位じゃなかったっけ? 何れにしろREXプレフィックスでコードサイズは変わるかも
977 名前:デフォルトの名無しさん [2008/03/03(月) 16:48:39 ] Win32 API のヘルプとか網羅的なマニュアルなど、入手先はどこですか …
978 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:51:15 ] >>977 >>1-2 にもリンクがあるMSDNライブラリがそれ。
979 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:27:32 ] >>975 それを変数に格納するってことじゃない?
980 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:39:39 ] リソースのアイコンのバイナリを読み込んでchar[]型の配列に代入するにはどうすれば良いですか?
981 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:42:46 ] LockResourceとかかな
982 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:33:40 ] MENUITEMINFO mii; ZeroMemory(&mii,sizeof(mii)); mii.cbSize=sizeof(MENUITEMINFO); mii.fMask=MIIM_FTYPE; mii.dwTypeData=L"ファイル"; HMENU menu=::CreateMenu(); ::InsertMenuItem(menu,0,0,&mii); ::DrawMenuBar(hwnd); ちゃんとウィンドウ表示してからこれしたらメニュー表示されない・・・なんで?
983 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:35:02 ] SetMenuは?
984 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:36:08 ] ベジエ曲線で囲んだ内部を塗りつぶしたいのですが無理ですか? 教えてくだちい><
985 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:42:30 ] 囲まれた図形の内部の座標に対してExtFloodFill