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/
655 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 14:17:59.85 ID:8P+uiz2j.net] DLLがexeから利用されたときに DLLファイルが置かれている場所のpathを DLL内の関数自身で調べる方法はありますか? GetModuleなんとかだとexeのpathになってしまうみたいで
656 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 14:23:09.69 ID:8P+uiz2j.net] >>630 Windowsはどうみてもウィンドウズなのに ほとんどの出版物ではウインドウズになってる不思議
657 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 14:25:09.57 ID:orjbVXED.net] うぃんどぅず
658 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 14:29:37.06 ID:orjbVXED.net] >>638 DLLにはDllMainがあり、そこでインスタンスハンドルを受け取るでしょ? このハンドルをゲッツモデュールなんとかに渡せばいい。 試してないけど。
659 名前:デフォルトの名無しさん mailto:sage [2016/07/15(金) 14:35:14.90 ID:8pBeZ5fQ.net] char lpHoge[MAX_PATH]; GetModuleFilename(GetModuleHandle("dll名(フルパスを書かない&拡張子なし)"), lpHoge, sizeof(lpHoge));
660 名前:デフォルトの名無しさん mailto:sage [2016/07/16(土) 11:22:44.34 ID:Tq5Mh+3Z.net] >>618 IMEは全然知らないけどMozcはソース公開されているから見てみれば?
661 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/07/16(土) 15:54:44.86 ID:DpW5llC4.net] >>618 >>643 別のアプローチで解決しました。
662 名前:デフォルトの名無しさん mailto:sage [2016/07/16(土) 16:50:52.70 ID:nf9EfIu5.net] >>644 どうやったの?
663 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/07/16(土) 17:01:30.11 ID:DpW5llC4.net] >>645 IMEパッドをIMEに組み込まず、別プロセスにしました。 実装方法はソフトキーボードのサンプルを参考にしました。
664 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:10:46.10 ID:RtgpWl6x.net] 質問 Win32 APIに1:1の片方向で良いのでスレッドAからスレッドBに確実にデータを渡すしくみで軽量なやつって何か無い? イメージとしてはITRONのメールボックスとかメッセージキューみたいなやつキボン 軽量さの比較対象としては、イベントとCRITICAL_SECTIONとstd::queue<T>を組み合わせた手製ロジックでデータ渡すのと同等の速度でおk 名前が似てるという意味ではMail slotというのがあったけどもメッセージの到達が保障されない。 パイプはプロセス間通信にも使えるということは何か重いイメージがある スレッドをGUIスレッドにしてデータをウィンドウメッセージに乗せる手も考えられるが、遅そうなのはパイプと同じで 特に理由無く移植性の無い手段をとるのも嫌
665 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:21:22.75 ID:DWSurOc6.net] メモリマップトファイル 軽量かどうかは知らない
666 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:29:01.11 ID:OO2CesJE.net] いや意味わからないし 上の説明読んで、なんでそれになるの? なんで?
667 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:31:10.32 ID:OO2CesJE.net] 俺が読んだ限りでは、同一プロセス内で他のスレッドにデータ渡すだけみたいだぞ それも、キューのようなものがお望みと読み取れる なんで???
668 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:42:12.52 ID:SSOeGMhs.net] >>647 GUIにしなくてもメッセージ使えるぞ
669 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:46:33.31 ID:RtgpWl6x.net] 希望としてはメッセージキューみたいなやつなんですが、 「1:1の片方向で良いのでスレッドAからスレッドBに確実にデータを渡すしくみで」ときの 定番手段だったり スゲーすっきり書けるとかチョー軽量であるとかいった圧倒的なアドバンテージがあるやり方なら キューでなくてもおk
670 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:48:46.90 ID:SSOeGMhs.net] そもそもWin32 APIと言ってながら移植性の無い手段をとるのも嫌ってどういうことだよ?
671 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:49:52.72 ID:RtgpWl6x.net] いやスマン 「スレッドAからスレッドBに確実にデータを渡す」というのを スレッドを極力待たせずに(軽量に)やるには 結局キューしか有り得ないのかorz
672 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 23:52:23.11 ID:wQIeqVrk.net] data_seg
673 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 00:00:01.33 ID:7oHxM0p4.net] 定番は自分で書いたような手製ロジックなんじゃないか? あとはSendMessageでWM_COPYDATA とかClipboardとかPostThreadMessage使うとか だってさ、Win32 APIに軽量確実簡単なAPIがあるなら普通誰でも使うだろ? でもそうではなく定番とも言える方法が別にあるってことは、 Win32 APIにはそういうものがないか、使い勝手が悪いとかってことだろ
674 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 02:07:44.74 ID:0GzfAsTo.net] >>650 確実に渡したいと読んだからキュー形式を無視してそう書いただけ 何ならグローバル変数でも使っとけば()
675 名前:デフォルトの名無しさん [2016/07/18(月) 05:44:07.83 ID:GAeyefCK.net] >>656 同一プロセスならヒープでも大丈夫だろ? 後はアドレスを渡すだけだから、WM_USERで充分な気が。
676 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:04:45.51 ID:DGcnITue.net] >>657 いやそこじゃなくて、どうして「メモリマップトファイル」なの? 同一プロセスの他スレッドにデータ渡すだけなのに? 確実さと軽量さをとるなら、>>657 も書いている通り ヒープでも十分だし、君の書いているグローバル変数の配列でもよいだろう どこからメモリマップトファイルが出てきたの?
677 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:15:54.77 ID:0GzfAsTo.net] 適当に思いつきで書いたものに必死に噛みつかれてもな 使えない訳でもなし
678 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:42:39.25 ID:zK0e5um3.net] 無責任過ぎワロタ 思いつきの適当な回答を教えんなよ
679 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:46:38.94 ID:DeXLreOM.net] >>647 DLLで共有したらいかんのか
680 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:47:34.09 ID:DeXLreOM.net] ああ >>655 で出てるな
681 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 12:50:40.83 ID:DeXLreOM.net] >>661 いや擁護する訳じゃないが メモリマップトゥファイルは誰でも真っ先に思いつく罠 それが重いか重くないか吟味するのは君の責任だ 思いついたことを書いて何が悪い
682 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:02:11.38 ID:5MTfu7xY.net] 分かりやすい自演だなぁ
683 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:05:40.41 ID:DeXLreOM.net] >>648 は漏れじゃないよ 割とマジで
684 名前:デフォルトの名無しさん [2016/07/18(月) 13:10:52.35 ID:GAeyefCK.net] >>664 お題がスレッド間通信なのに、プロセス間通信に使うための機能の使用を思いついたとして、 一瞬でも考えればそれは違うって分かるだろう?重いかどうかじゃない、お題に合ってないんだよ。
685 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:21:41.19 ID:0GzfAsTo.net] 割とマジで自演じゃないなw 一瞬で分かるなら、なおさら必死に噛みつく理由が分からん メモリマップトファイルを使っちゃいけない呪いにかかった
686 名前:フか、親でもころされたのか [] [ここ壊れてます]
687 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:23:17.31 ID:rCzir4eP.net] >>664 何で家の中で受け渡しするだけなのに郵便使うんだよ
688 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:38:42.97 ID:9GbCcHr5.net] 隣に居る人間に対してでも口頭ではなくメール使ったりするし。。。 メモリマップトファイルが適切かどうかは別として、グローバル変数だって プロセス間スレッド間通信で使うためのものじゃなくても使える訳だから、 メモリマップトファイルを使っちゃいけないルールじみた言動は宗教じみてもいるね。 つか、グローバル変数だって絶対禁止教の人がいる訳で。
689 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 13:45:48.44 ID:rCzir4eP.net] >>670 隣にいる人間に対してでもメールってのは後々読み返せるようにだから
690 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 14:04:51.83 ID:9GbCcHr5.net] >>671 そこマジレス!?ジョークやシャレに軽く乗っかっただけのつもりだったのだが・・・ 別に暑中見舞いでも不幸の手紙でも不倫密告でも送ってもよかろ? 目的や理由とその手段なんて、その人の自由だろって話なんだけどね。
691 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 14:18:12.67 ID:rCzir4eP.net] >>672 使いたければ使えばいいが 人に勧めるのは違う
692 名前:デフォルトの名無しさん [2016/07/18(月) 14:26:50.11 ID:GAeyefCK.net] >>670 使っちゃいけないなんて誰が言い出した? 的外れなものを持ち出してくるから、アホか、と言われてるだけなのに、 なんでそんなに必死に擁護するんだろう。
693 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 14:53:25.84 ID:0GzfAsTo.net] なんか色々スマンが、俺は最初から最後まで一貫して勧めてるわけではないぞ?思いつきの押しつけなんてしてないぞ? 思いつきとか不適切だっ許せないっ(キリッ つーなら、これにいつまでも構って駄レス伸ばすのに荷担するなよ え?叩きたいだけ? なら仕方ない、どんどんやれ
694 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 16:24:53.06 ID:9GbCcHr5.net] >>673 さすがにアレがお勧めされているとは読めなかったよ。 >>674 的外れかどうかの判断を含め、取捨選択は人の自由だよって話の本質は分かって貰えないのだろうか。 ぶっちゃけ、個人的にはグローバル変数を使うのは宗教上NGなので、それも的外れなんだよね。 宗教戦争したい?
695 名前:デフォルトの名無しさん [2016/07/18(月) 16:37:48.59 ID:GAeyefCK.net] 不適切な例を出すからバカにされただけなのに、 宗教戦争始めるとか、芯からバカなんだろうなorz
696 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 16:41:08.98 ID:9NIJsINm.net] clipboard とか言ってる奴までいるのにメモリーマップトファイルに噛みついてる奴ってなんなんだろう...
697 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 17:37:38.75 ID:+UjiZUGj.net] lock free queueを一発で回答出来ないボンクラ揃いだからしょうがない
698 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 20:07:57.95 ID:pMx2hk2n.net] lock free queueって。。。 受け側はどうするんだよ?ビジーループでもさせる気か?
699 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 20:58:21.67 ID:RVsoZVBC.net] お隣なのになぜメールか、というと送りっぱなしにしたいからなんじゃわ? メールボックスとかメッセージキューとかはそのためのしくみやし… 一方、グローバル変数とか共有メモリとかヒープとかいうのは データの置き場所のお勧めかもしれんが その場所をどう管理するのかについて情報が無い、
700 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 21:26:03.86 ID:DGcnITue.net] メールのたとえは、同一プロセスの他スレッドにデータを渡すのに メモリマップトファイルを使うという、回りくどさの例えなんだけど >その場所をどう管理するのかについて情報が無い、 その意味では、メモリーマップトファイルも同じで キューのような仕組みはない 君の言い方で言えば、 (同一プロセスの他スレッドにデータを渡すのに)データの置き場所としてお勧めではないし その場所をどう管理するかについて(キュー的な)情報も無い だから謎なんだよ 仮に、メモリーマップトファイルがキューのような仕組みを持っていたとしたら パフォーマンスのことは置いておいたとして、今回の案件の解決策として 選択肢に挙がるのもわかるんだよ だけど、そんな仕組みはない
701 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 21:28:11.14 ID:8aWrqcHl.net] なんか一
702 名前:l必死な奴がいるな割とマジで [] [ここ壊れてます]
703 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 21:47:02.19 ID:+UjiZUGj.net] >>680 空だったら、スピンロックでもセマフォでも好きな方法で待てば良い
704 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 22:13:32.46 ID:8ajA/NS2.net] 言い負かされちゃったからIDころころしてまで なんか一人必死な奴がいるな割とマジで
705 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 22:24:50.75 ID:AmMtLZjt.net] 分かるわ
706 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 22:26:35.28 ID:CLkpKdHA.net] lock free queueはWin32APIじゃないし
707 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 22:42:43.29 ID:pMx2hk2n.net] indowsメッセージ使わないんだったら、結局質問者自身が書いてる >イベントとCRITICAL_SECTIONとstd::queue<T>を組み合わせた が一番いいと思うよ イベントやミューテックスはstd::なんとかを使うようにすればポータビリティ も確保できるし
708 名前:デフォルトの名無しさん mailto:sage [2016/07/18(月) 23:42:13.68 ID:7oHxM0p4.net] >>679 それはWin32 APIなんですか?
709 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 00:04:11.91 ID:HAy25S1i.net] このスレはたとえ標準ライブラリで出来ることでも あえてwin32apiの使用を勧めなきゃいけないのか…
710 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 00:20:14.62 ID:hDS08Rg2.net] >>690 もとの質問者>>647 が「Win32 APIに」と聞いているのに?
711 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 00:27:33.24 ID:bXwBBqWV.net] にもかかわらずその質問内で「移植性の無い手段は嫌」とか書いちゃってるからそのツッコミはノーカウント
712 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 01:12:28.51 ID:VCiUgk/F.net] 質問が狂ってると全てが狂うってことで終了にしないか
713 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 01:21:12.76 ID:Y9D4yCz+.net] 移植性はwineとReactOSを考慮してるに違いない!
714 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 01:50:01.67 ID:LK/xSzTK.net] メモリマップトファイルを親の敵として粘着するスレはここですか?
715 名前:デフォルトの名無しさん [2016/07/19(火) 02:35:45.78 ID:mO5KAczv.net] >>695 もういいよ。しつこい奴だな。
716 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 08:10:41.83 ID:pfxIVr9e.net] >>695 周回遅れダサすぎ
717 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 09:44:02.26 ID:CF9LWmZW.net] 恥ずかしいやつ
718 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 14:29:43.40 ID:fscdSyYa.net] 祖父母の敵め
719 名前:デフォルトの名無しさん mailto:sage [2016/07/19(火) 18:08:41.69 ID:opFqbMDR.net] 真の名の宿敵
720 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 19:39:03.26 ID:X6luDWDm.net] 今の僕になら本当の敵を倒せるかもしれないはずだ
721 名前:デフォルトの名無しさん [2016/07/21(木) 19:45:32.55 ID:zIfC/0DQ.net] すみません、どなたかご存知でしたら教えて下さい。 HSPでリッチエディットコントロールを使用していて、 [CTRL]+[V]のキーイベントを捕まえたいのですが、 ENM_KEYEVENTS を EM_SETEVENTMASK で処理して、 WM_notify で EN_MSGFILTER をキャッチし、 MSGFILTER の msg メンバ に仮想キーコードが入っている事まで確認しました。 この時、[CTRL]キーが押されているかどうかは どのように判断するのでしょうか? よろしくお願いします。
722 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 20:00:09.42 ID:X6luDWDm.net] 普通にキーが押されたときのイベントを WM_KEYDOWNとかWM_CHARとかWM_SYSKEYDOWNとかで 捕まえれば良い。
723 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/07/21(木) 20:16:33.27 ID:2kJQMeni.net] GetAsyncKeyState(VK_CONTROL) < 0
724 名前:デフォルトの名無しさん mailto:sage [2016/07/21(木) 20:17:01.59 ID:UZ6ROzEF.net] >>702 GetAsyncKeyState
725 名前:デフォルトの名無しさん [2016/07/21(木) 20:42:52.77 ID:zIfC/0DQ.net] >>703 >>704 >>705 ありがとうございます。不慣れなもので、 WM_KEYDOWN とかは理解できていないのですが、 GetAsyncKeyState という手がありましたね。 EN_MSGFILTER にこだわりすぎていたようです。 ありがとうございました。
726 名前:701 [2016/07/23(土) 00:50:48.55 ID:CpwLUyh1.net] 連続で聞いてばかりで申し訳ないのですが、 hspでプログラムしています。 タスクバー(リバーコントロール)の中にある 言語バーのハンドルを取りたいのですが、 lpClassName = "Shell_TrayWnd" hTSKB = FindWindow ( lpClassName, 0 ) lpClassName = "ReBarWindow32" hREBR = FindWindowEx ( hTSKB, NULL, lpClassName, NULL ) lpClassName = "CiceroUIWndFrame" hIME = FindWindowEx ( hREBR, NULL, lpClassName, NULL ) と記述しているところ、最後の hIME だけゼロになります。 クラス名は間違いないはずなのですが、 何かアドバイスを頂けないでしょうか? よろしくお願いします。
727 名前:701 [2016/07/23(土) 01:01:49.74 ID:CpwLUyh1.net] 書き忘れていました。 ちなみにOSはWindows7です。
728 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 11:33:28.94 ID:6lYjBmg5.net] >>707 言語バーは特殊な取り方しないと取れなかったはず 言語バーとハンドルでググれば出てくると思う
729 名前:デフォルトの名無しさん [2016/07/23(土) 11:55:38.92 ID:+Jc7SqHC.net] cn = 'CiceroUIWndFrame' wn = 'TF_FloatingLangBar_WndTitle' ctypes.windll.user32.FindWindowExA(0, 0, cn, 0) ctypes.windll.user32.FindWindowExA(0, 0, cn, wn) ctypes.windll.user32.FindWindowExA(0, 0, 0, wn) ctypes.windll.user32.FindWindowA(cn, 0) ctypes.windll.user32.FindWindowA(cn, wn) ctypes.windll.user32.FindWindowA(0, wn) どれでも取れるな
730 名前:706 [2016/07/23(土) 14:35:08.46 ID:CpwLUyh1.net] 取れない・・・。 でもありがとうございました。
731 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 14:37:37.61 ID:6lYjBmg5.net] TF_FloatingLangBar_WndTitle はタスクバーの中にいるときは消える
732 名前:デフォルトの名無しさん mailto:sage [2016/07/23(土) 14:40:17.78 ID:6lYjBmg5.net] https://msdn.microsoft.com/en-us/library/windows/desktop/ms629069%28v=vs.85%29.aspx
733 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 11:42:42.44 ID:gb9BDOha.net] 一方ロシアは、鉛筆を使った
734 名前:デフォルトの名無しさん mailto:sage [2016/07/24(日) 12:09:19.84 ID:wdZTIji9.net] >>711 割とマジでレスすると FindWindowExW な関数に char * 渡してたり FindWindowExA な関数に wchar_t * 渡してたり すると取れない 実際に char * か wchar_t * かじゃなくて中身の文字列が
735 名前:710 [2016/07/25(月) 23:42:36.18 ID:1XHx40P1.net] >>715 ありがとうございました。 ご助言の通りでした。お恥ずかしい。 初心者ですみませんでした。
736 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 11:41:35.07 ID:As2nHGxN.net] >>707 このコードでどうやって >>715-716 みたいな状況が生まれたのか気になるところである
737 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 12:55:37.89 ID:88gPJO4Y.net] >>717 × lpClassName = "Shell_TrayWnd" ○ lpClassName = L"Shell_TrayWnd" って事じゃないの FindWindowEx使うならTCHARだろとは思うが
738 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 15:24:12.33 ID:As2nHGxN.net] >>718 >最後の hIME だけゼロになります。 ってことだから上の2つはなんで成功してるんだろ
739 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 16:01:28.49 ID:88gPJO4Y.net] >>719 最小構成にしたのが>>707 で実際のコードとは違うんじゃ?
740 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 16:22:18.83 ID:As2nHGxN.net] ひとに物尋ねておいて再現しないコード貼るなってことだ罠
741 名前:デフォルトの名無しさん mailto:sage [2016/07/26(火) 16:29:34.64 ID:88gPJO4Y.net] そういう意味か そうだな
742 名前:デフォルトの名無しさん [2016/07/26(火) 16:40:25.26 ID:SrQVLHqo.net] 自演が強く疑われますね
743 名前:デフォルトの名無しさん [2016/07/27(水) 04:24:40.28 ID:AcRDCNCg.net] 以下でつまっています。教えてください。 2つウインドウ作っておいて、 2つ目のウインドウの子ウインドウとしてリストボックスを作りました。 この2つ目のウインドウのリストボックスのどれが選択されているかによって、一つ目のウインドウの左クリックの動作を変えたいので、 リストのインデックスを得るために、1つ目のウインドウのプロシージャの case WM_LBUTTONDOWN: の所に、 index=SendMessage(hWnd3,LB_GETCURSEL,NULL,NULL); 〜 と書きましたが、リスト内の何を選択しても、indexになぜか値が入りません。 (たぶん初期値の0のまま?) hWnd3は2つ目のウインドウ内にあるリルトボックスのハンドルです。 コンパイルエラーは無いです。 何かやり方が間違っているのでしょうか? それっぽいワードでググってもよくわかりませんでした。 お願いします。
744 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 06:59:54.52 ID:uZQmv6/V.net] >>724 sendmessageでいいのか?
745 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 07:09:55.44 ID:8bp4Q/I5.net] >>724 hWnd3 はリストボックスを指しているかな? 親なら、GetDlgItem で取得するべし
746 名前:723 [2016/07/27(水) 09:02:22.97 ID:AcRDCNCg.net] 勘違いに気づきました! 本当にごめんなさい・・・ LB_GETCURSEL と CB_GETCURSEL を勘違いしていました。 自分が作っていたのはリストではなくコンボボックスでした。 お騒がせしました。 >>725 sendmessageは合ってました。 >>726 そんな方法もあるんですね。 それでやってもたしかに動きました。 勉強になりました。
747 名前:デフォルトの名無しさん mailto:sage [2016/07/27(水) 15:00:16.07 ID:nl1cCFz0.net] >自分が作っていたのはリストではなくコンボボックスでした。 病院池
748 名前:デフォルトの名無しさん mailto:sage [2016/07/28(木) 06:23:06.44 ID:17Ger5zU.net] >>706 WM_KEYDOWN の処理とかで使うなら Async無しの GetKeyState の方が玄人感が出ていいぞ。 違いは今のキーボードの状態を返すか(Asyncあり)、イベントメッセージが生成された時の状態を返すか(Async無し)。 ソースはms An application calls GetKeyState in response to a keyboard-input message. This function retrieves the state of the key when the input message was generated.
749 名前:デフォルトの名無しさん mailto:sage [2016/07/28(木) 19:08:46.10 ID:O8Vfrh0P.net] 相対論的手法での時間差の検出ですねわかります
750 名前:デフォルトの名無しさん mailto:sage [2016/07/28(木) 20:36:50.94 ID:svsTqv0A.net] Ctrl+マウスボタンとかの同時押しが妙に反応悪くて 心持ちグッとしっかり押さないと誤爆する こういうアプリはたいていGetKsyState使うべきところでAsync使ってる
751 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 06:12:19.39 ID:OSfj7rnr.net] 質問ですが、 Win32 APIがスレッドセーフかそうでないかって何見ればわかりますか 例えば、同一のPTP_TIMERオブジェクトに対して 複数スレッドからSetThreadpoolTimer()を呼ぶのは安全なのか どうなのか、とか (PTP_TIMERオブジェクトをスレッドごとに持たせれば気にしなくて良い問題でつが
752 名前:デフォルトの名無しさん [2016/07/30(土) 08:35:21.11 ID:/DtHQMWG.net] 同一の資源を別スレッドからアクセスして大丈夫なんてケースあるの?
753 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 08:52:51.28 ID:9HEOOrL7.net] そのAPIのリファレンスに特別に書かれているもの以外は 基本全部スレッドセーフじゃなかったかな
754 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 09:14:23.59 ID:RbMYjVy2.net] >>732 スレッドセーフと言う用語を誤解してると思うが、Win32 APIは全部スレッドセーフ 但し、CreateWindowしたスレッドでなければGetMessage出来ない、と言ったように制限のあるリソースもある
755 名前:デフォルトの名無しさん mailto:sage [2016/07/30(土) 09:21:37.15 ID:M4L+hnKH.net] >>733 例えば CRITICAL_SECTION は大丈夫でないと意味ないだろ