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


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

Win32API質問箱 Build122



1 名前:デフォルトの名無しさん(dion軍) 転載ダメ mailto:ageteoffagete [2016/01/05(火) 19:03:39.12 ID:IesHwkgH.net]
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build121 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1438695290/

2 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 19:39:12.23 ID:w68plevo.net]
                       ヽ(  )/
                         ( * )
                        ノ ゝ
              ∧_∧
             (ヽ(    )ノ)    ∧_∧                  ∧_∧
             ヽ ̄ l  ̄ ./  (ヽ(    )ノ)       ∧_∧  (ヽ(    )ノ)
     ∧_∧   | . .  |      ヽ ̄ l  ̄ ./      (ヽ(    )ノ) ヽ ̄ l  ̄ ./
   (ヽ(    )ノ)(___人__ )     | . .   |  /⌒ヽ  ヽ ̄ l  ̄ ./  | . .   |
    ヽ ̄ l  ̄ ./  ; 丿 し     ( _,;*;,__ (ヽ(    )ノ) | . .   |   (___人__ )
   ∧|_∧  |    ∪        ∪  ; 丿 ヽ ̄ ∧_∧ (___人__ )    ∧_∧
 (ヽ(    )ノ)      ∧_∧      ∪   (ヽ(    )ノ)丿 し  (ヽ(    )ノ)
  ヽ ̄ l  ̄ ./   (ヽ(::::::::::::::::)ノ)  ∧_∧  ヽ ̄ l  ̄ ./∪     ヽ ̄ l  ̄ ./
   | . .   |      ヽ:: ̄ー ̄./ (ヽ(    )ノ) | . .   |        ∧_∧ |
  (___人__ )  ∧_∧::::::|:::::::::|   ヽ ̄ l  ̄ / ( _,;*;,__ )  /⌒ヽヽ(::::::::::::::::)ノ)
   ; 丿 し (ヽ(    )ノ) ::::::::)   | . .   |  ∪  ; 丿(ヽ(    )ノ) ー ̄./
  ∪     ヽ ̄ l  ̄ ./ ; 丿   (___人__ )    ∪  ヽ ̄ l  ̄ ./::::::|:::::::::|  ∧_∧
          | . .  |   ∪     ; 丿 し         | . .   | (:::::人:::::::(ヽ(    )ノ)


出会うはずの場所が 出会うはずの人たちが あなたを待ってい

3 名前:驕iドンドコドコドコドンドコドコドコ) []
[ここ壊れてます]

4 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 13:05:09.32 ID:UIYJrmr4.net]
前スレの続き
キーボードフィルタードライバーは使用時に
未署名で大変危険だから入れるなみたいなことを言われますか?

5 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 14:31:50.81 ID:yluT1kPN.net]
4ね

6 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 20:51:29.55 ID:+ry8DJY3.net]
質問させてください。
WinPcapでパケットの内容をキャプチャして動作するWindowsアプリケーションを作っています。
現状は、100msでタイマを貼ってメッセージループ内でpcap_next_exを処理しているのですが、
pcap_next_exが1000msほどロックしているみたいで動作が重い感じになってます。
何かいい実装方法を教えていただけないでしょうか?

別スレッドを走らせてpcap_loopを実行してコールバックで実装すればいいのでしょうか?

7 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:04:14.65 ID:84rpqrkC.net]
>>5
馬鹿には無理
身の程を知れ

8 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 03:41:16.19 ID:al1OphsN.net]
一昔前は、議論の余地があったり、正解が一つじゃない問題について提起するような質問が中心で、
発展性のある質疑応答が行われていたが、
いつの間にか>>5みたいな本当にただの情報乞食しか質問しに来なくなった。

9 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 05:22:45.24 ID:YFiivbQo.net]
ここまでテンプレ

10 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 07:06:26.41 ID:f8lDEwqx.net]
ここまでテンプレ



11 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 12:52:50.77 ID:yPE83akt.net]
閑古鳥が通りますお

