- 1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
- スレ立てるまでもない、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質問箱 Build65 pc11.2ch.net/test/read.cgi/tech/1208847084/
- 792 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:42:57 ]
- ビットマップを直接弄りたいので、
今までCreateCompatibleBitmapで書いていたコードをCreateDIBSectionで作り変えたら、 今まで精々数%しかCPU食っていなかったのに、数十%もCPUを食うようになってしまいました。 CreateDIBSectionで吐き出されたHBITMAPを使って描画するのは、重い処理なのでしょうか。 教えてください。
- 793 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:07:10 ]
- DIBとDDBの違いについて調べろ
- 794 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:29:45 ]
- 今更Win32APIw
- 795 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:48:40 ]
- 今でもWin32APIw
- 796 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:56:34 ]
- 今こそWin32APIw
- 797 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 04:53:14 ]
- 荒らしはwin32API質問箱をなくそうとしてるのか。ひどいな
- 798 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:16:25 ]
- ひどいね
- 799 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:13:21 ]
- >>792
CreateCompatibleBitmapは内部でVRAMにメモリを確保してる CreateDIBSectionはシステムメモリに確保してる あとは調べれ
- 800 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:17:22 ]
- VISTA未満の話だけどね
- 801 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:08:37 ]
- >CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
そういう嘘を堂々と書かないように
- 802 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:22:21 ]
- 訳:かまってほしいな
- 803 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:38:12 ]
- XP以前でVRAM上に確保されるかどうかはドライバ依存
Vista以降ではドライバに依存しなくなった
- 804 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:11:21 ]
- ATI系のボードはXPでもそういうの遅くなったんだっけ?
- 805 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:15:27 ]
- どうでもいいよ
DDB → VRAMに確保 DIB → システムメモリに確保 ATIとかVistaとかそんな少数派は無視でおk
- 806 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:22:18 ]
- やっぱりIDが欲しいな
- 807 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:45:57 ]
- 知らないならレスしないでください。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:11:38 ]
- 知っているのに知らん振り〜
- 809 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:24:31 ]
- ID欲しいというのは大概自演荒らし本人
セキュ板がまさにそれ
- 810 名前:デフォルトの名無しさん [2008/06/02(月) 15:28:24 ]
- 画面上の任意の色(白)を変える方法ってないですか?
試しに半透明ウィンドウを被せてみたら文字がかすんで使えません。 背景色を変更できないページやフリーソフトはまぶしくてしょうがないです
- 811 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:30:08 ]
- 説得力のない大概だな
- 812 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:32:59 ]
- モニターのコントラストとか輝度を調整してみては
- 813 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:42:41 ]
- >背景色を変更できないページ
つ ユーザーCSS >背景色を変更できないフリーソフト 配色の設定(COLOR_WINDOWとか)に基づいていない糞フトなんて 作者に文句言って修正してもらうか使わなければいいのでは ってか、最近の液晶って輝度が高すぎなんだよな モニターの設定で最も暗くしてもまだ眩しかったりするし
- 814 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:50:27 ]
- >>813
いいえ、液晶は発光しませんから。 バックライトが眩しいのは、劣化で暗くなることを想定して明る過ぎる光源を使っているからですね。
- 815 名前:810 [2008/06/02(月) 16:12:58 ]
- >>812
まぶしくない程度に下げると他が暗くなりすぎたりとなかなか難しいですが ちょっと調整してみました。どうもでした >>813 一応設定はしているんですが、変更を受け付けないページやpdfなんかが 目下最大の敵です。
- 816 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:21:02 ]
- 暗くすると色諧調が失われる糞モニタなら捨てたほうがいい。
その辺でグレースケールでも拾ってきて調べてみるといい。
- 817 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:24:45 ]
- ↑話を理解してない馬鹿
- 818 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 17:47:01 ]
- >>816
ハード板かCG板にお帰りください
- 819 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:58:15 ]
- 知らないならレスするなよクズ
- 820 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:03:03 ]
- >>816
>>819
- 821 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:19:19 ]
- >>810
まさがグレーの半透明被せてないか? たぶん純黒で不透明度低めのウィンドウを被せれば文字もくっきりするよ
- 822 名前:810 [2008/06/03(火) 00:18:58 ]
- >>821
はい、グレーのやつでした。さっそく試してみます。 やはり半透明ウィンドウでやるのがよさげなようですね。 ありがとうございました。そしてお騒がせしました
- 823 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:34:07 ]
- ディスプレイドライバに輝度やガンマ調整機能とか無いの?
俺のPCは少数派(笑)のATIだけどドライバの設定でそういう調節ができる。
- 824 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:47:34 ]
- SendMessageとかでメッセージ送れますけど
必ず届くのでしょうか?・・・不安で不安で・・・ 共有メモリとかファイル化して渡した方が良いでしょうか?
- 825 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:53:59 ]
- 何を渡したいかで決めようぜ
- 826 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:56:34 ]
- ack貰えばいいじゃん
- 827 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:56:17 ]
- SendMessageだと相手のメッセージループに割り込みが入るから大体届くんじゃねーの
ハングしてるスレッドにSendMessage投げてごらん? 投げた側もハングするから。
- 828 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:43:34 ]
- じゃあこうしよう
お前たちのような蛆虫はレスするなってことで
- 829 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 14:10:08 ]
- SendMessageCallbackやSendMessageTimeoutを使えば対象ウィンドウが応答したかは解るよ。
エラー時にはちゃんとGetLastErrorの値も見るように。
- 830 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:18:29 ]
- HWND hwnd = FindWindow( ... );
// この間にhwndがDestroyされると届かなくなるので必ず届くなんて不可能 SendMessage( hwnd, ... ); 昔9x使ってたら、DestroyしたHWNDが割と近い時間で他のウィンドウに使用されて困ったことがあったけど NTだと確か上位16ビットが再利用カウンタだからそういう衝突は無いかな
- 831 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:31:58 ]
- 初めて聞いたぞそれ
- 832 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:26:56 ]
- あっそ
- 833 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:50:47 ]
- でっていうwwwwwwwwwwww
- 834 名前:デフォルトの名無しさん [2008/06/03(火) 21:30:08 ]
- SendMessageした先からSendMessageで返事を返してもらう、って出来る?
- 835 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:18:24 ]
- スレッドが違う前提の話だよな。
SendMessageをもらって、ウインドウプロシージャが走ってから そいつが返事をSendMessageするまでの間に、 ReplyMessageしとけばいけるんでない。
- 836 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:38:11 ]
- SendMessageを投げあってデッドロック!!!マジカッコイイ!!!
- 837 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:39:32 ]
- SendMessageへの返事は返値でしなさいよw
- 838 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:59:01 ]
- SendMessageは同期させたいときに使う。
- 839 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:17:41 ]
- >>149
>フォーカスを失っても青のままにしたい subclass化して WM_KILLFOCUS をブロック
- 840 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:01:07 ]
- >>830>>835
大丈夫。SendMessageの戻り待ちで止まっているスレッドのウィンドウへSendMessageが送られると、 Windowsが直接ウィンドウプロシージャを呼び出す。 Advanced Windows辺りに書いてあったはず。
- 841 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:47:02 ]
- 質問です。
BitBltでビットマップの転送を行うとして、、 転送先のビットマップの大きさの範囲を超えるように引数を指定した場合、 この動作の定義はどうなっているのでしょうか? はみ出たところにあったデータが壊れる心配はないのでしょうか?
- 842 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:03:42 ]
- >>841
GDIはそういう心配する必要なし
- 843 名前:841 mailto:sage [2008/06/04(水) 04:29:13 ]
- >>842
これで心置きなく転送できます。 ありがとうございました。
- 844 名前:デフォルトの名無しさん [2008/06/04(水) 16:32:06 ]
- 簡易的なタブエディタを作っているのですが
テキストは開いた順に配列に入れて、たとえば2番目のタブを選択したら 配列の2番目から取り出して表示するという方法でいいんですか?
- 845 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:36:41 ]
- そんなもん貴方がどう実装したいのかによるでしょ
メモリ食ってもいいのか、なるべく食わない方がいいのかとか つかAPI関係ないだろ
- 846 名前:デフォルトの名無しさん [2008/06/04(水) 16:36:52 ]
- よくわからんけどいいよ
- 847 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:44:40 ]
- タブエディタが何か分からない
- 848 名前:デフォルトの名無しさん [2008/06/04(水) 16:46:36 ]
- >>847
しね
- 849 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:49:52 ]
- タブ譜のエディタですね、分かります
- 850 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:55:55 ]
- つまんね
- 851 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:58:40 ]
- 訳:かまってほしいな
- 852 名前:844 [2008/06/04(水) 17:00:22 ]
- >>845
この方法だとメモリを食いそうなんでこれでいいのか、 他に良いスタンダードな方法があるのかと疑問に思ったので。 タブとかeditコントロールはAPIなのでここで質問してみました >>846 よさそうならこれで作ってみます。どうもです
- 853 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:34:54 ]
- Win32APIでエディタを作っています.
ステータスバーに現在のキャレット位置を表示するために 下記のコードを書いてみたのですが,列の表示が上手くできません. 何か良い方法をご存知でしたら教えて下さい. m(_ _)m caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y)); pt.y = HIWORD(caretPos) + 1; caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, 0)); pt.x = LOWORD(caretPos) + 1; wsprintf(str, " %d 行, %d 列", pt.y, pt.x); SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str);
- 854 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:59 ]
- >>852
メモリの使用量なんて作ってみたらわかることだ。 初心者なら、作る前に答えを欲しがらずに、作って考えることだ。
- 855 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:03:32 ]
- >>854
偉そうに上級者面するな
- 856 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:12:23 ]
- そいつゲイツだぞ
- 857 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:39:06 ]
- だから?
- 858 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:41:49 ]
- お布施しろ
- 859 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:20:18 ]
- どうやって?
PayPalで送金するのか?w
- 860 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:11:05 ]
- とりあえず、VistaのUltimateを10本ほど。
- 861 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:42:29 ]
- ケチケチすんなよ
MSDN Premium Subscriptionをパッケージで50本くらい買えばおk
- 862 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:25:19 ]
- >>860
Vistaなんてイラネーヨ >>861 おk 明日買ってくる
- 863 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:14:29 ]
- >>853
キャレット位置ならEM_GETSELから調べ始めればいいんじゃね?
- 864 名前:いのぶー mailto:sage [2008/06/05(木) 22:58:59 ]
- ペイントを操作して、絵を描こうとしているのですが、ウィンドウをポップアップできてもドローイングエリアを
クリックできません。 C#の板でスルーされたのでやってきました、お願いいたします、教えていただけませんでしょうか? 。 [DllImport("USER32.DLL")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindowEx(IntPtr hWnd, IntPtr hwndChildAfter, String lpszClass, String lpszWindow); [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam); [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); [StructLayout(LayoutKind.Sequential)] public struct RECT { public int left; public int top; public int right; public int bottom; } const uint WM_LBUTTONDOWN = 0x201; const uint WM_LBUTTONUP = 0x202; public void RemotePaint() { IntPtr hWnd = FindWindow("MSPaintApp", null); SetForegroundWindow(hWnd); hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null); RECT winRect = new RECT(); GetWindowRect(hWnd, ref winRect); PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top); PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top); }
- 865 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:03:24 ]
- >>864
PostMessageでDOWNした後UPする前にスリープを入れる
- 866 名前:いのぶー mailto:sage [2008/06/05(木) 23:16:45 ]
- 早速のレスをありがとうございます。
Sleepを入れてみたんですが、点を打ってくれませんでした。 (T_T) PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top); System.Threading.Thread.Sleep(500); PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);
- 867 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:53:40 ]
- [DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd); C丼はあまり詳しくないが、この辺のAPI宣言って合ってるのか? Win32のBOOLとC++や.NET系のboolって別物のはずだが
- 868 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:58:22 ]
- それはあってるよ。
C#のboolは1バイトだけど、Platform呼び出しの際は、 特に指定しなければデフォルトで4バイトBOOLにマーシャリングされる。
- 869 名前:いのぶー mailto:sage [2008/06/06(金) 00:01:48 ]
- 一応、ペイントはアクティブになってくれています。
この辺りとかでは、 public static extern bool SetForegroundWindow(IntPtr hWnd); って書いたサンプルがあったので、それを参考にしています。 ttp://www.atmarkit.co.jp/fdotnet/dotnettips/151winshow/winshow.html
- 870 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:06:43 ]
- >>868
へ〜そうなんだ VB6とかBooleanじゃなくてLongにする必要があったのに、便利な時代になったなぁ
- 871 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:21:52 ]
- クライアント領域の右下隅をクリックしたいように見えるけど、
GetWindowRectの結果使ったらボーダーの分だけはみ出さないかい? そもそもその右下の点に画像はあるのか
- 872 名前:いのぶー mailto:sage [2008/06/06(金) 03:49:20 ]
- RECTを取る前に
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null); で、hWndにドローイングエリアのウィンドウハンドルをセットしなおしていますが、 それではダメでしょうか? hWndを使いまわしていて、汚くてごめんなさい。
- 873 名前:いのぶー mailto:sage [2008/06/06(金) 03:55:58 ]
- 追伸ですが、以下のように、座標を固定で指定してやってもダメでした (T_T)
PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100); System.Threading.Thread.Sleep(500); PostMessage(hWnd, WM_LBUTTONUP, 100, 100);
- 874 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 06:26:02 ]
- ふつーSendInputとか使う。
- 875 名前:デフォルトの名無しさん [2008/06/06(金) 07:13:29 ]
- SendInputってフォアグラウンドじゃないとだめじゃなかったっけ
- 876 名前:853 mailto:sage [2008/06/06(金) 07:37:22 ]
- >>863
回答ありがとうございます. EM_GETSEL は有力ですよね. 実は自分も最初はそれを考えて, pt.x = LOWORD(SendMessage(hEdit , EM_GETSEL , NULL , NULL)); として列の位置を求めようとしていたのですが, ↓(1行,1列) 1234\r\n 6 ↑(2行,1列)になってほしいけど, 実際には(2行,6列)... ORZ という結果になってハマってしまったので, ここで質問してみました. 結構メジャーな目的なので,どなたかご存知の方が いらっしゃいましたら良い方法をお願いします. m(_ _)m 後の人のためにも. (できればWin32APIで,テキスト全体をバッファに入れて改行を数えるとかは 最後の手段かなと思っています.)
- 877 名前:853 mailto:sage [2008/06/06(金) 08:11:01 ]
- 解決しました.
offset = LOWORD(SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM((WORD)0, pixPt.y))); を設定して引いてやるだけでした. 前にこの方法も試していたのですが,pix での位置と char型 での位置が きちんと区別されていなかったために失敗していました. お騒がせしました.
- 878 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:45:22 ]
- (WORD)0
なんでこんな書き方するのか分からん
- 879 名前:デフォルトの名無しさん [2008/06/06(金) 15:22:28 ]
- 分からないならレスするなつってるだろ?
- 880 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:38:14 ]
- すいません
- 881 名前:デフォルトの名無しさん [2008/06/06(金) 15:41:37 ]
- どんまい
- 882 名前:デフォルトの名無しさん [2008/06/06(金) 16:14:32 ]
- 吸いませんじゃなくてすみませんだろ?
- 883 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:17:57 ]
- 吸わないよ
- 884 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:23:21 ]
- (WORD)0
なんでこんな書き方するのか分からん
- 885 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:25:28 ]
- break;
- 886 名前:デフォルトの名無しさん [2008/06/06(金) 16:59:07 ]
- 訳:かまってほしいな
- 887 名前:いのぶー mailto:sage [2008/06/06(金) 22:01:53 ]
- 皆様、ありがとうございます。
sendInputというキーワードのおかげで、下記のページを見つけることができました。 homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268 おかげで、sendInputを使って、点が打てました。 これを取っ掛かりになんとかやってみたいと思います。
- 888 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:10:33 ]
- >>872
GetClientRectでとれるのが「クライアント領域」、早い話がウィンドウ内部の領域 マウスイベントで指定する座標系はこれが基準。 GetWindowRectでとれるのは「ウィンドウ領域」、境界線とかも含んでいるので 一般にクライアント領域より大きい。 ちなみにRectで指定する座標は「右と下が1大きい」ものなので(理由は省略) >866の計算だと、GetClientRectの結果使ったとしてもやはり1ドットはみだす。 以上参考までに。
- 889 名前:いのぶー mailto:sage [2008/06/06(金) 23:31:46 ]
- 888さん、ありがとうございます。(ゾロ目ですね・・・)
GetClientRectでとれる「クライアント領域」が基本とのことなのですが、 GetWindowRectでドローイングエリアの座標領域を取って、Cursorを動かして、 SendInputクリックで左ボタンダウンとアップイベントを作ってクリックしているのですが、 「クライアント領域」を使った、いい方法があるのでしょうか? 当方、「クライアント領域」の有効な使い方が解っていないので、 よろしければご教授願えませんでしょうか。教えていただけると うれしいのですが・・・
- 890 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:16:53 ]
- >>889
有効とかどうとかじゃなくて、基本的な区別がわかってない 君がいう「ドローイングエリアの座標領域」の外側と内側とか 座標系の基準の違いとか色々ごっちゃにしてるって話 ここで説明できるような内容じゃないので入門書読め
- 891 名前:いのぶー mailto:sage [2008/06/07(土) 00:25:15 ]
- 別に、原点が画面の左上か、ウィンドウ(又はウィジェット)の左上というだけの話では?
- 892 名前:いのぶー mailto:sage [2008/06/07(土) 00:31:04 ]
- こんな風に書いているので、問題があったら知りたいなぁという以上の意味はないので・・・
// ドローイングエリアの真ん中へ移動 Cursor.Position = new Point((winRect.left + winRect.right) / 2, (winRect.top + winRect.bottom) / 2); //クリック INPUT[] input = new INPUT[2]; // 計2イベントを格納 input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(2, input, Marshal.SizeOf(input[0]));
|

|