[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 14:14 / Filesize : 234 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build53



1 名前:デフォルトの名無しさん [2007/05/11(金) 20:27:08 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

321 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:42:31 ]
>>320
>自分でDNSプロトコル話すしかないですかねorz

そういう事じゃマイカ?Windowsのリゾルバは糞って有名な話で
dnsapi.dll使う前提なら無理。




322 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:45:58 ]
>>294の参照しているのは、2005付属のもので、
最新のWindowsSDKでは宣言が多少変更されたっぽいな。

で、aipServersの所は予約パラメータ扱いに変更されている。
対応するつもりが、面倒で放置したって感じか。

323 名前:名無し@沢村 [2007/05/25(金) 05:34:10 ]
256色の画面をクリップボードにコピーして、コピーや貼り付けがしたいのですが、
どのようにすればいいかわかりません。
誰か詳しく教えてくれませんか?

324 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 08:13:10 ]
>>323
クリップボード側の話は
ChangeClipboardChain関数, CloseClipboard関数,
CountClipboardFormats関数, EmptyClipboard関数,
EnumClipboardFormats関数, GetClipboardData関数,
GetClipboardFormatName関数, GetClipboardOwner関数,
GetClipboardViewer関数, GetOpenClipboardWindow関数,
GetPriorityClipboardFormat関数, IsClipboardFormatAvailable関数,
OpenClipboard関数, RegisterClipboardFormat関数,
SetClipboardData関数, SetClipboardViewer関数,
などの関数で操作する。

あとそれに合わせてWM_COPYなどがある。
ミソはSetClipboardData関数ですかな?

325 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 10:03:00 ]
256色だとパレットも持ってこないとな

326 名前:294 mailto:sage [2007/05/25(金) 11:32:09 ]
皆様レスありがとうございます
特に>>317の記事大変参考になりました。
DLLをわざわざ開発するくらいですからAPIでは無理ですね。

BIND(dig,host,nslookup,...)のソースなどを参考に時間があるときにでも作成したいと思います。

327 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:15:08 ]
読み込み違反ってどんな時に起きるんでしょうか?
LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、
「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。

328 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:19:40 ]
まさにぬるぽ

329 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:24:14 ]
>>327
デバッグしろよ

「作ったソフトがまともに動きませんどうしてでしょうか?」
みたいな質問が多いけど情報は少ないし、しかもスレ違い



330 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:43:54 ]
とりあえず、APIと関係なさそうなのは間違いない感じだなw

あれじゃね?
渡さなきゃいかん値をNULLで渡してるとか。
渡してるつもりになってる変数が0でしたとか。

331 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:48:23 ]
>>327
> そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。
どういう意味?
引数の数が一つで、4種類の値しかとらないってこと?
それとも、DLLが複数の関数をエクスポートしていて、
引数が3つのやつは成功するけど、4つのは失敗するってこと?

332 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:31:40 ]
>>327
わんわん わわわん わんわん わん?
(関数ポインタの宣言がおかしいじゃね?)

333 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:30:13 ]
>>327
その「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
という分かりやすく簡潔なメッセージの何がわからないのか書いてもらわないと・・・

「アドレス」の意味が分からないとか?

334 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:37:12 ]
メッセージが分からないとは書いてないぞ

335 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:46:51 ]
じゃあこれでいいだろ

問い
>読み込み違反ってどんな時に起きるんでしょうか?

答え
「アドレス 00000000 に対する読み込み」を行ったとき、等。

336 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:48:52 ]
( ゚д゚)ポカーン

337 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:50:46 ]
OSが保護している領域に書き込んだ時
「そのアドレスはらめぇ」とWinに言われてる

338 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:53:24 ]
読み込みエラーの話をしているのに書き込みの話をし出す馬鹿。

339 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:56:27 ]
馬鹿馬鹿言うしか能のない馬鹿。



340 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:12:10 ]
OSが保護している領域を読み込んだ時
「そのアドレスはらめぇ」とWinに言われてる

341 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:12:11 ]
まぁたぶん今回のはコールバック関数のアドレスとして NULL を渡したとか
なんかそんなことだろうね。IP もゼロだし。

342 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:44:07 ]
>>341
IP???????????

343 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:50:44 ]
>>342
Instruction Pointer。どこのコードを実行するかを格納しているレジスタ。
「アドレス 00000000 で」の部分が当該コードのアドレスを示している。

それはともかくとして、Win32 とかいう以前の話ばかり・・・
レベル低すぎだろいくらなんでも。
この板には初心者スレとか無いのか?