(AAry

12 名前:デフォルトの名無しさん [2016/01/09(土) 20:50:24.29 ID:tLSvbtI/.net]
haru pdfを使用しています。
もっと使いやすいの知らない?

13 名前:デフォルトの名無しさん [2016/01/12(火) 22:53:40.27 ID:MKR6D1vT.net]
SCROLLINFO structureのnMaxって32768までしか設定できないの?
エディタみたいなの作って32768行超えたら1行目に戻っちゃう。

14 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 00:58:43.27 ID:gJwvtijf.net]
32bit Integerだぞ
今試してみたけど2147483647が入る

15 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:38:05.51 ID:ia1lU0C0.net]
ホントこのスレ雑魚しかいねーな

16 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:45:46.97 ID:3lvMCHEn.net]
ウインドウメッセージを改変したいのですがこのような場合どのような実装をするのが一般的ですか?
タッチ非対応のアプリケーションをタッチで操作しようとすると不便なことが多いのでタッチ関係のメッセージを
適当なマウスやキーボードのメッセージに変換したいです
常駐して複数のアプリケーションのメッセージの変換を一手に引き受けるようなユーティリティを考えています
アプリケーションはパスで区別するようかな
ググっても不特定多数のアプリケーションのメッセージの処理に割り込む方法は見つけられませんでした
画面全部のメッセージをいったん受け取って任意の座評下にあるアプリケーションに投げられれば
出来そうな気がしますが、普通メッセージを受け取れるのは自分だけ?ですし・・・

GUIのプログラミングはほとんど経験がないので見当違いなことを言っていたらすみません

17 名前:デフォルトの名無しさん [2016/01/13(水) 21:03:00.57 ID:wjilFIid.net]
>>12
WM_VSCROLL messageが16bitで値をよこすんだった。

>>13
だよね、はいるよね、問題はそっちじゃなかった。
お手数を掛けて申し訳ない。

18 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 21:05:21.53 ID:o1e0oiX3.net]
リモートプロセスのウィンドウプロシージャとかGetMessageとかSendMessageとかフックすれば行けるんでないの
WH_WNDPROCは無理だぜ

19 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 22:39:43.83 ID:U6qWkuuA.net]
最近、片山先生見ないね。
忙しいのかな

20 名前:デフォルトの名無しさん [2016/01/13(水) 23:53:20.75 ID:ia1lU0C0.net]
片山はム板の害虫だからな
誰かに駆除されたんじゃねーのw

片山は未来永劫来ないでくれると有難い



21 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 00:16:58.27 ID:H3jYOyT9.net]
ニートです1からプログラミングを教えてくれる [無断転載禁止]・2ch.net
tamae.2ch.net/test/read.cgi/prog/1451036635/

22 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 00:20:42.44 ID:H3jYOyT9.net]
片山ウザイ死ね
片山ウザイ死ね
片山ウザイ死ね
片山ウザイ死ね
片山ウザイ死ね
片山ウザイ死ね 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


23 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 00:23:21.55 ID:H3jYOyT9.net]
あたまだいじょうぶ

24 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 01:32:07.40 ID:6PBsRRef.net]
SetWindowsHookEx()でタッチやらジェスチャやらのメッセージを捉えられるんじゃないの?

25 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 05:30:49.75 ID:55qL7TdQ.net]
自演

26 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 21:54:28.31 ID:MtHEXlH9.net]
ARM上でもWin32動作可能にするってよ
よかったなお前ら

27 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 22:28:43.71 ID:Ip/Ue952.net]
IntelやAMDと違って、ARMのプロセッサベンダーは
Windowsに配慮しないからどうせ遅くて使い物にならないんだろ
RTでも同じことやったろ

28 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 19:20:02.04 ID:w01QVg+/.net]
DateTimePicker コントロールを持つウィンドウがあります。
コントロールの▼を押すとカレンダーが表示されますが、このカレンダーのサイズ(ウィンドウ、フォントとも)を変更したいと思っています。
しかし、このカレンダーのウィンドウハンドルを取得する方法が分かりません。

