Win32API質問箱 Build128

2025/03/14(金) 09:24:09.15ID:43evLOjO
あったわ
https://www.microsoft.com/ja-jp/download/details.aspx?id=6812
2025/03/14(金) 12:59:29.93ID:2AUJtVVl
そこにそのまま、Windows SDKを使用してくださいって書いてあるやろ
2025/03/14(金) 20:34:41.80ID:5DwZxv5w
>>7
Windows SDKに移行されなかった古いD3DX(ユーティリティライブラリ)をどうしても使いたい場合は、
そのレガシーSDKの代わりにNuGetの「Microsoft.DXSDK.D3DX」を使用することが推奨されている
2025/06/29(日) 12:31:16.41ID:zQA4sk9y
質問なのですが
Q1. timeSetEvent()で(TIME_ONESHOT | TIME_KILL_SYNCHRONOUS)を指定してタイマーイベントを1回発生させた後、
timeKillEvent()することは必須ではない、でOK?

Q2. Q1の状況でtimeKillEvent()を呼んだ場合、0x61というMicrosoftの説明に無い謎の値が返されるんだけどこれは一体……
  ※ タイマーIDが16とか32とか何であっても実験する限りは常にその値やった。
  ※ MMSYSERR_INVALPARAM の値(0x0b)とは違う。環境はWindows 10、Visual Studio 2022、SDKのバージョンは10.0。
  ※ (TIME_PERIODIC | TIME_KILL_SYNCHRONOUS))を指定して繰り返しのタイマーイベントを発生開始後、
    timeKillEvent()を2回呼んだときの2回目も同じく0x61が返される。

Q3. Q1の状況で、タイマーイベントIDが仮に16だったとして、タイマーイベント発生「後」にタイマーイベントID 16に対してtimeKillEvent()したとしまつ。
  このとき16と言う値が、関係無いタイマーイベントのIDとして再利用されている危険性は無い?
  (つまり確率的にtimeKillEvent()がTIMERR_NOERRORを返して成功し、しかし後から生成された無関係なタイマーイベントをkillしてしまうようなことは起きない?)
2025/06/29(日) 12:36:45.41ID:zQA4sk9y
Q1はtimerKillEvent()を呼ばなくともリソースリークなど起きないよねという確認でつ、
2025/06/29(日) 14:00:36.58ID:Wmqo0iMM
timeKillEventは要る
2025/06/29(日) 14:54:32.72ID:zQA4sk9y
>>12
レスdクス、しかしQ1の状況
>timeSetEvent()で(TIME_ONESHOT | TIME_KILL_SYNCHRONOUS)を指定してタイマーイベントを1回発生させた後
でtimeKillEvent()を呼んだら0x61が返されて成功しているようには見えない(Q2)というそこはかとなく疑問が……
TIME_ONESHOTはタイマーイベントIDの寿命がいつまでなのか(イベント発生で破棄なのか、timeKillEvent()を明示的に呼ぶまで生きた状態なのか)がはっきりしなさすぐる印象……

質問してから思いついたのですだが、
やっぱtimeSetEvent()は常にTIME_PERIODIC で使うことにして、ONE SHOTのイベントが欲しかったらイベントハンドラ内でtimeKillEvent()を呼んで1回で止める、
みたいな方がIDの寿命のあいまいさが無くて安牌かもしれん……
実験する限りそうするとイベントハンドラ内のtimeSetEvent()はちゃんと成功(return値がTIMERR_NOERROR (0))して、
なおかつイベントハンドラの呼び出しは1回で止まる(正しくONE SHOT動作となる)ので問題なさげ。
14デフォルトの名無しさん
垢版 |
2025/06/29(日) 20:50:23.96ID:uPw6yEHV
>>13
TIME_ONESHOT の場合、イベントが発生したら timeKillEventは不要みたいですね。
timeKillEventですでにkillされたidを指定することになるため TIMERR_NOCANDO(=0x61) を返すようです。
timeKillEvent(適当な値)とすると、TIMERR_NOCANDOが返るので、おそらくtimeKillEventのドキュメントが間違っていると思われます。
15デフォルトの名無しさん
垢版 |
2025/06/30(月) 21:43:09.92ID:belteLuK
https://learn.microsoft.com/ja-jp/windows/win32/api/shlobj_core/nf-shlobj_core-shgetspecialfolderpathw
SHGetSpecialFolderPathW 関数 (shlobj_core.h)
パラメーター
hwnd
型: HWND
引っ込み思案。
2025/07/06(日) 12:03:54.13ID:hrYMwE+U
!donguri
2025/09/22(月) 20:26:47.94ID:fHSyAy+z
ShellExecuteでURLを指定して既定のブラウザを開くってやつだけど
普通はとくに問題なく動作してるんだけど
URLに”twitter.com”が含まれてるとWSAのTwitterアプリが開いてしまう
(WSAを使っててTwitterアプリもインストール済み)

ShellExecuteで必ずWindowsの既定のブラウザを開くようにできない?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況