- 1 名前:デフォルトの名無しさん mailto:sageteoff [2017/11/11(土) 19:23:00.69 ID:TpLoCFAx.net]
- Win32APIについての質問はこちらへどうぞ。
■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで ■過去スレ Win32API質問箱 Build123 mevius.2ch.net/test/read.cgi/tech/1475897582/ Win32API質問箱 Build122 echo.2ch.net/test/read.cgi/tech/1451988219/ Win32API質問箱 Build121 echo.2ch.net/test/read.cgi/tech/1438695290/ Win32API質問箱 Build120 echo.2ch.net/test/read.cgi/tech/1428570962/ ■関連スレ Visual Studio 2017 Part4 mevius.2ch.net/test/read.cgi/tech/1509244956/ 【C++】 DirectX初心者質問スレ Part40 【C】 mevius.2ch.net/test/read.cgi/tech/1474782237/
- 231 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 17:18:38.57 ID:ghAeZDtA.net]
- IMM系列はWin32APIだろ
小学生は黙ってろよ
- 232 名前:219 mailto:sage [2018/02/25(日) 19:33:33.45 ID:WLgWOXVj.net]
- 今やっていることは、仮想キーボードを使って文字入力する画面があるのですが、
入力中に予測変換候補ウィンドウが仮想キーボードに被ってしまって仮想キーボードの キーが押せなくなる(もちろん移動すればいいですが)問題の回避を検討しています。 文字入力中に EnumWindow()等を使って調べてみましたが、関係しそうなのは クラス名 CiceroUIWndFrame, MSCTFIME Composition, mscandui40.* あたりで、 mscandui40.candidate を DestroyWindow()すれば予測変換・変換候補ウィンドウともに 非表示にはできました。 しかし mscandui40.candidate は MS-IME 使用時のみしか捕まえられませんし、 MS-IME のバージョンでクラス名が変わってしまう可能性もあるのでやり方を変えました。 というか、正攻法では Imm系の処理で行けそうです。
- 233 名前:219 mailto:sage [2018/02/25(日) 19:35:36.97 ID:WLgWOXVj.net]
- WM_IME_NOTIFY メッセージで IMN_OPENCANDIDATE を処理すれば何とかなりそうではあります。
ググってC#のサンプルは見つけましたが、それは上記のメッセージを捕まえてその後処理せずに (ように見える)いるだけみたいです。 しかし、こちらはC/C++なのでそのメッセージを捕まえて、処理せずリターンしている (CallWindowProc()を処理しない)ものの変換候補ウィンドウが表示されてしまいます。 解決は近そうなのですが、ご助言お願いいたします。
- 234 名前:219 mailto:sage [2018/02/25(日) 19:37:31.33 ID:WLgWOXVj.net]
- 見つけたサイトの短縮URLを貼ると書き込めなかったので、検索ワードを貼ります。
「IMEの変換ウィンドウを表示しないようにする」 (ページタイトルそのまま)
- 235 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 19:38:41.80 ID:eoTI2sxe.net]
- >>229
だからWin32APIじゃないってのに
- 236 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 21:20:41.03 ID:ghAeZDtA.net]
- かまってちゃんの幼稚園児はおうちに帰ってね
- 237 名前:219 mailto:sage [2018/02/25(日) 21:31:20.85 ID:WLgWOXVj.net]
- >>231
Win32APIです。
- 238 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 22:25:31.77 ID:eoTI2sxe.net]
- >>233
プ
- 239 名前:デフォルトの名無しさん [2018/03/02(金) 19:26:39.11 ID:EPNBBNtc.net]
- https://github.com/pauldotknopf/WindowsSDK7-Samples/blob/master/winui/WindowsSearch/IFilterSample/Dll.cpp
このサンプルソースで使われてる #define SZ_FILTERSAMPLE_CLSID L"{6C337B26-3E38-4F98-813B-FBA18BAB64F5}" #define SZ_FILTERSAMPLE_HANDLER L"{1AA9BF05-9A97-48c1-BA28-D9DCE795E93C}" この部分のguidって自分用に修正すべきguidだよね? なんかこのguidググるとWindows10のPDF用フィルターで使ってるみたいでよく分からんぞ
- 240 名前:デフォルトの名無しさん [2018/03/03(土) 10:12:18.29 ID:Cp/R2Wou.net]
- どうせ変えるんだからサンプルの値が何に使ってたかなんて考える必要ないやん
- 241 名前:41 mailto:sage [2018/03/08(木) 22:19:16.84 ID:SokprYE+.net]
- guidそのまま使ったらまずいかな
- 242 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:43:22.53 ID:kGuAlqnM.net]
- 個人で遊ぶぶんにゃ問題起きることなんてまずないよ
- 243 名前:デフォルトの名無しさん [2018/03/10(土) 15:29:17.15 ID:GkfRicR7.net]
- うむ
- 244 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 09:17:43.23 ID:kVx+PpNX.net]
- ある自作DLLの処理の中でGetWindowRectでウィンドウの座標を取得する場面があります。
Pythonから呼び出すと正確な値が取得できるのですが、C++から呼び出すと実際の数値と異なる値が取得されてしまいます。 同じapiを呼び出してるはずなのになぜ違いが出るのでしょうか?
- 245 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 10:18:22.88 ID:9wDOvV2B.net]
- クイズすんなっての
全然違うとこでバグってんだろどうせ
- 246 名前:デフォルトの名無しさん [2018/03/12(月) 16:01:49.08 ID:CSgz2Faf.net]
- クライアントのハンドルかアプリのハンドルかで間違うケース
右下の座標を幅と高さで間違うケース
- 247 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 14:29:33.71 ID:8m56Wtsd.net]
- GetWindowRectとかはvista以降色々あってdpi上げてると挙動がおかしくなる
挙動をきちんとする方法はぐぐれ
- 248 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 13:18:40.44 ID:iQOXhM1r.net]
- >240
セットでマウスカーソル合わせたら?
- 249 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 16:53:36.96 ID:QYLzsgv6.net]
- dpi manifestでぐぐるよろし
- 250 名前:片山博文MZ mailto:sage [2018/03/23(金) 22:41:11.83 ID:8hwURVKL.net]
- https://github.com/katahiromz/EntryPointExamer
エントリーポイントの静的解析ツールを作ったよ。EXEがどのWindowsで起動するかを簡易的にチェックできるよ。
- 251 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 15:39:07.71 ID:e7kV7Arm.net]
- https://blogs.msmvps.com/gdicanio/2018/03/27/string-performance-tests-atl-vs-stl/
という事です
- 252 名前:片山博文MZ mailto:sage [2018/03/28(水) 15:47:10.03 ID:prHO3Z7S.net]
- Short String Optimization (SSO)凄い。最初から標準のstd::stringを使えば良かったんや。
- 253 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 19:56:58.54 ID:RZwUzQ0T.net]
- 何を今さら
- 254 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 13:07:18.94 ID:PWmnEzsZ.net]
- OneDrive というアプリもSTLを使っている。以下の内容のログファイルaria-debug-nnnn.logをTEMPに吐くことから察せられる。
C:\build\aria-cpp-v1\clienttelemetry\src\LogManagerImpl.cpp(626): class Microsoft::Applications::Telemetry::ILogger *__thiscall Microsoft::Applications::Telemetry::LogManagerImpl::Initialize( const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const struct Microsoft::Applications::Telemetry::LogConfiguration &) WARNING: Invalid in-ram queue size (20971520), adjusted to max ram queue size
- 255 名前:デフォルトの名無しさん [2018/04/01(日) 13:14:21.91 ID:GlQ4Mmqm.net]
- OneDriveってアプリなのか?
- 256 名前:片山博文MZ mailto:sage [2018/04/02(月) 15:35:23.63 ID:APYGmZJZ.net]
- 記事書いたよ。Win32の学習にお使い下さい。
katahiromz.web.fc2.com/win32/page01.html
- 257 名前:デフォルトの名無しさん [2018/04/02(月) 15:55:39.87 ID:r6uHUG7/.net]
- 用語の出し方がめちゃくちゃ
誰を読み手のターゲットにしてるのか
- 258 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 15:59:46.30 ID:7bVJtASd.net]
- https://msdn.microsoft.com/ja-jp/library/d1587c1h.aspx
ウィンドウズでは exe,dllは共に実行可能ファイル
- 259 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:25:31.45 ID:Oln58DHN.net]
- せめてメッセージクラッカーとリソースエディタのページ背景統一したら?
- 260 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 13:42:26.76 ID:hocIISHS.net]
- .NET FrameworkにあるDataGridViewのような物って、Win32にありますか?
- 261 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 13:56:57.67 ID:R6gDm2yr.net]
- ListViewかなー
- 262 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 13:44:33.19 ID:hda/dUZf.net]
- _tmainで始まるコンソールアプリで、ウインドウプロシージャを使う方法はありますでしょうか
WM_TIMERを使いたいのですが・・
- 263 名前:片山博文MZ mailto:sage [2018/04/05(木) 13:47:50.84 ID:7o7fJyTF.net]
- >>258
Sleepでミリ秒待つ。
- 264 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:01:34.32 ID:hda/dUZf.net]
- >>259
やっぱりコンソールだとそのやり方になるんですか・・・ Sleepでやりますありがとうございます
- 265 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:11:50.90 ID:cRNyIYvE.net]
- タイマースレッドからWM_TIMER相当のをバンバン投げりゃいいな
- 266 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:21:45.59 ID:N5yR+hE9.net]
- ウインドウ作れば・・・
- 267 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:32:45.47 ID:71zQ6xbb.net]
- デジャヴかと思った
https://social.msdn.microsoft.com/Forums/vstudio/en-US/96639123-b543-4ca3-b8ca-0cbbde4621f1/timer-s-in-win32-console-application?forum=vclanguage
- 268 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 19:58:46.14 ID:Oqjfw3cg.net]
- >>258
HWND_MESSAGEでぐぐればよろし
- 269 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 01:02:24.51 ID:TZTB2D9P.net]
- コンソールアプリなら、プロシージャを使わずに
マルチメディアタイマー周期を設定してコールバックからイベントを送って メインループ側は WaitForSingleObject で待ったりすることが多い 昔からゲームアプリでよく使われてる
- 270 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 08:40:18.45 ID:WLNY2IeJ.net]
- ありがとうございます。
HWND_MESSAGEとWaitForSingleObject、ちょっと試してみます。
- 271 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:56:05.76 ID:AEfKVJYt.net]
- 次の質問はスレッドかな
- 272 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 06:34:16.89 ID:NQAA1W7E.net]
- CPUの周波数と温度を取得する方法を教えていただけないでしょうか
CPU使用率(%)については、下記サイトのようにpdh.hを使う方法で取得できました home.a00.itscom.net/hatada/windows/tips/performance02.html
- 273 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 06:57:09.27 ID:ISGzNLI0.net]
- WMI
- 274 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 09:39:47.05 ID:NQAA1W7E.net]
- >>269
こちらを参考にオペレーションシステムの名前取得まではできました もう少しいじればできそうなので頑張ってみます。ありがとうございます https://msdn.microsoft.com/en-us/library/aa390423.aspx
- 275 名前:デフォルトの名無しさん [2018/04/08(日) 11:01:23.12 ID:YK+KPtHu.net]
- wshとかpythonとかでも同じ方法でもっと楽に取れるから
そっちでテストプログラム書いてから逆移植すると楽
- 276 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:31:10.35 ID:ISGzNLI0.net]
- その逆移植が面倒な部分だからな
一番簡単なのはスクリプトの結果受け取る方法。でもこういうの嫌がる人多いw
- 277 名前:デフォルトの名無しさん [2018/04/08(日) 11:42:37.54 ID:YK+KPtHu.net]
- 逆移植する前にもうやりたいこと出来たからそこで終わるパターンが最近多い
- 278 名前:デフォルトの名無しさん [2018/04/08(日) 11:55:02.91 ID:rGuvDNEz.net]
- CPUの温度ってCPU自身が持ってるけど、それにアクセスするには特権が必要で、そのためには署名されたデバイスドライバーが必要。
フリーソフトで温度を取れるのもあるけど、自前でドライバーを用意してるか、MS的にグレーっぽいドライバーを利用してる。
- 279 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 07:41:24.53 ID:4rymfX2t.net]
- こちらのサイトを参考に、WMIによる温度取得できました
https://stackoverflow.com/questions/23314886/get-cpu-temperature しかし、何度アクセスしても27.85℃のままです 試しに水を止めて50℃まで上げてからプログラムを立ち上げてみましたが、27.85℃でした リアルタイムの温度を取得するのは無理なのでしょうか
- 280 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 08:45:28.69 ID:aqcvNYtD.net]
- 誰かが作ったwmiのツール使って温度見て同じく27.85だったらcpu(ドライバー)が原因
きちんとしてたらおまえが原因
- 281 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 09:02:21.02 ID:4rymfX2t.net]
- 一文字も変えずに丸々コピペしてみましたがやはり27.85と表示されます・・
- 282 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 09:23:51.04 ID:JpSN62c4.net]
- こちらでも同じく temp=27.850000 でした (Visual Studio 2015 Community)
- 283 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 09:47:42.76 ID:aqcvNYtD.net]
- > it's always the same and it's not the CPU temperature at all
ソースコードのコメントがこれなんだから、丸々コピペならそうなるんじゃないか? だから丸々コピーしても意味ないだろ。原因探せよ・・・
- 284 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 12:21:58.67 ID:4rymfX2t.net]
- WMIでは無理なんですね・・
winring0というもののサンプルコードをいじってみたところ取得できたので、こちらを移植する方法でやってみます ありがとうございました
- 285 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:27:04.14 ID:iBEYls0Z.net]
- 結局>>274ってことだったんだな
- 286 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:52:46.99 ID:/jbUbJls.net]
- おまえらがWMIなんて言うから無駄な遠回りしとるやんかわいそうに
- 287 名前:デフォルトの名無しさん [2018/04/09(月) 14:54:53.98 ID:GdkyYm9A.net]
- 27.85℃=301K
- 288 名前:デフォルトの名無しさん [2018/04/09(月) 22:58:31.99 ID:ph8eLpPP.net]
- Windows10になって増えたWin32APIとか調べたい場合どうするのが確実?
ネットで調べるとXP以前の例ばかり
- 289 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 02:38:53.85 ID:M1sGJjGL.net]
- >>284
ググってみると SDK のヘッダの変化を見てチェックしてる人いるな https://naughter.wordpress.com/2015/05/15/changes-in-the-windows-10-sdk-compared-to-windows-8-1-part-one/ https://naughter.wordpress.com/2015/05/24/changes-in-the-windows-10-sdk-compared-to-windows-8-1-part-two/ 細かい API 一つ一つの追加とかまでは書かれていないけど参考になるんじゃないだろうか winerror.h に SQLite のエラーコードが(740行も!)追加されたとか豆知識得られた この人は最近のSDKについても調べてる
- 290 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 02:40:40.00 ID:M1sGJjGL.net]
- いやWindows10で何が追加されたかを調べたい
という質問じゃなかったのか、もしかすると…
- 291 名前:デフォルトの名無しさん [2018/04/10(火) 13:42:13.82 ID:JIHFaEMv.net]
- ヘッダ比べるのは現実的な方法
- 292 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 16:30:34.70 ID:hrbxCJ/r.net]
- 音声にいろいろなエフェクトをかけてスカイプやdicordなどに流せるようなソフトを作りたいんですけど
仮想デバイスを作るにはどうすればいいんでしょうか マイク入力をうけとってエフェクトをかけてスピーカーから再生するまではできたんですが 他のアプリに仮想デバイスとしてみせる方法が分からなくて困っています
- 293 名前:デフォルトの名無しさん [2018/04/10(火) 16:45:17.90 ID:La3PY+dC.net]
- VST かな
- 294 名前:デフォルトの名無しさん [2018/04/10(火) 16:48:11.15 ID:La3PY+dC.net]
- この辺かな
https://qiita.com/funatsufumiya/items/c2a009a300ecdc88247a もう古いって言われるかも知れんが
- 295 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 16:50:37.00 ID:hrbxCJ/r.net]
- >>289
すばやい返答ありがとうございます 軽く検索みてみたらGUIみたいなのがたくさんでてきます サンプルコードが一切でてこないですけど プログラムの中にうめこむライブラリとしてつかえるものなんでしょうか?
- 296 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 16:51:39.43 ID:hrbxCJ/r.net]
- >>290
分かりやすいサイトありがとうございます サンプルコードがあるので読んで見ます
- 297 名前:デフォルトの名無しさん [2018/04/10(火) 16:53:47.39 ID:La3PY+dC.net]
- あとフィルタはたぶんこっち
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/windows-audio-architecture https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd317589(v=vs.85).aspx https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd375473(v=vs.85).aspx がんがれ
- 298 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 19:08:17.02 ID:n4pH5xN4.net]
- 必要なのはVSTじゃなくて仮想デバイスドライバの作成方法なんじゃないのか?
- 299 名前:デフォルトの名無しさん [2018/04/11(水) 00:11:41.02 ID:5V3NvSPI.net]
- そだねーJap
- 300 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 01:33:21.32 ID:nGNQyhwo.net]
- vst 経由なら vst skype とかでググればやり方は見つかるし
- 301 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 16:45:30.30 ID:oc5yP9in.net]
- 自アプリで簡単な手書きメモ機能があるのですが、Win10タブレット端末でペン操作すると
うまく文字が書けません。 短い線が書けない感じです。 恐らくマウス周りのメッセージの代わりに WM_GESTURE 系メッセージが来ていると思うのですが、 真っ当にこれらのメッセージを処理するのではなく、自アプリではこれまで通りマウス処理しかしない と何らかの方法で設定・宣言することによってペン・タッチ操作関連のメッセージを来なくすることは 可能でしょうか? OSレベルで全体的にこの機能をOFFにすることは可能なようですが、自アプリだけこれを適用できれば と思っています。 よろしくお願いします。
- 302 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 19:46:07.75 ID:xs6mCoGI.net]
- 自アプリだろ?要らないメッセージ無視すりゃいいじゃん
- 303 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 21:23:09.60 ID:4xNEGOrU.net]
- >>297
使ったことないけど WM_TABLET_QUERYSYSTEMGESTURESTATUS で色々disableしてあげれば良いんじゃないだろうか
- 304 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 21:31:47.99 ID:4xNEGOrU.net]
- ほかに .Net だとメッセージフィルターでWM_POINTERDOWN / UP を無視するなんてやり方を紹介している人も多い
- 305 名前:デフォルトの名無しさん [2018/04/11(水) 23:34:57.38 ID:HwL4BRgS.net]
- フルボッコすぎる
- 306 名前:片山博文MZ mailto:sage [2018/04/12(木) 13:06:30.81 ID:S0A11kDt.net]
- https://teratai
- 307 名前:l.com/questions/121464?sip=n0070000_019&uid=11595
早く返事が来ないかな。ワクワク [] - [ここ壊れてます]
- 308 名前:297 mailto:sage [2018/04/12(木) 17:22:14.25 ID:1t6GyJnt.net]
- 一応分かりやすく画像で状況を補足します。
imgur.com/pvaetNV.png ペンでタッチ(押下)したときに、画像左側の◎印が出ます。 この◎印の中でぐりぐり動かしても何も描画できません。 (既存処理のWM_LBUTTONDOWN〜WM_MOUSEMOVEの流れでの描画処理が実行されない) この◎印からはみ出すようにペンを動かした瞬間、描画処理が働き出し、◎印が薄くなっていき消えます。 やりたいことは、◎印内でも描画させたいです。 現状では点などが描けませんので、例えば「う」だと上の部分が描きにくくて「つ」と描いてしまうことが多いです。 >>298 >>300 WM_POINTERDOWN / UP を含む、その他思い付く関連メッセージを無視するように試してみましたが、 ペン入力自体ができなくなりました。 >>299 WM_TABLET_QUERYSYSTEMGESTURESTATUS で色々disableも試してみましたが、 TABLET_DISABLE_PRESSANDHOLD を返した時に◎印の表示はなくなりました。 しかし、描画に関しては変化無くその領域に相当する部分からはみ出ないと描画できません。 WM_POINTERDOWN 等のメッセージが来たら WM_LBUTTONDOWN を投げる等試してみましたが 状況が変わりません。 WM_TOUCH 系の処理を追加すれば対処はもちろん可能でしょうが、簡単に既存処理を生かせる方法が ないものか、情報をお持ちの方よろしくお願いします。
- 309 名前:片山博文MZ mailto:sage [2018/04/12(木) 17:59:17.97 ID:S0A11kDt.net]
- インクとジェスチャーの両方が必要ということかな。
- 310 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 18:22:16.36 ID:nMaemNOx.net]
- いやゼスチャの判定が優先されるから少し動かさないと WM_LBUTTONDOWN とかが来ないんだよ
それを簡単にマウスの時と同様すぐメッセージが来る動作にできないか、という話 ゼスチャ無効化してもダメとは面倒な話だよね
- 311 名前:片山博文MZ mailto:sage [2018/04/12(木) 19:12:40.30 ID:S0A11kDt.net]
- 今日の収穫は、OLEオートメーションがめちゃややこしいことがわかっただけだ。
- 312 名前:片山博文MZ mailto:sage [2018/04/12(木) 19:15:03.07 ID:S0A11kDt.net]
- 言語でネイティブにサポートされたヴァリアント型があればもっと簡単なんだが。
- 313 名前:41 mailto:sage [2018/04/12(木) 19:19:31.30 ID:gePCm00Z.net]
- そもそもマウスとジェスチャー分ける必要あったんかいな
軌跡はないが矛盾はしないだろうに
- 314 名前:名無し@キムチ [2018/04/12(木) 19:35:21.15 ID:jXGrykA6.net]
- コンソールのmain関数のコマンドライン引数argv、argcを引数にとる関数があるのですが、
これはwinmain関数内でも使えますか? その場合argv、argcの代わりにcommandshowとcommandlineを引数にする必要があるとおもうのですが、 どのようにすればエラーが出ずにargv、argcをcommandshowとcommandlineに変換できますか? よろしくお願いいたします。
- 315 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 19:43:37.70 ID:ZuhK/vm7.net]
- __argc、__argvでアクセスできる
- 316 名前:名無し@キムチ [2018/04/12(木) 19:45:08.29 ID:jXGrykA6.net]
- >>310
ありがとうございます。 早速それでやってみます。
- 317 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 19:45:11.97 ID:ifFSa3KQ.net]
- >>309
なんかどっちに変換したいのかよくわからんが __argv、__argc、GetCommandLineW、CommandLineToArgWあたりで調べてよきにはからへ
- 318 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 20:12:39.23 ID:ofGuXLCP.net]
- >>303
そんな古臭いメッセージ処理せずに、下記のメッセージで処理したら? WM_POINTERDOWN: WM_POINTERUPDATE: WM_POINTERUP: win8以降しか対応してないけどな。xp/vista/7とかでタッチパネルの処理は切り捨て推奨
- 319 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 21:38:47.94 ID:Cv0USnCZ.net]
- 旧来のアプリなんかタッチやフリックに対応してるわけないのに、そんなアプリに対してそれらのメッセージを投げつけて
マウス関連のメッセージを投げないという仕組みがMSらしいというか融通が利かないというか、バカバカしいな。 タッチやフリックを要求するアプリのみにそれらのメッセージ投げるだけでいいのに。 旧来アプリでも旧来アプリなりにペンタッチで動くようにすりゃ、裾野も広がりやすいだろうにな。
- 320 名前:297 mailto:sage [2018/04/12(木) 22:59:34.36 ID:1t6GyJnt.net]
- ちょっと古いシステムなのでそのままちょっと直すだけで動かないものかと
試行錯誤していました。 313さんの仰る方向でも試行錯誤を続けていたのですが、既存プログラムの 出来がおかしいのか今のところうまく行っていません。 理屈で言えばうまく行くはず・・・なので、このまま調整を続けようと思います。 皆さんありがとうございました。
- 321 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 23:04:18.01 ID:ifFSa3KQ.net]
- >>314
いやタッチのメッセージを処理しなけりゃ普通にマウスのメッセージにフォールバックはされるぞ マウスメッセージのみで手を抜きたいけど目的の品質の届かないって趣旨の質問じゃろ
- 322 名前:297 mailto:sage [2018/04/12(木) 23:33:07.34 ID:1t6GyJnt.net]
- >>316
上でも書きましたが、タッチのメッセージを処理しないようにすると ペン入力自体全くできなくなりました。
- 323 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 23:44:04.43 ID:fS8U0BFZ.net]
- 関係あるんだかないんだかはわからんが
EnableMousePointer なんて api があるな
- 324 名前:デフォルトの名無しさん mailto:sage [2018/04/12(木) 23:59:24.17 ID:ifFSa3KQ.net]
- Surfaceでしか確認してないけどそういやFCUだかでペンのスワイプの既定が
カーソル移動からスクロールに変更されてたなあ そのへんが原因かもね
- 325 名前:297 mailto:sage [2018/04/13(金) 02:19:42.71 ID:4MPC6lcI.net]
- >>318
ありがとうございます。 飛びついてみましたが、変化ありませんでした。 逆の考え方で、マウスをポインティングデバイスとして使うためのものかも知れませんが、 マウス操作しても前と変わらずでした。 もしかするとマウスでフリック操作などができるようになるのかも?という気がしますが、 そのような自作アプリがないのでこれ以上は分かりません。(なお、デフォでDisableが設定されていた) 整理しますと、現状>305さんの仰るとおり、ペンでタッチして少し動かせばマウスメッセージが 飛んでくるという状況です。 すっごく古いお絵かきアプリを複数引っ張り出してみましたが、基本的に同じ挙動でした。 描きやすさに多少の差異は見られましたので工夫の余地はあるものの、根本的には WM_POINTER 系統か WM_TOUCH 系統への対応が必須のようです。 色々アドバイスいただき、皆さんありがとうございました。
- 326 名前:313 mailto:sage [2018/04/13(金) 10:24:16.60 ID:MklDTzxh.net]
- タッチパネルのみのメッセージであるWM_POINTERで、必要なイベントを自分で加工してPostMessageかSendMessageを使って WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP:とかに投げればマウス部分の従来の処理でそのまま動くんじゃね?
マウスっぽく処理するならタッチIDを保存して判別したほうがいいな WM_TOUCHは使ったらダメだと思う昔それで不具合があってハマった記憶がある。 void SingleTouch(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { // WM_POINTERDOWN: case WM_POINTERUP: case WM_POINTERUPDATEの共通処理 static UINT pointerID=0; // ポインタIDを静的に保存しておく POINTER_INFO info = { 0 }; // ポインタの情報を毎回初期化 UINT contactId = GET_POINTERID_WPARAM(wParam);GetPointerInfo(contactId, &info); // ポインタの情報を得る ScreenToClient(hWnd, &info.ptPixelLocation); // クライアントの座標で使うならローカル座標に変更 lParam = MAKELPARAM(info.ptPixelLocation.x,info.ptPixelLocation.y); // PostMessage用のlParamを作成 // 個別処理、同じpointerIDを判別をしないと10点タッチとかで酷いことになるw switch(message){ case WM_POINTERDOWN: if(0==pointerID){pointerID=info.pointerId;PostMessage(hWnd,WM_LBUTTONDOWN,0,lParam);}break; case WM_POINTERUP: if(pointerID == info.pointerId){pointerID=0;PostMessage(hWnd,WM_LBUTTONUP,0,lParam);}break; case WM_POINTERUPDATE:if(pointerID == info.pointerId){PostMessage(hWnd,WM_MOUSEMOVE,0,lParam);}break; } } LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)のswitch(message)で下記を追加 case WM_POINTERDOWN: case WM_POINTERUP: case WM_POINTERUPDATE: SingleTouch(hWnd,message,wParam,lParam);break;
- 327 名前:デフォルトの名無しさん mailto:sage [2018/04/13(金) 10:47:38.98 ID:bFIkQBXO.net]
- タブレット持ってないからわかんないけどさ
>>303の◎ってOSが出してて、OS自体が入力を拒んでるんじゃないのか? だとしたらどのモジュールがその処理してるのか調べてその処理置換してwindows自体の挙動を変える必要があると思う
- 328 名前:デフォルトの名無しさん mailto:sage [2018/04/13(金) 10:49:29.00 ID:bFIkQBXO.net]
- 処理置換しなくてもrawinputだとか入力関連のapi叩いても盗れる可能性あるか
- 329 名前:デフォルトの名無しさん mailto:sage [2018/04/13(金) 11:35:55.96 ID:UdLtdLwz.net]
- >>323
取る方法はいくらでもあってドキュメント化もされている 今回の質問は簡易なコードでマウスと同様の動作をさせる方法は無いか?ということ。
- 330 名前:デフォルトの名無しさん mailto:sage [2018/04/13(金) 11:58:28.35 ID:bFIkQBXO.net]
- ◎の中はメッセージ来ないから困ったって質問かと思ったんだが違ったのか
わかんないもんに口出すべきじゃないなw
- 331 名前:313 mailto:sage [2018/04/13(金) 12:15:36.03 ID:MklDTzxh.net]
- 書き忘れてた。WM_TOUCH系の初期化すると◎のジェスチャーとか、不具合でるよ。
初期化しないで、321のコード実装してみたらいいと思う。
|

|