DTN_DROPDOWN のタイミングでコントロールのウィンドウハンドルを EnumChildWindows に渡してみても何も列挙されません。
つまりカレンダー部分は子ウィンドウではないのでしょうが、EnumWindows ではどれがカレンダーなのか判断しかねます。

これらを試す前に DateTimePicker コントロールに対して WM_SETFONT を試していますがこれは単に日付のみフォントが変更され、
カレンダー部はまったく変化ありません。

よろしくお願いします。

29 名前:27 mailto:sage [2016/01/19(火) 20:43:08.74 ID:w01QVg+/.net]
自己レスです。
カレンダーウィンドウハンドルは DateTime_GetMonthCal で取得できることが分かりました。
また、ウィンドウサイズは取得したハンドルを元に MoveWindow等でサイズ変更はできましたが、
フォントサイズを WM_SETFONT で変更することはできませんでした。

この辺はさすがに簡単に実現するのは不可能と諦めるべきでしょうか?

30 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:50:31.01 ID:XjyMc5te.net]
>>28
自分で作る方が速いとおもうよ



31 名前:27 mailto:sage [2016/01/19(火) 20:52:09.47 ID:w01QVg+/.net]
連投すみません。自己解決しました。

SetWindowTheme でテーマを無効にすればサイズ変更できました。
お騒がせしてすみませんでした。

32 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:54:22.49 ID:9RLBZfMa.net]
いや貴重な情報だと思うよ
俺は使わないけど

33 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:01:11.40 ID:e3A3Udpz.net]
初心者の質問はここでいいのでしょうか?
www.kumei.ne.jp/c_lang/sdk/sdk_50.htm

ここで作っているようなウィンドウで親から独立したものにするには、どういう変更をしたらいいでしょうか?

34 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:16:26.78 ID:eHYWF0WY.net]
CreateWindowで親ウィンドウの指定無し

35 名前:32 mailto:sage [2016/01/20(水) 21:31:24.98 ID:e3A3Udpz.net]
>>33
親切にありがとうございました
親ウィンドウのハンドルをNULLに変えて、メニューハンドルもNULLに変えて、ウィンドウの種類をWS_OVERLAPPEDWINDOWに変えたらできました!

36 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 12:52:26.19 ID:zpe1QHZ3.net]
ここのひとはみんな知ってるから
そういうレベルのことはいちいち報告しなくていいよ

37 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 15:43:01.51 ID:yQ7XttE4.net]
>>35
水をさすお前がいらない

38 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 16:31:35.32 ID:jQP351Wh.net]
このスレでドヤ顔することがステータスと感じるアホが定期的に湧くんだよなあ。
>>29とか>>35とか技術的に何も解ってないけど書き込みに来ている。

39 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 16:36:55.72 ID:FX4iXu3R.net]
水差し野郎
ガソリン差し野郎
火消し
爆発物

40 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 22:17:17.69 ID:U885wehe.net]
目先は大荒れだが,いずれ日銀とECBがしっかり資金供給を拡大してくるのでFRBの利上げは多分成功する
基調はリスクオンの株式暴騰、金暴落だね
日銀砲がくるぅ!日銀砲がくるぅ!



41 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 08:43:44.82 ID:CgOtOMI0.net]
>>39
Win32APIってすごいんだね

42 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 21:52:41.24 ID:+1x++qqq.net]
今でも仕事でwin32api使う場合ありますか?

43 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 22:00:08.53 ID:xc9KTHaP.net]
>>41
あるあるC#の場合でさえWin32API呼びださなきゃいけなくなることがままある

44 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 11:09:12.58 ID:ubzWCtFz.net]
Win64APIまだ?

45 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:28:00.57 ID:VvXpIcfG.net]
Win128APIが欲しい

