Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/
■関連スレ
Visual Studio 2017 Part4
http://mevius.2ch.net/test/read.cgi/tech/1509244956/
【C++】 DirectX初心者質問スレ Part40 【C】
http://mevius.2ch.net/test/read.cgi/tech/1474782237/
探検
Win32API質問箱 Build124
レス数が950を超えています。1000を超えると書き込みができなくなります。
2017/11/11(土) 19:23:00.69ID:TpLoCFAx
872デフォルトの名無しさん
2019/01/28(月) 00:07:05.80ID:+M9WQ/f8 元から代替フォントの問題だと指摘されていたし、何も間違っていないな
質問された時にはまだ修正されていなかったのだし
質問された時にはまだ修正されていなかったのだし
873770
2019/01/28(月) 00:10:03.58ID:FJ2d04ee874770
2019/01/28(月) 00:40:47.00ID:FJ2d04ee ちなみにPalatino Linotype のような欧州フォントは雄雌記号の♂(U+2642)と♀(U+2640)が少しイラストっぽく表示されるので、お試しあれ。
875デフォルトの名無しさん
2019/01/28(月) 00:40:53.70ID:J+udoZHz >>873
さすがにアホ
さすがにアホ
876770
2019/01/28(月) 00:55:58.16ID:FJ2d04ee Win32APIの不具合なのか新しい仕様なのか判断できない人は質問に回答したらダメでしょ。
877デフォルトの名無しさん
2019/01/28(月) 01:15:13.62ID:j971hPKN > 欧州フォントにはU+2605だけじゃなくて漢字やひらがななども存在しないよ。
欧州フォントでも漢字表示できるの?
はえーすっごーい
欧州フォントでも漢字表示できるの?
はえーすっごーい
878デフォルトの名無しさん
2019/01/28(月) 01:59:38.49ID:yOibm1qy 言い方は忘れたけど、確か、Forwarding や Redirecting みたいな機能が
あって、グリフが存在して無い文字は、他のフォントのグリフを使用する
ことができる機能が Win32 には備わっていたと記憶している。
あって、グリフが存在して無い文字は、他のフォントのグリフを使用する
ことができる機能が Win32 には備わっていたと記憶している。
879デフォルトの名無しさん
2019/01/28(月) 02:08:56.48ID:jKaiFfBH https://superuser.com/questions/396160/how-to-change-configure-font-fallback
・Font Fallback
・Font Linking
・Font Fallback
・Font Linking
880デフォルトの名無しさん
2019/01/28(月) 06:24:36.00ID:yQjFtWDc >>874
それも代替フォント選択がいい加減だから=バグだよw
それも代替フォント選択がいい加減だから=バグだよw
881デフォルトの名無しさん
2019/01/31(木) 18:23:03.18ID:zuTwaubK WS_HSCROLL や WS_VSCROLL スタイルを指定してスクロールバー付きの
ウィンドウを作った場合なんですが、スクロールバーのつまみをスライドさせると
親(?)がWM_CAPTURECHANGED を受信してしまうのは仕様なのでしょうか。
クライアント領域内の画像をドラッグ&ドロップする処理(WM_LBUTTONDOWN で SetCapture(),
WM_LBUTTONUP でReleaseCapture() 呼び出す)を書いているんですが、それに加えて
WM_CAPTURECHANGED でも ReleaseCapture() を呼び出して Alt+Tab などでウィンドウが
切り替わった場合でも確実にキャプチャが解放されるように処理しています。
ところがこのように WM_CAPTURECHANGED を処理すると、スクロールバーのつまみをスライド
させることが出来なくなってしまいます。おそらく Windows がつまみをスライドする直前に
SetCapture() を呼び出しているために、WM_CAPTURECHANGED を受信した瞬間それが解放されて
しまうからだと想像しています。
この問題に対処する一般的(標準的?)な方法はあるのでしょうか?
よろしくお願いいたします。
ウィンドウを作った場合なんですが、スクロールバーのつまみをスライドさせると
親(?)がWM_CAPTURECHANGED を受信してしまうのは仕様なのでしょうか。
クライアント領域内の画像をドラッグ&ドロップする処理(WM_LBUTTONDOWN で SetCapture(),
WM_LBUTTONUP でReleaseCapture() 呼び出す)を書いているんですが、それに加えて
WM_CAPTURECHANGED でも ReleaseCapture() を呼び出して Alt+Tab などでウィンドウが
切り替わった場合でも確実にキャプチャが解放されるように処理しています。
ところがこのように WM_CAPTURECHANGED を処理すると、スクロールバーのつまみをスライド
させることが出来なくなってしまいます。おそらく Windows がつまみをスライドする直前に
SetCapture() を呼び出しているために、WM_CAPTURECHANGED を受信した瞬間それが解放されて
しまうからだと想像しています。
この問題に対処する一般的(標準的?)な方法はあるのでしょうか?
よろしくお願いいたします。
882デフォルトの名無しさん
2019/01/31(木) 18:37:28.68ID:J/ff8w5v マウスを直接やって独自実装やるんじゃなくてwindowsのドラッグアンドドロップとして機能実装するのが一般的
883デフォルトの名無しさん
2019/01/31(木) 18:48:17.83ID:zuTwaubK 881です。
>>882
WindowsにD&D処理を支援する機能があるということなのでしょうか。
画像のドラッグ中はフラグを立てておけば良いのではないかと、いま思いつきました。
// 修正前
case WM_CAPTURECHANGED:
if (GetCapture() == hWnd)
ReleaseCapture();
return 0;
// 修正後
case WM_CAPTURECHANGED:
if (dragging)
ReleaseCapture(), dragging = false;
return 0;
こんな感じで、ちょっと試してみようと思います。
>>882
WindowsにD&D処理を支援する機能があるということなのでしょうか。
画像のドラッグ中はフラグを立てておけば良いのではないかと、いま思いつきました。
// 修正前
case WM_CAPTURECHANGED:
if (GetCapture() == hWnd)
ReleaseCapture();
return 0;
// 修正後
case WM_CAPTURECHANGED:
if (dragging)
ReleaseCapture(), dragging = false;
return 0;
こんな感じで、ちょっと試してみようと思います。
884デフォルトの名無しさん
2019/01/31(木) 19:14:06.85ID:VYsToa/P ウィンドウが切り替わったって事はWM_KILLFOCUS飛んでくると思うけどそれじゃダメなん?
885デフォルトの名無しさん
2019/01/31(木) 19:33:52.56ID:zuTwaubK 881です。
>>884
Alt+Tabのほか、キャプチャ中にEscキーが押下されたためにウィンドウがクローズするタイミングにも
対応しなければならないようなんです。ウィンドウが閉じるときは WM_KILLFOCUS を
受け取らないようなので WM_CAPTURECHANGED しかないのかなと思いました。
>>884
Alt+Tabのほか、キャプチャ中にEscキーが押下されたためにウィンドウがクローズするタイミングにも
対応しなければならないようなんです。ウィンドウが閉じるときは WM_KILLFOCUS を
受け取らないようなので WM_CAPTURECHANGED しかないのかなと思いました。
886デフォルトの名無しさん
2019/01/31(木) 19:40:12.79ID:VYsToa/P WM_KILLFOCUSとWM_CLOSEよりWM_CAPTURECHANGEDの1箇所で処理したいって事なのかな
887デフォルトの名無しさん
2019/01/31(木) 19:50:33.62ID:zuTwaubK888L
2019/02/01(金) 01:20:53.20ID:WOdIBupf >>887
基本、>>883 見たいなやり方でいいんじゃないかな。
後、個人的には、Spy++みたいなものでメッセージの来る順序を
観察してそれに応じて「アルゴリズム(←大げさかも)」を考えてる。
Windows の場合、OSのバージョンアップでメッセージの飛んでくる
仕様が変わったりするかも知れず、もしかしたら動かなくなることも
あるかも知れないが、「行儀よくプログラムすれば」それを防げる
という単純なものではないと思ってる。なぜなら、何が行儀の
良いプログラムがそもそもドキュメント化されていないし。
という訳で、現存する全てのバージョンのWindows OSで実験して
動くかどうか確認して動かなければ修正し、新しいバージョンのOS
が出てきたら、また実験する事で対応するしかないらしい。
2ch/5ch の書き込みによれば、「どんな場合にも対応できる
プログラムなんて作れるわけがない」んだそうだで、それを
聞いて深く考えさせられたことがある。
基本、>>883 見たいなやり方でいいんじゃないかな。
後、個人的には、Spy++みたいなものでメッセージの来る順序を
観察してそれに応じて「アルゴリズム(←大げさかも)」を考えてる。
Windows の場合、OSのバージョンアップでメッセージの飛んでくる
仕様が変わったりするかも知れず、もしかしたら動かなくなることも
あるかも知れないが、「行儀よくプログラムすれば」それを防げる
という単純なものではないと思ってる。なぜなら、何が行儀の
良いプログラムがそもそもドキュメント化されていないし。
という訳で、現存する全てのバージョンのWindows OSで実験して
動くかどうか確認して動かなければ修正し、新しいバージョンのOS
が出てきたら、また実験する事で対応するしかないらしい。
2ch/5ch の書き込みによれば、「どんな場合にも対応できる
プログラムなんて作れるわけがない」んだそうだで、それを
聞いて深く考えさせられたことがある。
889デフォルトの名無しさん
2019/02/01(金) 01:29:58.10ID:WOdIBupf >>888
[続き]
MSDNなどで、自分のやりたいことを探すと、近いものが見つかって、
「これこれこうすれば良い」と書かれていることがあるので、実際に
やってみたとしても、後々、さまざまな不具合と独自機能拡張の難しさに
悩まされ続けることがある。そのたびにネット中を探し回ったり、
色々実験して対処することになる。
でもよくよく考えてみると、そもそも自分で0から実装すると意外と簡単な
ことであったりして、全部自分の制御下にある分、調べる必要もなく、
むしろ時間の節約になったりする事が多い。
[続き]
MSDNなどで、自分のやりたいことを探すと、近いものが見つかって、
「これこれこうすれば良い」と書かれていることがあるので、実際に
やってみたとしても、後々、さまざまな不具合と独自機能拡張の難しさに
悩まされ続けることがある。そのたびにネット中を探し回ったり、
色々実験して対処することになる。
でもよくよく考えてみると、そもそも自分で0から実装すると意外と簡単な
ことであったりして、全部自分の制御下にある分、調べる必要もなく、
むしろ時間の節約になったりする事が多い。
890デフォルトの名無しさん
2019/02/01(金) 01:44:48.22ID:n6bcSVs+ >>889
FindFirstFileのワイルドカードはあまり当てにするな、まで読んだ。
FindFirstFileのワイルドカードはあまり当てにするな、まで読んだ。
891デフォルトの名無しさん
2019/02/01(金) 04:13:32.40ID:2psUfhCM MFTを直接読みなされ
892デフォルトの名無しさん
2019/02/01(金) 17:50:15.61ID:IACxdzc7 >881
ScrollBarのつまみをLButtonDownしたままマウスポインタをつまみから外してドラッグするとつまみの位置は移動します。ということはCaptureしています。
スレッドのCaptureはひとつしかないので、事前のCaptureは解放され、WM_CAPTURECHANGEDが通知されます。
あと、WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。
ScrollBarのつまみをLButtonDownしたままマウスポインタをつまみから外してドラッグするとつまみの位置は移動します。ということはCaptureしています。
スレッドのCaptureはひとつしかないので、事前のCaptureは解放され、WM_CAPTURECHANGEDが通知されます。
あと、WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。
893デフォルトの名無しさん
2019/02/01(金) 18:19:28.05ID:WOdIBupf >>892
>WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。
ああ、そういえば、そうだった気がする。メッセージの
Caputure Changed という名前からしても。
>WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。
ああ、そういえば、そうだった気がする。メッセージの
Caputure Changed という名前からしても。
894デフォルトの名無しさん
2019/02/01(金) 18:35:25.24ID:kGNgvrty キャプチャ中のAlt+Tabなどは、WM_CANCELMODEというものもある
895デフォルトの名無しさん
2019/02/01(金) 18:50:09.36ID:WOdIBupf >>894
あー、そういえば海外のサイトを調べていたら、
「ALT+TAB でも Capture がどうのこうのなるから、
正しくは、これこれこんな風にプログラムしなければならない」
みたいに書いてあった。ALT+TABを使わなければ生じないことなので、
後回しだな、と思ったのでちゃんと理解してない。
あー、そういえば海外のサイトを調べていたら、
「ALT+TAB でも Capture がどうのこうのなるから、
正しくは、これこれこんな風にプログラムしなければならない」
みたいに書いてあった。ALT+TABを使わなければ生じないことなので、
後回しだな、と思ったのでちゃんと理解してない。
896デフォルトの名無しさん
2019/02/01(金) 18:53:12.96ID:WOdIBupf 「Using SetCapture() and ReleaseCapture() correctly (usually during a drag n' drop operation).」
https://www.codeproject.com/Tips/127813/Using-SetCapture-and-ReleaseCapture-correctly-usua
「Avoiding Trouble with Mouse Capture」
http://www.drdobbs.com/avoiding-trouble-with-mouse-capture/184416474
https://www.codeproject.com/Tips/127813/Using-SetCapture-and-ReleaseCapture-correctly-usua
「Avoiding Trouble with Mouse Capture」
http://www.drdobbs.com/avoiding-trouble-with-mouse-capture/184416474
897デフォルトの名無しさん
2019/02/01(金) 18:55:01.83ID:WOdIBupf // THE RIGHT WAY OF DOING IT:
//* <- Remove a slash to comment out the good version!
case WM_LBUTTONUP:
ReleaseCapture();
return 0;
case WM_CAPTURECHANGED:
g_MovingMainWnd = (HWND)lParam == hWnd;
return 0;
/**/
// THE WRONG WAY OF DOING IT:
/* <- Prefix this with a slash to uncomment the bad version!
case WM_LBUTTONUP:
g_MovingMainWnd = false;
ReleaseCapture();
return 0;
// buggy programs usually do not handle WM_CAPTURECHANGED at all
case WM_CAPTURECHANGED:
break;
/**/
//* <- Remove a slash to comment out the good version!
case WM_LBUTTONUP:
ReleaseCapture();
return 0;
case WM_CAPTURECHANGED:
g_MovingMainWnd = (HWND)lParam == hWnd;
return 0;
/**/
// THE WRONG WAY OF DOING IT:
/* <- Prefix this with a slash to uncomment the bad version!
case WM_LBUTTONUP:
g_MovingMainWnd = false;
ReleaseCapture();
return 0;
// buggy programs usually do not handle WM_CAPTURECHANGED at all
case WM_CAPTURECHANGED:
break;
/**/
898デフォルトの名無しさん
2019/02/07(木) 12:26:45.88ID:kmlzmIx7 PCをXPからwin8.1 64bitに移行したんだけど、自作のソフトがいくつか動かない。デバックしてみたら、GetDC(0)→GetPixelやっている所でフリーズしているみたい。
win8でGetDC(0)は駄目だったりする?
win8でGetDC(0)は駄目だったりする?
899さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/07(木) 12:30:15.66ID:trMMLIP2 GetDCはウィンドウに対するDCを返す関数だから、ウィンドウに関係ないなら、CreateCompatibleDC(NULL)/DeleteDCに変えてみい。
900デフォルトの名無しさん
2019/02/07(木) 13:23:19.52ID:FsbblVW+ >>898
DWM(Aero) の場合と、そうでない場合とで surface backend が有る無いの違いがあるには
あるが、一応、GetDC(NULL) が Screen 全体の DC を得るということは仕様化されているので、
新しいOSでも動作自体は出来ないわけではないと思う。
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/fb7d5836-5e3b-42f8-95cb-586cb2b3da21/getwindowdc-and-bitblt-in-windows-7-and-windows-8?forum=windowssdk
Under DWM (Aero) each window has its own surface backed up by GPU memory.
Without DWM, that is under classic renderer, all pixels covered by another
window are simply discarded. To detect whether DWM is currently running
and enabled use DwmIsCompositionEnabled function.
[ブラウザ上の新OSの紹介]
http://nowsmartsoft.atwebpages.com/
DWM(Aero) の場合と、そうでない場合とで surface backend が有る無いの違いがあるには
あるが、一応、GetDC(NULL) が Screen 全体の DC を得るということは仕様化されているので、
新しいOSでも動作自体は出来ないわけではないと思う。
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/fb7d5836-5e3b-42f8-95cb-586cb2b3da21/getwindowdc-and-bitblt-in-windows-7-and-windows-8?forum=windowssdk
Under DWM (Aero) each window has its own surface backed up by GPU memory.
Without DWM, that is under classic renderer, all pixels covered by another
window are simply discarded. To detect whether DWM is currently running
and enabled use DwmIsCompositionEnabled function.
[ブラウザ上の新OSの紹介]
http://nowsmartsoft.atwebpages.com/
901デフォルトの名無しさん
2019/02/07(木) 15:13:59.88ID:GcZVZFC2 >>898
一回コピーを作らないとだめ
一回コピーを作らないとだめ
902デフォルトの名無しさん
2019/02/07(木) 19:21:59.34ID:/5LF0iCd >>898
Aero環境ではGetPixelがとてつもなく遅くなるというやつじゃないの?
Aero環境ではGetPixelがとてつもなく遅くなるというやつじゃないの?
903デフォルトの名無しさん
2019/02/08(金) 16:13:48.70ID:OJ5k9nKR Win8.1はAeroじゃなくてMetroだから違うのでは。
904デフォルトの名無しさん
2019/02/09(土) 07:34:09.50ID:VoK7d33Y そういったシステム上の差異をブラックボックス化して吸収するのがSDKなりライブラリの役割だと思うんだけどな。
なんでこうも面倒なのかね。
なんでこうも面倒なのかね。
905デフォルトの名無しさん
2019/02/10(日) 00:56:19.51ID:B31yNMWe AeroやMetroはライブラリだから
906デフォルトの名無しさん
2019/02/10(日) 09:55:16.21ID:jvY/9N9p Quattroは大佐だから
907デフォルトの名無しさん
2019/02/10(日) 14:10:30.78ID:25jgEgQt 5ちゃんはチラシの裏だから
908898
2019/02/10(日) 14:41:50.30ID:pMKPJfwr 遅ればせながら、ご教示していただいた皆様、ありがとうございます。
15年以上前にVC6で作成したソースをもとしたソフトだったので、これを機会に作り替えすることにしました。
今回は、.netのCopyFromScreenからBitmapを作成してGetpixelしてみます。
他にも、mixer関連で取得変更できてなかったり、手を入れなければならないソフトがいっぱいありそう
15年以上前にVC6で作成したソースをもとしたソフトだったので、これを機会に作り替えすることにしました。
今回は、.netのCopyFromScreenからBitmapを作成してGetpixelしてみます。
他にも、mixer関連で取得変更できてなかったり、手を入れなければならないソフトがいっぱいありそう
909sage
2019/02/10(日) 15:07:59.97ID:FHx5KBLx 元々SetPixelを呼び出すごとにDrvBitBltしていたので遅かった
910デフォルトの名無しさん
2019/02/10(日) 18:15:03.40ID:qfB3Qf/j managedだとピクセル単位の処理はunsafe使わないと遅いよ
百倍以上の差が出る
百倍以上の差が出る
911898,908
2019/02/12(火) 14:13:36.96ID:ArFYaOAy マスターボリュームが変更されたらWAVE音量を同じ値に変更するということを、XPではMixerAPIを使って出来てましたが、win8では出来なくなりました。
それでネットをあさってて、マスターボリュームはIMMDeviceのGetDefaultAudioEndpointで取得出来ることが分かりましたが、WAVE音量を変更する方法が不明です。
どなたか教えてください
それでネットをあさってて、マスターボリュームはIMMDeviceのGetDefaultAudioEndpointで取得出来ることが分かりましたが、WAVE音量を変更する方法が不明です。
どなたか教えてください
912デフォルトの名無しさん
2019/02/12(火) 15:38:56.47ID:7Y/Mu4tq Vista以降ミキサーの仕様が変更されててwave音量の項目自体なくなってないか?
913デフォルトの名無しさん
2019/02/19(火) 22:54:47.64ID:mfSiw2KQ LLHOOKか何かで、ユーザーの入力は全部遮断しつつ、
SendInputやkeybd_eventやらのプログラム由来の入力は通すようにしたいのですが、
何か方法ないでしょうか?
今はHIDデバイスを無効にする事を考えてますが、あんまやりたくないです。
SendInputやkeybd_eventやらのプログラム由来の入力は通すようにしたいのですが、
何か方法ないでしょうか?
今はHIDデバイスを無効にする事を考えてますが、あんまやりたくないです。
914デフォルトの名無しさん
2019/02/20(水) 15:53:14.16ID:rNooXWfe 盾ニか~などの合字が出力されるWin32APIってどんなのがあるの?
915デフォルトの名無しさん
2019/02/20(水) 18:03:14.01ID:P1QqcLfo >>914
無いんじゃないの。
無いんじゃないの。
916デフォルトの名無しさん
2019/02/20(水) 18:04:45.23ID:eMhiTtf4 普通に合字に対応する文字コードを文字(列)出力/描画 APIに渡すだけだと
思う。それ以上のことをやりたい場合は、自分でプログラムしたらいいよ。
思う。それ以上のことをやりたい場合は、自分でプログラムしたらいいよ。
917914
2019/02/20(水) 18:12:05.06ID:rNooXWfe 元号の合字の件、以下のニュースが気になって質問したんだけど、
Win32APIが使わないなら誰がどんな用途でわざわざレジストリを開いて合字を探すのか気になった次第。
Microsoft、「KB4487044」適用で元号に不具合 - PC Watch
https://pc.watch.impress.co.jp/docs/news/1170425.html
Win32APIが使わないなら誰がどんな用途でわざわざレジストリを開いて合字を探すのか気になった次第。
Microsoft、「KB4487044」適用で元号に不具合 - PC Watch
https://pc.watch.impress.co.jp/docs/news/1170425.html
918さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/20(水) 18:13:20.05ID:AQq/x/Lj LOGFONT.lfWidth、CreateFontIndirect、SelectObject、TextOut/DrawTextを使えば半角漢字を描画できる。
919さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/20(水) 18:15:28.65ID:AQq/x/Lj920さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/20(水) 18:22:20.03ID:AQq/x/Lj 元号のAPIを追加するより、レジストリで定義する方が得策だね。事前テストも出来るし。
921デフォルトの名無しさん
2019/02/20(水) 18:45:40.96ID:EHsoFK41 >>917
盾ニか~ってただの文字コードに対応した文字
ただ、いわゆる機種依存文字なので、その文字コードを想定していない
クソアプリが死ぬって話がその記事に書いてることなのでは?
レジストリに記録されてるのは元号と西暦の対応で、
その情報を使いたいアプリが好きに使えばいいだけの話
APIでそこ多分見てる(見てないかも知れんが)のは
GetCalendarInfoやEnumCalendarInfo系あたりじゃなかろうか
今回の件でこいつらが問題を起こすとは書いてないと思うが
盾ニか~ってただの文字コードに対応した文字
ただ、いわゆる機種依存文字なので、その文字コードを想定していない
クソアプリが死ぬって話がその記事に書いてることなのでは?
レジストリに記録されてるのは元号と西暦の対応で、
その情報を使いたいアプリが好きに使えばいいだけの話
APIでそこ多分見てる(見てないかも知れんが)のは
GetCalendarInfoやEnumCalendarInfo系あたりじゃなかろうか
今回の件でこいつらが問題を起こすとは書いてないと思うが
922さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/20(水) 18:49:44.36ID:jAMIqMc6 新しい元号のUnicodeのコードポイントはもう決まってるらしいよ。
923914
2019/02/20(水) 19:12:38.68ID:rNooXWfe GetDateFormatEx()で書式ggは元号に置き換わる。合字の書式はそもそもあるの、どうなの。
924デフォルトの名無しさん
2019/02/20(水) 19:45:56.26ID:v7iPz90J 森鷗外𠮟る
925デフォルトの名無しさん
2019/02/22(金) 21:29:35.92ID:kVQHKw0G WaitForSingleObjectやWaitForMultipleObjectsってspurious wakeupがあるから使うなと言ってる先輩がいるけど
本当ですか?
本当ですか?
926デフォルトの名無しさん
2019/02/22(金) 21:44:37.57ID:x13qkxfg spurious wakeupがある→正しい
使うな→よりより代替手段がなければ使うしかない
代替手段があるかどうかは環境によるから先輩ちゃんに聞く
使うな→よりより代替手段がなければ使うしかない
代替手段があるかどうかは環境によるから先輩ちゃんに聞く
927デフォルトの名無しさん
2019/02/22(金) 22:18:48.32ID:JuVjm6Gn https://docs.microsoft.com/en-us/windows/desktop/sync/condition-variables
条件変数のAPIではspurious wakeupsに言及がある、ただしWaitForSingleObjectなどでは言及が見つからなかった
https://stackoverflow.com/questions/38757420/is-waiting-for-an-event-subject-to-spurious-wakeups
出典不明だがWaitForSingleObjectはspurious wakeupが起こらないとある
WaitForMultipleObjectsExでは、bAlertableにTRUEを渡せばspurious wakeupが起こりうるらしい
先輩の情報源を知りたい
条件変数のAPIではspurious wakeupsに言及がある、ただしWaitForSingleObjectなどでは言及が見つからなかった
https://stackoverflow.com/questions/38757420/is-waiting-for-an-event-subject-to-spurious-wakeups
出典不明だがWaitForSingleObjectはspurious wakeupが起こらないとある
WaitForMultipleObjectsExでは、bAlertableにTRUEを渡せばspurious wakeupが起こりうるらしい
先輩の情報源を知りたい
928デフォルトの名無しさん
2019/02/22(金) 22:23:38.90ID:qRCx8JnJ 同期オブジェクトが非シグナル状態でWaitFor系関数から勝手に戻ってくることはないと断言できる
仕掛けるオブジェクトに依ると思う
仕掛けるオブジェクトに依ると思う
929デフォルトの名無しさん
2019/02/22(金) 22:27:18.85ID:qRCx8JnJ ただし単に寝ていたスレッドが起きるという現象自体は外部のCPU負荷調節アプリとかでResumeTheradを発行することで簡単に再現できる
930デフォルトの名無しさん
2019/02/22(金) 23:11:25.13ID:4O+31NpZ 魔王も勇者が入って来ただけで起きるしな
931デフォルトの名無しさん
2019/02/22(金) 23:26:13.44ID:7tzQnSDu そもそも何をWaitFor系関数で待つのかってのも大きい。自作Signalオブジェクトなら問題起きないでしょ。
932デフォルトの名無しさん
2019/02/23(土) 07:23:17.25ID:9pAAXdf2 >>927
以前、2つのプロセス間で、WaitForSingleObject() を CreateEvent(), SetEvent() 系
の HANDLE で実験してみたけど、バグ的な現象は起きず、至って正常に動作し、
2つのプロセスで、お互いに、SetEvent() したり、WaitForSingleObject() で
相手を待ったりして、ハンドシェイク的な振る舞いが思ったとおりに出来ることが
確認できた。
速度も、SetEvent() した事が相手に届くまで、確か、1(μs)前後だったので、
十分速いと結論付けた。
以前、2つのプロセス間で、WaitForSingleObject() を CreateEvent(), SetEvent() 系
の HANDLE で実験してみたけど、バグ的な現象は起きず、至って正常に動作し、
2つのプロセスで、お互いに、SetEvent() したり、WaitForSingleObject() で
相手を待ったりして、ハンドシェイク的な振る舞いが思ったとおりに出来ることが
確認できた。
速度も、SetEvent() した事が相手に届くまで、確か、1(μs)前後だったので、
十分速いと結論付けた。
933デフォルトの名無しさん
2019/02/23(土) 08:40:48.30ID:zem2FMDi C++標準のwait系にはあるからいちいち確認するしなきゃいけないから面倒だよな
しかも、イベントだけ使いたいのにいちいちmutexをよういしなきゃいけないし・・・
しかも、イベントだけ使いたいのにいちいちmutexをよういしなきゃいけないし・・・
934デフォルトの名無しさん
2019/02/23(土) 11:36:21.35ID:+DV3f+Dk 都市伝説かも知れんが
そもそもいつ発生するか判らない発生しないかも判らない現象を
ちょっとテスト書いてみて大丈夫(キリつ
そもそもいつ発生するか判らない発生しないかも判らない現象を
ちょっとテスト書いてみて大丈夫(キリつ
935デフォルトの名無しさん
2019/02/23(土) 11:54:16.12ID:apHI25Q1 条件変数ならともかく、Eventなんかはspuriousで起こされても確かめようがないんじゃないのかな。
936デフォルトの名無しさん
2019/02/23(土) 16:03:56.92ID:qOMwbnHQ 同期機能は同期機能としてそのまま利用しつつ、最低限の安全性や整合性については別途確認すべきなのでは。
937デフォルトの名無しさん
2019/02/23(土) 18:44:58.70ID:9pAAXdf2 WaitForSingleObject() には、MSDN の仕様書に書かれていないような意味においての
バグ的な spurious wakeup は起きないと思う。
なお、実験する限り問題ないが、絶対ないかどうかは誰にも分からない。
バグ的な spurious wakeup は起きないと思う。
なお、実験する限り問題ないが、絶対ないかどうかは誰にも分からない。
938デフォルトの名無しさん
2019/02/23(土) 18:57:16.07ID:Cx5sxFW5 c++標準ライブラリには堂々と書かれてるな
Windowsだとc++標準ライブラリを使う理由がないな
Windowsだとc++標準ライブラリを使う理由がないな
939デフォルトの名無しさん
2019/02/23(土) 19:07:25.29ID:9pAAXdf2 同期オブジェクトは重要。
仕様書に何も書いてないのに、もし、spurious wakeup が起きるとしたらバグ。
なお、C++ の STL ライブラリは馬鹿が作ったと思ってる。
昔ながらの C の標準ライブラリは良い出来だが、それと混同しないほうがいい。
仕様書に何も書いてないのに、もし、spurious wakeup が起きるとしたらバグ。
なお、C++ の STL ライブラリは馬鹿が作ったと思ってる。
昔ながらの C の標準ライブラリは良い出来だが、それと混同しないほうがいい。
940デフォルトの名無しさん
2019/02/23(土) 20:04:03.30ID:qOMwbnHQ C++のSTLとCライブラリでは機能が似ているところはない気がするけど?
念のため言っとくとiostreamはSTLじゃないよ。
念のため言っとくとiostreamはSTLじゃないよ。
941デフォルトの名無しさん
2019/02/23(土) 20:24:45.58ID:7js9m1kN つーかspurious wakeupなんて存在を許してる時点で作ったそいつらはアホじゃないの
そいつらのリテラシーどうなっとんのか疑うレベル
そいつらのリテラシーどうなっとんのか疑うレベル
942デフォルトの名無しさん
2019/02/23(土) 20:32:05.22ID:qOMwbnHQ 汎用性のためにファイルロックを使った排他処理で実装するとそうなってしまうんじゃないの。知らんけど。
943デフォルトの名無しさん
2019/02/23(土) 22:14:41.32ID:apHI25Q1 厳密にspurious wakeupを許さない実装は大変でパフォーマンス的にも不利だから。
というか、spurious wakeupを許すとすごく有利だというのが後から発見されたんじゃなかったかな。
というか、spurious wakeupを許すとすごく有利だというのが後から発見されたんじゃなかったかな。
944デフォルトの名無しさん
2019/02/24(日) 02:55:03.61ID:ZXw7vz2Z っていうか、win環境ならC++標準ライブラリよりWaitFor〜を使ったほうがいいだろ
std::unique_lockなんで馬鹿みたいに遅いしw
std::unique_lockなんで馬鹿みたいに遅いしw
945デフォルトの名無しさん
2019/02/24(日) 04:17:10.21ID:N5G83Lpp946デフォルトの名無しさん
2019/02/24(日) 08:23:50.21ID:pcDSz9Pr >>943
プログラムには優先順位があって、まず、正しく動作する事が一番重要。
その次に来るのが、使いやすさか、または、速度。どちらが優先されるかは
設計思想や哲学による。その次にプログラムのサイズ。
いくら速度が速くても、やるべきことが正しく行われないならプログラムとしては
失格なんだ。
プログラムには優先順位があって、まず、正しく動作する事が一番重要。
その次に来るのが、使いやすさか、または、速度。どちらが優先されるかは
設計思想や哲学による。その次にプログラムのサイズ。
いくら速度が速くても、やるべきことが正しく行われないならプログラムとしては
失格なんだ。
947デフォルトの名無しさん
2019/02/24(日) 08:36:16.85ID:fWdsplTz 「sprious wakeupもありえる」というのを「正しい動作」と定義したんだから何の問題もない。
948デフォルトの名無しさん
2019/02/24(日) 08:48:33.63ID:pcDSz9Pr それだと、使う側のプログラムが長くなるだけなので、設計思想に問題を感じる。
ライブラリ設計者の経験不足かもしれない。
速くなるといっても結局、使う側でループの中で判定して条件に合わないなら、
また繰り返し、wait するのなら、ライブラリ側でそういう風にできなかったの
だろうか。
ライブラリ設計者の経験不足かもしれない。
速くなるといっても結局、使う側でループの中で判定して条件に合わないなら、
また繰り返し、wait するのなら、ライブラリ側でそういう風にできなかったの
だろうか。
949デフォルトの名無しさん
2019/02/24(日) 09:42:01.89ID:pcDSz9Pr 深く考えてないけど、以下のようにしてしまえば、速度が速いまま、
spurious wakeup が絶対に起きない wait 関数を作れるんじゃないかと
思うんだけど、どうなんだろう。
Xxxx LapperWait(Yyyy y, Zzzz z) {
for (;;) {
raw_wait(y, z); // spurious wakeup 有り
if ( IsCond(y, z) ) { // 厳密な条件チェック
return x;
}
}
}
spurious wakeup が絶対に起きない wait 関数を作れるんじゃないかと
思うんだけど、どうなんだろう。
Xxxx LapperWait(Yyyy y, Zzzz z) {
for (;;) {
raw_wait(y, z); // spurious wakeup 有り
if ( IsCond(y, z) ) { // 厳密な条件チェック
return x;
}
}
}
950デフォルトの名無しさん
2019/02/24(日) 10:03:24.37ID:9KBfjXtA951デフォルトの名無しさん
2019/02/24(日) 14:42:49.21ID:YwY0sV++ LoopyWaitでいいよもう
952デフォルトの名無しさん
2019/02/24(日) 15:26:11.06ID:BJ3WFlaM 「sprious wakeupもありえる」のはいいが、
どのAPIも使うたびにいちいち関数仕様確認するのは面倒だな
つーか関数の説明には書いてないので仕様とは言えないと思うんだが・・・初見殺し?
どのAPIも使うたびにいちいち関数仕様確認するのは面倒だな
つーか関数の説明には書いてないので仕様とは言えないと思うんだが・・・初見殺し?
953デフォルトの名無しさん
2019/02/24(日) 15:39:02.49ID:2tRfk65D >>952
初めて使うAPIでしかも同期処理なんて複雑なものは仕様を調べて使うのが当然のことだと思うぞ。
初めて使うAPIでしかも同期処理なんて複雑なものは仕様を調べて使うのが当然のことだと思うぞ。
954デフォルトの名無しさん
2019/02/24(日) 16:04:30.12ID:N5G83Lpp >>949
raw_wait(y, z); // spurious wakeup 有り
と
if ( IsCond(y, z) ) { // 厳密な条件チェック
の間で条件が変わったらどうするの?
raw_wait(y, z); // spurious wakeup 有り
と
if ( IsCond(y, z) ) { // 厳密な条件チェック
の間で条件が変わったらどうするの?
955デフォルトの名無しさん
2019/02/24(日) 16:07:02.11ID:EMRtI4X3956デフォルトの名無しさん
2019/02/24(日) 16:08:45.84ID:N5G83Lpp957デフォルトの名無しさん
2019/02/24(日) 16:14:47.34ID:pcDSz9Pr >>956
もともと、排他処理用のAPIは、そういう「変な問題が起きない」ように用意されて
いるんだよ。「Atomic」アクセス、などと言われていて、「途中に」とか
中途半端な状態が起きない作りにしてある。それは割り込み発生を好きにOFFに
できるところのシステム側(OS)でしかできない。
もともと、排他処理用のAPIは、そういう「変な問題が起きない」ように用意されて
いるんだよ。「Atomic」アクセス、などと言われていて、「途中に」とか
中途半端な状態が起きない作りにしてある。それは割り込み発生を好きにOFFに
できるところのシステム側(OS)でしかできない。
958デフォルトの名無しさん
2019/02/24(日) 16:16:16.11ID:pcDSz9Pr なぜかIDが勝手に変わったが、949=955=957だ。
959デフォルトの名無しさん
2019/02/24(日) 16:17:26.62ID:9KBfjXtA 同期オブジェクトの正確性ではなく、ユーザ定義データの保護こそが大切。目的を見失わないように。
960デフォルトの名無しさん
2019/02/24(日) 16:18:28.55ID:pcDSz9Pr ちなみにオイラは、32BITマルチタスクOSを作った経験がある。
961デフォルトの名無しさん
2019/02/24(日) 16:24:01.17ID:Krr3p0wT >>949
シングルスレッド脳だとそういう発想になる
シングルスレッド脳だとそういう発想になる
962デフォルトの名無しさん
2019/02/24(日) 16:34:48.90ID:9KBfjXtA たまにかかってくる間違い電話がいやだから電話は無能。そんな感じ。
963デフォルトの名無しさん
2019/02/24(日) 16:36:35.10ID:2fcQjxFq Atomicを語るならID変わらないようにしないと恥ずかしいな
964デフォルトの名無しさん
2019/02/24(日) 16:41:49.67ID:pcDSz9Pr IDが変わる理由は知らん。多分、5chのシステム上の問題だと思う。
965デフォルトの名無しさん
2019/02/24(日) 16:43:05.47ID:pcDSz9Pr 沢山の人で賑わっているように見せるためかな。人寄せと広告料金関連で。
966デフォルトの名無しさん
2019/02/24(日) 16:46:55.09ID:9KBfjXtA コールバック形式のAPIを使うプログラマはその呼び出しタイミングをAPI側に委ねている。
何がいいたいかというと、要するにあきらめろということだ。
何がいいたいかというと、要するにあきらめろということだ。
967デフォルトの名無しさん
2019/02/24(日) 17:53:55.79ID:N5G83Lpp968デフォルトの名無しさん
2019/02/24(日) 18:01:12.16ID:pcDSz9Pr969デフォルトの名無しさん
2019/02/24(日) 18:31:20.56ID:9KBfjXtA 車のバンパーは本来、ボディを保護するためにある。
そのバンパーに傷がついたりへこんだりすることを病的に嫌悪している状態。
お大事に。
そのバンパーに傷がついたりへこんだりすることを病的に嫌悪している状態。
お大事に。
970デフォルトの名無しさん
2019/02/24(日) 18:39:12.54ID:fWdsplTz もしそのraw_wait()がP命令だとしたらその結果がspuriousのときはV命令で状態を戻さなきゃならんと思うが。
ただどっちにしてもそのIsCond()はライブラリ側では構成しようがないけどな。
あと、やっぱりspurious wakeupって条件変数特有のものじゃなかったかな。
なんかそのへんで話がずれている気がする。
ただどっちにしてもそのIsCond()はライブラリ側では構成しようがないけどな。
あと、やっぱりspurious wakeupって条件変数特有のものじゃなかったかな。
なんかそのへんで話がずれている気がする。
971デフォルトの名無しさん
2019/02/24(日) 18:54:16.69ID:EMRtI4X3 >>970
どういう状況を考えてるのか前提が分からないし、だから
「深く考えてない」
という事になってしまうのだけども。少なくとも、Win32のWaitForSingleObject()
では特に問題は起きない。
どういう状況を考えてるのか前提が分からないし、だから
「深く考えてない」
という事になってしまうのだけども。少なくとも、Win32のWaitForSingleObject()
では特に問題は起きない。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【悲報】あまりにも高市早苗の頭が悪過ぎて「これは確かに野党が配慮して質問するべきだったのでは」と結論が出てしまう [517791167]
- 【正論】木原官房長官「高市さんの答弁は従来の政府の立場を変えるものではない。撤回には応じられない」特定野党を完全論破 [519511584]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 中国と戦争になったら高市早苗が外患誘致で死刑になるの? [809488867]
- 【悲報】安倍晋三と高市早苗、どっちがヤベーの🤔 [616817505]