344 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:55:26 ]
たくさんあります

345 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:04:59 ]
>>343
レベル低いのはお前の方では?
コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
レベルの低い奴はレベルの低い事しか考えられないと思われても仕方ない。

346 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:10:02 ]
tabcontrolってデフォルトでフォーカスの四角を表示しない機能って
ありませんでしたか?

もしあったら教えてください。

347 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:18:05 ]
>>327
>読み込み違反ってどんな時に起きるんでしょうか?
>LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、
>「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
>となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。

とりあえず、考えられるのはこんなとこか?

考察1.まず、LoadLibraryの戻り値はちゃんと値が入っている?
考察2.Unicode版,ANSI版の関数名の問題
     引数に文字列を要求している場合はGetProcAddressには明示的に指定しないいけない。
     CreateFile→ANSI版はCreateFileA, Unicode版はCreateFileW
考察3.GetProcAddressの戻り値のキャスト先の問題。
     多分>>332のわんこが云う様にGetProcAddressの戻り値FARPROCの代入先が不完全で、
     関数コール時できてない。
考察4.引数が3つの関数と引数が4つの関数は同一ライブラリなのか?
     例えばLoadLibraryの実験で、
     一般的な引数3つの関数(Kernel32.libのCopyFile関数)で確認したが、
     引数4つのFloodFill関数は未チェックでKernel32.libをGdi32.libに直してない。
考察5.ライブラリの位置が巧く取得できてない。
考察6.実は、呼び出し元のアプリケーションはVBで、巧くDeclarできてない。

348 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:20:52 ]
僕バッカー!

349 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:22:36 ]
>>346
スタイルのTCS_TABSを外す



350 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:22:51 ]
>>345
>コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
おそらくそこまでも行っていないレベルの話だと思われ
NULL をコールしてるんだよね、たぶん。

351 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:25:54 ]
DLL自作なのかな?

352 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:29:06 ]
>>346 TCS_FOCUSNEVER ?

353 名前:名無し@沢村 [2007/05/25(金) 21:40:29 ]
画面の描画プログラムで、hdcの互換メモリデバイスコンテキストmemdcとmemdc2をつくり、
memdcのほうに黒い線、memdc2のほうに赤い線を描いて、それらをhdcにコピーして
表示するプログラムをつくったんですが、何故かmemdc2のほうの赤い線がWM_PAINTが
送られると消えてしまうんですが、どこが悪いのでしょうか?
プログラムはまったく同じようにmemdcとmemdc2の描画とコピーを並べて書いたんですが…?

354 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:44:35 ]
memdcとmemdc2をSRCPAINTにしてないとか

355 名前:デフォルトの名無しさん [2007/05/26(土) 01:08:52 ]
MeteredSection
・パフォーマンスはCriticalSection並で
・セマフォの様にカウンタもあり
・win9x,NT,CEで使える
というステキな同期機構があるようなんですが、

MeteredSectionを作成する関数
CreateMeteredSectionをググっても(日本語)
ヒット数が数件しかありません

これは一般には使われてないんでしょうか
だとしたら理由はなんでしょう

356 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:14:54 ]
そんなに必要じゃないからだろ マイナーだし

357 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:15:52 ]
>>355
単純にみんなが知らないだけだと思われ。
ってか、自分もはじめて知った

358 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:22:24 ]
>>355
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndllpro/htm/metrsect.asp

マイナーなだけ。
知ってる人は知ってる。

359 名前:デフォルトの名無しさん [2007/05/26(土) 01:50:48 ]
唐突な質問すみません。
WAVファイルが使用されているかどうかをチェックするにはどうすればいいでしょうか?



360 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:02:34 ]
アクセス日時でも調べたら?

361 名前:デフォルトの名無しさん [2007/05/26(土) 02:09:16 ]
使用とはつまり今使用中なのかどうかを調べたいのですが、

362 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:13:31 ]
そのWAVファイルをごみ箱に投函。

入ってくれなければ使用中。以上

363 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:26:09 ]
さうんどどらいばにおくられているはけいがそのわヴのものならしようちゅう。いじょう。

364 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:31:54 ]
スレ違いでしたら誘導をお願いします

CreateProcessで作成したプロセスを安全に終了させたいと思っています。
メッセージループを持っているプロセスならWM_CLOSEで事足りるのですが、コマンドラインアプリケーションの場合はどうすればいいのでしょうか?
たとえばpingの場合control-Cを送れば終了できるんじゃないかと思い、パイプを作成してETXを送ったのですが終了できません。
また、command.comのプロンプトはCR(control-M)でちゃんと改行と処理されるのですが、パイプを通した場合はLFCRを送らなければ認識されません。
パイプの処理に関して何か根本的な勘違いをしているのでしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:42:52 ]
>>364
どういう使い方してるの?
ウチの環境ではpingし終わったら勝手に閉じるけど?