46 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 01:26:45.10 ID:WiblVc97.net]
もう一声

47 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 09:27:47.10 ID:nlvFx6uK.net]
Win256APIが欲しい

48 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 09:46:42.11 ID:HvsZ1lb+.net]
WinAPIってもう進化しないの?

49 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 10:45:53.17 ID:mkheAnhu.net]
10586でも普通にAPI追加されてたりするけど?

50 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 11:33:13.05 ID:dcg0T2/H.net]
APIってより、コモンコントロールのVerUpお願いします。



51 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 00:52:11.27 ID:AjjCF8oJ.net]
てst

52 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 09:53:55.83 ID:1awzzRNN.net]
目先は大荒れだが,いずれ日銀とECBがしっかり資金供給を拡大してくるのでFRBの利上げは多分成功する
基調はリスクオンの株式暴騰、金暴落だね

日銀砲が北!日銀砲が北!
今度の黒田砲は緩慢に効いてくる

53 名前:デフォルトの名無しさん [2016/02/04(木) 13:33:10.29 ID:M0mujwf4.net]
Windowsアプリはwin32じゃなきゃ作れない?

54 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 14:00:42.81 ID:XbjzwYmp.net]
いいえ

55 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:11:28.72 ID:fGMj84cM.net]
プリンタの一意(シリアルでも良い)の情報を取得出来ますか?
(例)
プリンタ1:USB接続のデバイス
プリンタ2:LAN上のデバイス
プリンタ3:Bluetooth上のデバイス

違うポートや、接続方法を変更しても、変わることの無いプリンタ固有の情報を取得したいです。

56 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:24:13.58 ID:bnegH6uR.net]
意味が分からないです。
EnumPrintersで希望の情報が取得できないなら、その理由をお願いします。

57 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:46:57.72 ID:fazvGls3.net]
IrOBEX

58 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:09:41.61 ID:ewLa/pEP.net]
>>54
一般的には無理だろ

59 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:39:17.94 ID:XRyA0EjL.net]
コントロールパネルのプリンタ一覧に出るくらいの情報は取れるだろ

60 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 11:57:58.30 ID:fu54F6yL.net]
目先は大荒れだが,いずれ日銀とECBがしっかり資金供給を拡大してくるのでFRBの利上げは多分成功する
基調はリスクオンの株式暴騰、金暴落だね

日銀砲が北!日銀砲が北!
今度の黒田砲は緩慢に効いてくる



61 名前:デフォルトの名無しさん [2016/02/08(月) 18:21:03.34 ID:LpGg46bP.net]
1.時間
2.情報(知識)
3.人
4.物
5.金
6.公務員

62 名前:デフォルトの名無しさん [2016/02/13(土) 08:27:03.25 ID:GG2kKfuP.net]
【SendMessage】関数【PostMessage】関数についてご教授下さい。

開発中のシステムからメモ帳のウィンドウハンドル(入力ウィンドウ)を取得し、
SendMessageやPostMessageを行っています。

PostMessageは成功するのですが、SendMessageが失敗してしまます。

なぜ、SendMessageが失敗するのか、原因をご教授下さい。

コードは以下の通りです。
-------------------------------
HWND wh = FindWindow(nullptr, p);//pは”無題 - メモ帳”です 本体のウィンドウハンドルを取得
wh = GetWindow(wh,5);//入力欄のウィンドウハンドルを取得

SendMessage(wh, WM_KEYDOWN, 'A', 0);
PostMessage(wh, WM_KEYDOWN, 'B', 0);
-------------------------------

このコードを実行すると b のみ出力され a が出力されません。
なぜでしょうか?環境面など悪さしてますか?それともコーディング間違いでしょうか?

同期処理を実現したいのでSendMessageが使いたいのです。

環境は以下です。
--------------
Windows7
Visual Studio
C++ cli
--------------

