1 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:23:58 ] スレ立てるまでもない、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質問箱 Build68 pc11.2ch.net/test/read.cgi/tech/1215348804/
232 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:35:03 ] 昔と違って3万もあればVS2008std買えるからいい時代になったな。SDKはネットで簡単に入手できるし。
233 名前:226 mailto:sage [2008/08/09(土) 01:54:53 ] >>232 VS2003ProとVS2005Proが学生の時にtheSpoke版が4kで買えて衝撃的だったんだが 今はDreamSparkなんてやってるんだよなぁ もうMSが何をしたいのか分からなくなってきた・・・
234 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:56:42 ] 市場を独占気味にしたい
235 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:58:45 ] Borlandが社名変えたり戻したりしてる間に既に市場独占してただろ
236 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:05:21 ] いくら無料で手に入る時代でもやっぱ金かけないとダメでしょ AC版でも学生がン万円出すのはそれなりにしんどいし、 そうして手に入れれば「よし頑張るぞー」って気持ちになれる
237 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:07:55 ] 逆を言えば物にならなかった時に無駄になるのが嫌で 手を出せなかったという人もいるんだろうけどなー 元々そんな奴は物になんねーよと言う意見は取り合えず置いといて
238 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:07:58 ] うん、君はそうしとけばいいよ。
239 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:15:31 ] 無料配布なんて貧乏人救済システムは要らない ただでさえ無職ニートが多いこんなご時世に「いつかシェアウエアでガッポリ儲けてやる」とか つまらない夢を抱く馬鹿が増えるだけ
240 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:33:40 ] 増えたところで俺には関係ない その馬鹿と同じ次元に居る奴にはつらいのかもしれんが
241 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:35:48 ] 馬鹿で悪かったな もう死んでも治りそうに無いよ
242 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:49:43 ] 馬鹿は馬鹿なりに前向きに生きればいいだろ
243 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:56:59 ] もういいから
244 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 10:57:28 ] 1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------ 1>リンクしています... 1>7.obj : error LNK2019: 未解決の外部シンボル __imp__timeGetTime@0 が関数 _ThreadFunc@4 で参照されました。 1>C:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。 1>ビルドログは "file://c:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm" に保存されました。 1>test - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== このエラーはどうやって直すんですか;;? msimg32.libはリンカから追加しました。
245 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:03:14 ] >>244 winmm ってライブラリは無い?
246 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:22:33 ] >>245 追加したらできました ありがとうございます
247 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:23:37 ] 環境スレ行けよ…
248 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:29:07 ] 行きたきゃお前が逝けよ
249 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:12:25 ] >>247 貴方の気分を害したことを謝罪いたしますと同時に遺憾の意を表します。 誠に申し訳ございませんでした
250 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:35:53 ] 慇懃無礼だな
251 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:12:19 ] __imp__timeGetTime@0 でググれば分かるけどな
252 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:41:06 ] テトリスやブロック崩しくらい作れないとWin32APIの基礎を 覚えたとは言えませんか?
253 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:46:17 ] うん。
254 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:47:48 ] テトリスやブロック崩しはアルゴリズムのほうがメインになるからWin32APIとは関係ない
255 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:48:00 ] テトリスやブロック崩しなんて、大半がゲームロジックでほとんどAPI使わないだろ。 ペイントの方が一通りの要素が揃っている。
256 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 17:04:30 ] ペイントなんて、大半がペイントロジックでほとんどAPI使わないだろ。
257 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:21:15 ] GDIの基本操作を学ぶには良いんじゃないか? 傾斜・反転・回転以外はほぼGDIに丸投げっぽいし。
258 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:44:39 ] >>250 どうして慇懃無礼なんでしょうか?
259 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:47:59 ] >>250 俺のダチが世話になったな 今度群馬こいいい所紹介してやるからよ
260 名前:デフォルトの名無しさん [2008/08/09(土) 21:08:00 ] ID出んから言いたい放題 わろす
261 名前:デフォルトの名無しさん [2008/08/09(土) 21:53:00 ] 質問です。既定のブラウザから例として「ぬるぽ ガッ」という検索結果のページをボタン一発で表示させたいのです。 詳しく言うと、 @プログラムのボタンを押す A既定のブラウザで「ぬるぽ ガッ」という検索結果のページがブラウザが起動して結果が表示される といった具合のものを作ろうと思っています。 既定のブラウザの取得方法は、 ://www.atmarkit.co.jp/fdotnet/dotnettips/652getdefaultbrowser/getdefaultbrowser.html でできましたが、その他ができません。 知恵を貸して頂けないでしょうか?
262 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:57:36 ] つ【俺の知恵】
263 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:57:54 ] うるちえ
264 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:59:29 ] www.atmarkit.co.jp/fdotnet/dotnettips/211startmail/startmail.html こっちの方法でやればいいじゃんていうか.NETじゃん
265 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:59:46 ] >>261 ShellExecute
266 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:04:39 ] >>261 #include<windows.h> int main(){ ShellExecute(NULL, "open", "www.google.co.jp/search?hl=ja&q=%E3%81%AC%E3%82%8B%E3%81%BD+%E3%82%AC%E3%83%83&btnG=Google+%E6%A4%9C%E7%B4%A2&lr= ", NULL, "", SW_SHOWNORMAL); return 0; }
267 名前:デフォルトの名無しさん [2008/08/09(土) 22:06:16 ] >>264 参考ページが.NETでしたね。 私の言語はPASCALです。 >>265 function ShellExecute(hWnd: HWND; // 親ウィンドウのハンドル Operation : PChar // 操作 FileName : PChar // 操作対象のファイル Parameters: PChar // 操作のパラメータ Directory : PChar; // 作業ディレクトリ ShowCmd : Integer)// 表示状態 : HINST; ここでは操作がopen、ファイルがレジストリから取得したブラウザファイル、どこにそのアドレスを入れるのでしょう?
268 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:06:32 ] >>266 クエリストリングのbtnGとか要らないんじゃね?
269 名前:デフォルトの名無しさん [2008/08/09(土) 22:07:13 ] >>266 っと私が打ち込んでいる間に・・・具体的なコードありがとうございます。 さっそく解決してしまいました。 ありがとうございました。
270 名前:デフォルトの名無しさん [2008/08/10(日) 09:23:59 ] .NET に PictureBox というコントロールがあるのですが これを VC++ で表現するならば コントロール上にビットマップイメージを貼ってるだけに相当するんでしょうか? よろしくお願いします
271 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 10:03:23 ] >>270 Win32だとStatic Controlに相当するな。 IDEのダイアログエディタだと「Picture Control」と表記されているが、 これはダイアログリソース上の表現で、結局はStatic Controlが生成される。
272 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 11:24:30 ] >>271 ありがとうございます Static Control にスタイルが SS_BITMAP って感じですね
273 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:19:38 ] SendMessageTimeoutの引数であるpdwResultと SendMessageTimeout関数自体の戻り値に違いは出るのでしょうか? お願いします。
274 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:21:46 ] 違いは出ます。意味が違いますから。
275 名前:273 mailto:sage [2008/08/10(日) 21:24:47 ] >>274 具体的にどういった違いなのでしょうか? MSDNなどの資料には同じようなことしか書かれてなくて・・・ 参考URLの掲示でもかまわないのでお願いします
276 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:29:03 ] >>275 lpdwResultはSendMessageの戻り値相当じゃないか。 MSDNより lpdwResult 1 個の DWORD 型変数へのポインタを指定します。関数から制御が返ると、この変数に、メッセージの処理結果が格納されます。意味は、送信したメッセージにより異なります。 戻り値 関数が成功すると、0 以外の値が返ります。 関数が失敗した場合や、タイムアウトが発生した場合は、0 が返ります。
277 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:29:13 ] >>275 SendMessageTimeout の hwnd に無効なハンドルを入れた場合など
278 名前:273 mailto:sage [2008/08/10(日) 21:31:23 ] >>.276-277 なるほど納得がいきました ありがとうございます
279 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:32:13 ] >>275 pdwResultは送ったメッセージに対する戻り値。 メッセージを送った先のプロシージャが返した値。 SendMessageTimeoutの戻り値は、SendMessageTimeoutそのものの結果。
280 名前:デフォルトの名無しさん [2008/08/11(月) 11:06:58 ] RegisterClassExで作ったウィンドウクラスが有効かどうかを判定するAPIを教えてください
281 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 11:19:08 ] つ RegisterClass(Ex) の戻り値 つ GetClassInfo(Ex) で取得
282 名前:デフォルトの名無しさん [2008/08/11(月) 13:52:41 ] 直接画面DCには描画せずにバックグランドのDCを介して描画する. 1行または複数行,描画する場合はバックグランドDCに必要な文字を描画してから 画面を無効にしてWM_PAINTでBitBltを使い描画させる. のバックグラウンドDCとは何を指してるのでしょうか? 直接画面DCに描画するのと、バックグラウンドDCを介して描画するのとでは どのような違いがあるのでしょうか?
283 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 13:57:47 ] それを書いた奴に聞けよ
284 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 14:08:40 ] メモリDC
285 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 14:34:55 ] >>283 掲示板の過去ログに載っていたので聞きようがありません。 >>284 今から調べてきます
286 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 15:54:00 ] ダブルバッファ とかそういう話か? ちらつき防止でやってるだけ 直接DCに描画だと 消しているトコロ も目に見えちゃうからチラツク
287 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:45:18 ] GdiSetBatchLimitを上げればいいんでねーの?
288 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:36:18 ] >287 全然違うんじゃね? GDI関数呼び出しをまとめて性能を上げるのと、一連の描きかけの絵を バックバッファに描画しておいて描き終わったら前面をInvalidateRect して(=WM_PAINT発生)からバックバッファから一気に転送(BitBlt) するのでは見え方が違う。 >286 の言ってることが正解。さらに描画を1シーケンスで完了できない場合、 描画中の絵が見えないと言うメリットもある。 性能向上の方式ではないので性能あげたいならInvalidateRectの 範囲を描画更新したい場所に限定する必要があるし、そういうの やりたいならGDIでなくDirectXで物理サーフィス×2面のFlipで やるのが普通。
289 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:15:07 ] てか消してるところが見えるって何世代前のPCだよw
290 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:17:56 ] 最新のPC
291 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:32:57 ] >289 最新のPCであっても、GDI関数で描画する時間は人間の一生のような 長い時間ってことが分からない素人かw 消しているトコロがリアルに人間に分からないように処理するには 液晶とグラボの垂直同期周期が60Hzとして、16.6666...msec 以内に 一連の描画処理を完了する必要があるけど? もちろん一度もVSYNC跨がずに、だ。
292 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:24:41 ] 一連の描画処理が16ms以上かかるってどんだけ重い描画なんだよ
293 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:30:17 ] でも、次の画面更新タイミングまでが偶々1msだったら・・・?
294 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:40:15 ] そんなの気にしなくていいよ、今時GDIなんてせいぜいコントロールの描画ぐらいしか使わないんだから Windows標準のコントロールだって物によってはダブルバッファリングされてなくてちらつくけど誰もそんなの気にしてないし
295 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:42:13 ] >292 かかるでしょ。 ・そのプロセスのプライオリティより高いスレッドやカーネルでの より優先度の高い処理が行われる場合。 ・そのプロセスのプライオリティより低いスレッドが一定周期で ダイナミックブーストされる場合。 ・そのプロセス自身が描画処理中に、HDD等の単一リソースにアクセスした場合。 ・例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに、 DMA転送が使えなかった場合。 ・使えたとしても、メモリと他のデバイス間で先にDMA転送の帯域を食いつぶされていた場合。 いくらでもある。292がMS-DOSでシングルタスクのプログラマか、カーネルの設計者と いうなら謝るよ。ここWin32API質問箱なので勘違いしてた。 293は「もちろん一度もVSYNC跨がずに、だ。」を読み取ってくれたね。
296 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:44:45 ] もういいよ > 例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに 今時こんな描画にGDIなんて使わない アンタだって暗にそう言ってるじゃん > GDIでなくDirectXで物理サーフィス×2面のFlipでやるのが普通。
297 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:53:08 ] >>295 こういうKYがいるとテスト工程が無駄に増えるよなw
298 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:00:55 ] >>297 そうやってシステム見られない自称SEもいるね。 手戻り工数増えるんだよなw 後になって性能が出ない時に言い訳しないようにね。
299 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:09:35 ] 文章から加齢臭がものすごいんですが・・・
300 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:11:58 ] WPF使えばちらつきなんか無縁
301 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:21:40 ] とっととCからWPF使えるようにしろと
302 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:25:25 ] つ MC++
303 名前:デフォルトの名無しさん [2008/08/12(火) 00:25:46 ] ListViewのレポート形式で、表示領域が足りなくて 省略されて表示されているとき(例えば、あいう...)に、 その文字の上にカーソルを持っていくとツールチップが 表示されますが、これを無効に設定することはできない のでしょうか?
304 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:36:49 ] >>303 出来る。
305 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:46:45 ] LVS_EX_INFOTIP,LVS_EX_LABELTIPあたりじゃない?
306 名前:デフォルトの名無しさん [2008/08/12(火) 01:26:44 ] >>305 だと思うのですが、参考になるプログラムが 見つからなくて...
307 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 01:27:28 ] フラグの説明読んで書いてみりゃいいだろ なんで自分から動こうとしないんだよ
308 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 01:28:02 ] >>306 普通にググれば見つかるのだが
309 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 10:19:12 ] LVS_EX_LABELTIP Version 5.80. If a partially hidden label in any list view mode lacks ToolTip text, the list-view control will unfold the label. If this style is not set, the list-view control will unfold partly hidden labels only for the large icon mode. 別に複雑な操作がいる訳でもなし このくらい試してみようぜ
310 名前:デフォルトの名無しさん [2008/08/12(火) 10:57:03 ] CS_OWNDCにしたときに増えるメモリってどれくらい? 猫でもをみたらちょっとだけメモリを消費するって書いてあったけど タスクマネージャを見たけどあんまり変わってないっぽいけど
311 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 11:38:05 ] 見たまんまだ 確認したならそれを受け入れろ
312 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:35:46 ] 640KBで動く時代からあるAPIdsと説明がそういう風になることもあるw
313 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:40:12 ] TextOut関数で背景を部分的に変える関数等ありますでしょうか?
314 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:00:59 ] たかだが背景色だけ変えるなら SetBkMode で OPAQUE 指定 { SetBkColor して TextOut } を変えたい単位で分割呼び出し 複雑な背景をどうこうしたいなら SetBkMode で TRANSPARENT 指定 先に背景を描画しきって TextOut
315 名前:デフォルトの名無しさん [2008/08/12(火) 15:58:29 ] ShowWindowをAdvancedWindowsのやつでAPIフックしたらアドレス違反になるんだけどなんで?? 全プロセスにDLLにして注入ではなく、自プロセスのフックのみでやってる。適当なexeにDLLにして注入してもやっぱり違反。 他のAPIはフックできてる。環境はBCBなんだけど。
316 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 19:08:36 ] WriteProcessMemoryでやれ。権限もクリアしていて、それでできなきゃアドレス間違っている。メモリ覗いて確認しろ。
317 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:00:27 ] >>316 俺VirtualProtectでやってるんだけど WriteProcessMemoryのほうがいいわけ?
318 名前:317 mailto:sage [2008/08/12(火) 20:01:46 ] >>315 その事象で俺が経験した事といえばスタックオーバーフロー
319 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:38:48 ] どうせエラー値確認していないんだろ
320 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:30:16 ] アドレス違反で落ちてたらエラー値も何も無いだろ
321 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:58:43 ] だから何でVirtualProtectのエラーチェックしないの?ゆとり?
322 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:01:10 ] 書き込みでAVになるか、書き換えた関数が呼ばれた時例外発生するか質問者ははっきりさせないといかんな。
323 名前:317 mailto:sage [2008/08/12(火) 22:09:50 ] >>321 俺別にエラーチェックしてないとは一言も言ってないんだがwwwww >>320 の言ってる通りアドレス違反で落ちてるんだから・・・・・ 多分だけどやっぱ>>315 はスタックオーバーフローしてるんじゃない? GetProcAddressもあわせてAPIフックしてるならその辺を睨んだ方がよさげ つーかコード掲示するかAdvancedWindowsのページがわからないと これ以上なんともいえない
324 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:27:47 ] 呼び出し規約かw
325 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:19:47 ] Ollyか何かで追跡してみれば
326 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:24:58 ] エディットコントロールの文字列選択の処理ってどうなっているのですか? どうやって選択範囲を計算してるのですか?
327 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:37:19 ] GetTextExtentPoint
328 名前:315 mailto:sage [2008/08/13(水) 12:55:18 ] コードも例外発生の場所も書いてなくてスマン。 なのに原因を見抜けるってのはもうすげぇな、感謝!例外は置き換えた関数が呼ばれたときにおきてた。 きちんとstdcallだってのを置き換え関数で宣言したら、うまく動くようになった。 BCBとかdelphiは標準だとcdeclとかfastcallとかだったっけ。 とにかくみんなサンクス!!
329 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:10:46 ] >>327 キャレット位置をどうやって計算しているかわかりますか?
330 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:26:17 ] 一文字ずつ幅を足していく
331 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:34:53 ] WM_LBUTTONDOWN クリック位置x.y座標取得 GetTextExtentPoint32関数で得られた文字列のサイズと比較していく、って事ですか?
332 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:09:19 ] GetTextExtentExPointを流用してもいいけど