366 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 05:59:02 ]
command.comってことは98・・・か・・・?

367 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:50:30 ]
>>364

support.microsoft.com/kb/190351/ja

まず、ここのサンプルを試してみ

368 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 10:16:56 ]
シグナルを送るんだよ

369 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:05:33 ]
>>364
安全に終了させる汎用的な方法は無い。
WM_CLOSEで終了したとしても、それが正規な終了方法でないアプリがあるかもしれない。
結局各アプリを解析して、個別の対応を採らなければならない。



370 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:08:36 ]
ウィンドウクラスのとこで
winc.hIcon = LoadIcon(NULL , (LPCSTR)IDI_ICON2);
で、アイコンを指定しているのですが、何故かふきだしに i マークがついたアイコンになります。
リソースに自分で作成したICONを追加もしているのですが、何か上の式は間違ってるのでしょうか?

371 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:18:46 ]
>>370
MSDNで第一引数の説明を調べるんだ

372 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:37:37 ]
>>371
ああああありがとうございます(泣)
NULLをhInstanceにしたらアイコンが変わりました!
ぬるぬる

373 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 12:07:52 ]
ぽぽ

374 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 13:26:33 ]
>>364
GenerateConsoleCtrlEvent

375 名前:364 mailto:sage [2007/05/26(土) 19:25:12 ]
>>365
現在親プロセスからコマンドラインアプリケーションを起動して標準出力を拾っているのですが、親プロセスを終了したときにそのコマンドラインアプリケーションを安全に終了させたいのです

>>367
拝見したところパイプの接続は私のテスト環境と同じようで、子プロセスの終了も親からでは無くping同様に子プロセスのChild.EXEが勝手に終了するのを待つだけのようでした。

>>369
起動させるプロセスは限られていますので私も個別に対応したいと考えています
たとえばCOMMAND.COMならば'EXIT'を送れば終了でき、pingならばctrl-Cで終了できるはずです。
しかし前者は成功するのですが、後者は失敗しました
パイプでは制御コードを送れないってことはありませんか?

376 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:35:47 ]
>>364
ちょっ話変わるけど、
コンソールリダイレクトの想定先は何?
例えば、コンパイラのキッカーみたいなもの?
バッチ処理の結果を取得したい為?

377 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:35:53 ]
自作アプリケーションにXPスタイルを適用しつつ
一部のコントロール(ステータスバーなど)のみをXPスタイル以外ってできないのかな?

378 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:01:01 ]
>>377 SetWindowTheme

379 名前:355 mailto:sage [2007/05/26(土) 20:15:21 ]
>>356
>>357
>>358
ありがとうございます

MSDNの記述を読む限り、とても有用な機能だと思ったんですが
何でマイナーになってるんでしょうね・・・



380 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:22:20 ]
>>379
強いて言えば、無くても作れるからかも
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_metrsect.asp

381 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:33 ]
>>379
自分で作らにゃならんし、メンテナンスや互換性を考えると面倒くさいからでしょ

382 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:36 ]
>>379
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1437677&SiteID=7
MeteredSectionってもともとはAPIじゃなくて
あるユーザーが勝手に作ったものみたい。

383 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:04:50 ]
>>375
>>374は無視ですか。パイプを作ってCtrl-Cを送る必要自体ないと言ってるんだけど

384 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:13:22 ]
>>383
心配しなくても無視されないよ。
パイプを作ってCtrl-Cを送ってもどうせ効かないから。

385 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:32:05 ]
逆にパイプのデータ経由で死ねるなら、
パイプはバイナリデータを送れない、という話になる

386 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:33:25 ]
その理屈はおかしい

387 名前:デフォルトの名無しさん [2007/05/26(土) 23:57:14 ]
ドラッグドロップとImageListについて質問です。

DropTargetの側で
ImageList_BeginDragやImageList_DragMove等のAPIを使って
ドラッグ中の画像を作るのは邪道でしょうか?
実際動いてはいるんですが。
やはりDropSourceの方でやるものなのでしょうか。

あと一つ、
ImageList_BeginDragで始まったあとに
表示されている画像を変更することはできないんでしょうか。
ImageList_Replaceは動作しませんでした。


388 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:11:18 ]
ども。>>364です

>>376
ちょうどそんな感じです