63 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:52:05.92 ID:BxXCiqDX.net]
送り先が間違ってる
メモ帳でWM_KEYDOWNをハンドルしている所はメインウィンドウではない
SendMessageとPostMessageの違いは同期か非同期かだけではない

64 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:56:36.73 ID:BxXCiqDX.net]
具体的に言うと、SendMessageだとTranslateMessageが呼ばれないから駄目

65 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:03:07.21 ID:ORf98vEQ.net]
KEYUPは?

66 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:36:08.50 ID:kF8JbQ5J.net]
transrate されないから WM_CHAR で送るんだっけ?

67 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:39:44.07 ID:pQPzYQNF.net]
そう。
仮想キーボード作るのにkeybd_event知らずにWM_CHAR送ってたことあったわ。

68 名前:デフォルトの名無しさん [2016/02/13(土) 15:16:29.22 ID:GG2kKfuP.net]
>>62
送り先はあっています。
PostMessage(wh, WM_KEYDOWN, 'B', 0); が成功してますので・・・

>>63
>>64
>>65
>>66
ありがとうございます。
SendMessage(wh, WM_CHAR, 'A', 0);
で出来ました。

つまり、SendMessage でWM_KEYDOWN は使えないということですね?

次のステップなのですが、
「右矢印キーを2回押す」や「ctrl+Sを押す」といった事は、
SendMessageで行えますか?PostMessageを使うしかないでしょうか?

コード例以下です。
「右矢印キーを2回押す」
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
「ctrl+Sを押す」
SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0);
SendMessage(wh , WM_KEYDOWN , 'S' , 0);
SendMessage(wh, WM_KEYUP, VK_CONTROL, 0);
SendMessage(wh, WM_KEYUP, 'S', 0);

ちなみにkeybd_eventやSendInputは最前面ウィンドウに対する操作になってしまうので、
使えないです。
※ウィンドウが最前面か否かに関わらず常に安定した操作を実現したいのです

69 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:45:29.59 ID:QD8KbUeS.net]
つ SendMessageCallback

70 名前:デフォルトの名無しさん [2016/02/13(土) 16:13:10.53 ID:GG2kKfuP.net]
>>68

ありがとうございます。

SendMessageCallback というものがあったんですね。

しかし、「SendMessage でWM_KEYDOWN は使えない」という原因の解決にはならないですね。



71 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 16:39:49.96 ID:BsiOP/VU.net]
2

72 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:32:28.11 ID:s+9Slq2v.net]
>>69
諦めるかリモートプロセスに潜り込んでサブクラス化するか
どちらか選べ

73 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 06:41:33.20 ID:l8k1FRK9.net]
Ctrl+SはTranslateAcceleratorが処理しているので
宇宙が終わるまで頑張ってもラノベの能力者でもSendMessageで実行することは不可能

74 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 10:00:11.42 ID:U4HqBg4Q.net]
つーか、相手がメモ帳である必要はあるのか?
メモ帳もどきを自作した方がいいのではないか?
監視対象を逆にして、メモ帳もどきがシステムから文字を読み取ればいいのではないか?

75 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 11:45:01.21 ID:pLP1J6Vd.net]
まずテストで対象をメモ帳にしているだけではないか?

76 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 14:46:28.65 ID:8Os0TVn8.net]
ほんとにやりたいのはもちろんネトゲのクラックだけどバラすと叩かれるので言えません

77 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 15:02:27.81 ID:Y2R/v65U.net]
んな事企んでる奴がSendMessageに目をつけるかよw
だよな?

78 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 15:03:44.56 ID:Ktv0T7Kd.net]
MFCで作られたアプリを他のプロセスから操作というかデータを抜き出したいんですけど
どのようなアプローチがありますでしょうか

79 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 16:24:35.08 ID:98frxkoE.net]
ざっくりしすぎ

80 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 21:53:32.80 ID:lC/6c5cB.net]
ぎっくりごしすき に見えた 逝ってくる



81 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:25:34.32 ID:S96kZ0X7.net]
>>77
JSON

82 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 17:44:52.75 ID:4ohwfksv.net]
時間のかかる処理において、ESCキーで処理を中止できるようにする場合、
 if (GetAsyncKeyState(VK_ESCAPE) != 0)
で判定する場合と

 while (PeekMessage(&msg, hwnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) {
  if (msg.message == WM_KEYDOWN && msg.wParam == VK_ESCAPE)
で判定する場合と

で、どちらも期待通りに動いていますが、お作法としてはこっちがいい。
ということはありますか?

83 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 18:58:40.25 ID:LIHPi+yd.net]
GetAsyncKeyStateの方だとウィンドウにフォーカスが無くてもESCキーが押されたのを拾うが
PeekMessageの方だとウィンドウにフォーカスが無いと検出できないという違いはあるね

だけど、PeekMessageでウィンドウメッセージが拾えているということは
ウィンドウを作成したスレッドで時間のかかる処理をしているみたいだけど

>https://msdn.microsoft.com/ja-jp/library/cc410948.aspx
>(PeekMessage 関数は、ほかのスレッドに所属するウィンドウに関連付けられているメッセージは取得しません)

中断を受け付けるような時間のかかる処理は、ウィンドウを作成したスレッドとは別スレッドでやった方が良い
もしくは定期的にPeekMessageを呼んでディスパッチしてやるという方法もあるが
ダサいのでスレッドを使った方が良いだろう

84 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 21:08:52.65 ID:4ohwfksv.net]
なるほど、よく分かりました。
フォーカスのことを失念していました。
このままだと、処理中に別のアプリケーションで作業しつつESCを押すと
本処理が中断されてしまいますね。

スレッドに関しては仰るとおりです。
どうもありがとうございました。

85 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 02:04:49.32 ID:S2Po0hUW.net]
エスケープをホットキーに登録する方法もあるよ

86 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 04:00:53.50 ID:DENPjcvu.net]
SetWindowPos で質問です。

通常のオーバーラップ、ポップアップウィンドウを前面(手前)に表示したい場合、
SetWindowPos で HWND_TOP を指定すれば実現できます。

同じ調子で、あるウィンドウの中にいくつも重なり合うコントロールの中で、
任意の一つのコントロールを前面に表示したいと思い、先と同じように
SetWindowPos に HWND_TOP を指定してみたのですが、前面になりません。

思ったのとは逆に、HWND_BOTTOM を指定すれば前面になります。

MSDN によると、HWND_BOTTOM はZオーダーの最後と書いていますので、
Zオーダーの最後にくることによって、結果的に前面に表示されると思えば
納得できなくもない(ダイアログエディタではその挙動なので)のですが、
この解釈で合ってますか?

実際、そのように動いてはいますが、なんだか釈然としません。

87 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 12:57:11.04 ID:J0DDw2OI.net]
>>85
WS_CLIPSIBLINGS を指定し忘れてない?
重なり合う場合これを指定しないと、どのウィンドウが前面にあるか関係なく、
最後に描画操作したウィンドウがそのまま表示されるので、bottomにあるウィンドウが
一番手前にあるように見えたりする。

88 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/21(日) 23:54:03.12 ID:mZ9I4pVL.net]
特定のアプリの時間を止めることは出来ますか?

89 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 00:01:15.97 ID:e00mKUAj.net]
>>86
お返事ありがとうございます。何とか解決しました。

>>85を具体的に説明しますと、ダイアログベースで作ったメインのオーバーラップウィンドウにいくつか
コントロールが配置されていて、あるボタンを押すとダイアログのある範囲のデザインを変更すべく、
別の子ウィンドウスタイルのダイアログが上に表示されます。

これまでは>>85の解釈が正解であれば、HWND_BOTTOMでZオーダーの最後にすることにより前面に来るような挙動をしています。