>>383
ご指摘ありがとうございます。完全に見落としていました

>>374
私が探していた方法はまさしくコレです
コマンドラインアプリケーションにもちゃんとExitProcessが標準で実装されていたんですね
プログラム側で入力シーケンスを監視してctrl-C信号を拾っているんだと思っていました
色々とありがとうございました。

389 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:23:29 ]
>>388
だからシグナル送れといっとるだろうが



390 名前:387 mailto:sage [2007/05/27(日) 00:39:55 ]
自己解決しました。
同スレッドからD&Dされると挙動不審になるみたいです。
別スレッドからなら(一見)問題ないみたいですが。
止めることにしました。


391 名前:デフォルトの名無しさん [2007/05/27(日) 02:35:12 ]
猫でもわかるプログラミングってどこにあるんですか?

392 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 02:36:22 ]
「猫でも」でぐぐれ

393 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 06:26:12 ]
本屋に有る

394 名前:名無し@沢村 [2007/05/27(日) 08:40:17 ]
hdc=GetDC(hwnd);

memdc=CreateCompatibleDC(hdc);
memdc2=CreateCompatibleDC(memdc);
hBita=CreateCompatibleBitmap(hdc,maxX,maxY);

SelectObject(memdc,hBita);
SelectObject(memdc2,hBita);
PatBlt(memdc,0,0,maxX,maxY,PATCOPY);
PatBlt(memdc2,0,0,maxX,maxY,PATCOPY);

で、後にSelectObjectしたほうのmemdc2がうまく作成されてないようなのですが、
(hdcにコピーして再描画すると消えてしまうので)
memdc2をうまく作成するにはどうしたらいいでしょうか?

395 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 10:54:49 ]
ダイアログを、呼び出したアプリケーションのフォームの最前面に表示したいのですがどうすればよいのでしょう?
WS_EX_TOPMOSTや、SetWindowPosでHWND_TOPMOSTだと、他のアプリの前面にも出てしまいます。
あくまで呼び出したアプリの最前面にしたいのです。

396 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 11:04:26 ]
WM_OVERLAPPED & WM_CHILD & WM_POPUP

397 名前:395 mailto:sage [2007/05/27(日) 11:10:18 ]
失礼しました。
DialogBox関数の第3引数がうまく設定できていないのが原因でした。
お騒がせしました。

398 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 11:14:09 ]
>>394 そのSelectObjectは何かのギャグか?

399 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:17:07 ]
>>394
msdn.microsoft.com/library/ja/jpgdi/html/_win32_selectobject.asp?frame=true
> アプリケーションは、1つのビットマップを一度に複数のデバイスコンテキストで選択することはできません。



400 名前:名無し@沢村 [2007/05/27(日) 12:52:00 ]
>>399
つまり描画用のデバイスコンテキストを複数つくることはできないということですか?
ペイントソフトのアンドウリドゥとかはどうなっているんだろう?
メモリデバイスコンテキストを複数つくれば、そこにコピーして待避させておいて、簡単に実装できるんだけど…

401 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:54:49 ]
逆にビットマップを複数作ればいい

402 名前:名無し@沢村 [2007/05/27(日) 12:58:04 ]
私がつくりたいのは、
例えば赤と黒で画面に線を描画して、
あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…

黒い線と赤の線を別々のデバイスコンテキストに描画すれば簡単だと思ったんですがテ…

403 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 13:13:53 ]
操作履歴があるなら、それをもとに
「ファイルを開く」から復元できるやろうが。

404 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 13:19:52 ]
例えば、同じビットマップを複数のDCに選択できたとしたら、
片方のDCに書き込んだ内容はもう片方のDCでも同じ内容になるだけだが・・・

なんでビットマップを複数作ルことを思いつかないんだ?

405 名前:デフォルトの名無しさん [2007/05/27(日) 14:23:49 ]
熾烈な首位争いを繰り広げる、日本とハンガリー。
日本は現在ハンガリーに500万クリックほど差をつけているものの、
これで安心してはいけない。
我々のこれまでの最大クリック速度は8万〜9万回/分が限度だが、
ハンガリーはなんと13万回/分を叩き出した実績がある。
実際、1400万の差を一晩でひっくり返されている。

今はハンガリー時間で7時を過ぎたところ。
彼らの動きが活発になり始めるころだ。
おまけに月曜日は祝日だという確定情報もある。
今の戦力では心もとない、まだまだ戦力を募集中だ。

もはやVIPPERだけでは太刀打ちできない。
これはもはや、VIPの枠を超え、2ch全体で立ち向かう以外に勝機はない。
諸君の参戦を切に願う。