ここで子ダイアログにWS_CLIPSIBLINGSを指定して、SetWindowPosでHWND_TOP、HWND_BOTTOMとも試してみましたが、
親ダイアログ内の重なり合うコントロールより上には正しく表示されません。

親ダイアログ内の重なり合うコントロールにもWS_CLIPSIBLINGSを付与してみると、今度はSetWindowPosでHWND_TOPを
指定すると当初の希望通りに前面に子ダイアログが表示されました。
HWND_BOTTOMを指定すると、今度は一番下になりました。

これで解決に見えますが、最後に質問です。

親ダイアログ内の重なりあるコントロールにWS_CLIPSIBLINGSを付与しましたが、VSのダイアログエディタでは操作できないので
プログラムでわざわざ付与しています。
ダイアログベースの場合、ここまでしなければいけないものでしょうか?

90 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 00:03:09.54 ID:Hluu6IDo.net]
デバッガー経由で実行してINT3しろ



91 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/22(月) 00:21:47.83 ID:C/gFN+RL.net]
アプリの実行状態を保存したり、復元したりできるだろうか?

92 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 01:01:11.43 ID:efQJgPcz.net]
SuspendThreadとか?

93 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/22(月) 01:08:29.91 ID:C/gFN+RL.net]
>>91
それだ!

94 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 01:33:00.33 ID:wBLibIRF.net]
>>88
子ダイアログを表示する際、同時に、重なり合う親ダイアログ内のコントロールを非表示にすれば?

95 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/22(月) 01:47:42.64 ID:C/gFN+RL.net]
WS_CLIPCHILDREN

96 名前:86 mailto:sage [2016/02/22(月) 13:07:14.63 ID:eU9Lov9M.net]
>>88
プログラムでスタイルを変更するか、rcをテキストエディタで直接編集するしかないような気がします。
ダイアログ内のコントロールは重なり合うような位置に配置することが通常ないので、
コントロールにWS_CLIPSIBLINGSをつける必要性がほとんどないせいかと思います。

97 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 13:43:47.72 ID:v1Wohs7h.net]
今のWindowsではどうか知らんけどXPの時は何故かコモンコントロールの
WS_CLIPCHILDRENとかWS_CLIPSIBLINGSは期待通りの動きをしなかった記憶が。。。
WS_CLIPCHILDREN指定しても親windowのdrawでコントロールが塗りつぶされちゃって
親window側でExcludeClipRect使ったりしてた

98 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/02/22(月) 14:06:29.16 ID:C/gFN+RL.net]
WS_CLIPCHILDRENは、親に指定するんじゃなかった?

99 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 14:25:04.74 ID:v4lNOwvr.net]
さすがにWS_CLIPCHILDRENを子ウィンドウにセットするバカはいないだろう
CHILDRENってなってるのにさ

100 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 15:31:52.54 ID:e00mKUAj.net]
85です。

>>93
そのようにする場面もあるのですが、今回は注意喚起の表示という仕様のため、条件を満たすまで
今回の子ダイアログは表示しっぱなしだけど他のコントロールは操作できるようになります。
なので、見た目はポップアップぽいけどフォーカスは奪わないし親ウィンドウの移動にも追随する
という感じになります。

>>95
どうやらそのようですね。
保守性がよろしくないので、一旦元の形に戻してしまいました。
下に続きます。

>>94,96
結論から書くと、WS_CLIPCHILDRENでうまく行きそうです。

ただ、WS_CLIPCHILDRENのみを付与しても目的の動作にはなりませんでした。
この場合、コモンコントロールが混じってると親と子ダイアログの前後関係がさらにおかしくなりました。
親ダイアログに配置されているコモンコントロールが常に子ダイアログより前面に来てしまいます。
なおかつ、その状態で子ダイアログに配置されているコントロールのみ、前面に表示されます。
(子ダイアログ本体の枠や背景のみが後ろになる)
SetWindowPosでHWND_TOPやHWND_BOTTOMを付与しても変化ありませんでした。


長いので区切ります








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

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

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