現行スレ
【首位奪還】一番クリックした国が優勝 Click82【天王山の決戦!!】
wwwww.2ch.net/test/read.cgi/news4vip/1180241158/

まとめサイト
www33.atwiki.jp/clickvip/


406 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 14:49:49 ]
>例えば赤と黒で画面に線を描画して、
>あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…

レイヤーのことだろうか?

407 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:23:17 ]
この手のは、BitBltをパワーアップさせて、転送先や転送元に、
HDCだけじゃなくHWNDやHBITMAPも渡せるような
関数を作っておくと楽かな。

408 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:36:53 ]
>>402
スレ違いの回答になるが・・・・
Undo/Redoをやりたいなら、ビットマップレベルで履歴を保存するより
描画内容(座標・色・線種など)で履歴を保存するほうがいいと思うよ。


409 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:42:42 ]
質問です。F1を押したときにある動作をさせたいのですが、
ウィンドウプロシージャでWM_KEYDOWNでメッセージを受け取る事が出来ません。
起動した直後は出来るのですが、その後、エディットコントロールにフォーカスを移動した時とかに
メッセージを拾う事ができなくなります。エディットコントロールやボタンにフォーカスがある状態でも
メッセージを受け取るにはどうすればいいのでしょうか?



410 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:54:56 ]
キー関係のメッセージははフォーカスを持つウィンドウに送られる

メッセージをDispatchする前に、アクセタレータを使うなり何なりすること。

411 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:56:55 ]
ごめtypo
*アクセラレータ

TranslateAcceleratortとかHACCELとかのことです

412 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 19:56:41 ]
HP見ながら頑張ってみたのですが、上手くいきません。
肝心な部分だけ書いてみました。どこかいけないところはあるでしょうか?

//aaa.rc
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
  VK_F1,  ID_MYHELP,  VIRTKEY,  NOINVERT
END

//resource.h
#define ID_MYHELP 40001

//aaa.cpp
WinMain(){
  haccel = LoadAccelerators(hInstance, (LPCSTR)IDR_ACCELERATOR1);
}

WndProc(){
  case WM_COMMAND:
    if(LOWORD(wp)==ID_MYHELP) MessageBox();
    return 0;
}

413 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:07:28 ]
LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_ACCEL1)); とか
TranslateAccelerator(hwnd, hAccel, &msg) 抜けとかかなーといってみる


414 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:12:37 ]
TranslateAcceleratorは?
あと、(LPCSTR)IDR_ACCELERATOR1よりもMAKEINTRESOURCE(IDR_ACCELERATOR1)
LOWORD(wp)よりもGET_WM_COMMAND_ID(wp, lp)お薦め

415 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:32:19 ]
>>413-414
TranslateAccelerator()を入れたら動作しました!
大事なところを見逃してました。ありがとうございます。

416 名前:名無し@沢村 [2007/05/27(日) 20:39:52 ]
>>404
>なんでビットマップを複数つくることを思いつかないんだ?
memBit1=CreateCompatibleBitmap(hdc,x,y);
memBit2=CreateCompatibleBitmap(hdc,x,y);
のようにでしょうか?
表示用のデバイスは1つ(hdc)しかないので、ちょっと無理っぽい気が…

417 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:40:34 ]
なんで見えない番号があるのかと思ったら
なつかしいな沢村

418 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:42:47 ]
TranslateAcceleratorは>>411でわざわざ言ってあげたのにな

419 名前:名無し@沢村 [2007/05/27(日) 20:47:02 ]
>>408
描画内容(座標、線種、色)を数値データとしてスタックに保存するのでしょうか?
データを画面に復元するときはどうすれば?
思い付くのはSetPixcelですが、
SetPixcelで1点ずつ画面に点を打っていくのでは、時間がかかりすぎるような気が…



420 名前:名無し@沢村 [2007/05/27(日) 20:52:27 ]
>>417
なつかしいな。
プログラミングは当分休止。つーかいまプログラミングしてるけど…
いま投稿用の漫画描くためのソフトつくろうと思って質問しまくっているとこ…

これができたら、プログラミングはお休みして漫画に専念する。

421 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:00:41 ]
>>419
既にAPIの質問ではないと思うが
基本的な方法としては、
1、画像そのものを最初にどこかに保存しておいて
2、描画時に使ったコマンドの内容を保存しておく。 点を打った、線を引いた、円を描いたというようなね。

そして、巻き戻すときは、1から順にコマンドを再現して、一つ手前で止めればいい。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef