X



Win32API質問箱 Build124

レス数が1000を超えています。これ以上書き込みはできません。
289デフォルトの名無しさん
垢版 |
2018/04/10(火) 16:45:17.90ID:La3PY+dC
VST かな
290デフォルトの名無しさん
垢版 |
2018/04/10(火) 16:48:11.15ID:La3PY+dC
この辺かな
https://qiita.com/funatsufumiya/items/c2a009a300ecdc88247a
もう古いって言われるかも知れんが
2018/04/10(火) 16:50:37.00ID:hrbxCJ/r
>>289
すばやい返答ありがとうございます

軽く検索みてみたらGUIみたいなのがたくさんでてきます
サンプルコードが一切でてこないですけど
プログラムの中にうめこむライブラリとしてつかえるものなんでしょうか?
2018/04/10(火) 16:51:39.43ID:hrbxCJ/r
>>290
分かりやすいサイトありがとうございます
サンプルコードがあるので読んで見ます
293デフォルトの名無しさん
垢版 |
2018/04/10(火) 16:53:47.39ID:La3PY+dC
あとフィルタはたぶんこっち
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
がんがれ
2018/04/10(火) 19:08:17.02ID:n4pH5xN4
必要なのはVSTじゃなくて仮想デバイスドライバの作成方法なんじゃないのか?
295デフォルトの名無しさん
垢版 |
2018/04/11(水) 00:11:41.02ID:5V3NvSPI
そだねーJap
2018/04/11(水) 01:33:21.32ID:nGNQyhwo
vst 経由なら vst skype とかでググればやり方は見つかるし
2018/04/11(水) 16:45:30.30ID:oc5yP9in
自アプリで簡単な手書きメモ機能があるのですが、Win10タブレット端末でペン操作すると
うまく文字が書けません。
短い線が書けない感じです。

恐らくマウス周りのメッセージの代わりに WM_GESTURE 系メッセージが来ていると思うのですが、
真っ当にこれらのメッセージを処理するのではなく、自アプリではこれまで通りマウス処理しかしない
と何らかの方法で設定・宣言することによってペン・タッチ操作関連のメッセージを来なくすることは
可能でしょうか?

OSレベルで全体的にこの機能をOFFにすることは可能なようですが、自アプリだけこれを適用できれば
と思っています。
よろしくお願いします。
2018/04/11(水) 19:46:07.75ID:xs6mCoGI
自アプリだろ?要らないメッセージ無視すりゃいいじゃん
2018/04/11(水) 21:23:09.60ID:4xNEGOrU
>>297
使ったことないけど
WM_TABLET_QUERYSYSTEMGESTURESTATUS
で色々disableしてあげれば良いんじゃないだろうか
2018/04/11(水) 21:31:47.99ID:4xNEGOrU
ほかに .Net だとメッセージフィルターでWM_POINTERDOWN / UP を無視するなんてやり方を紹介している人も多い
301デフォルトの名無しさん
垢版 |
2018/04/11(水) 23:34:57.38ID:HwL4BRgS
フルボッコすぎる
2018/04/12(木) 13:06:30.81ID:S0A11kDt
https://teratail.com/questions/121464?sip=n0070000_019&;uid=11595

早く返事が来ないかな。ワクワク
303297
垢版 |
2018/04/12(木) 17:22:14.25ID:1t6GyJnt
一応分かりやすく画像で状況を補足します。
http://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 系の処理を追加すれば対処はもちろん可能でしょうが、簡単に既存処理を生かせる方法が
ないものか、情報をお持ちの方よろしくお願いします。
2018/04/12(木) 17:59:17.97ID:S0A11kDt
インクとジェスチャーの両方が必要ということかな。
2018/04/12(木) 18:22:16.36ID:nMaemNOx
いやゼスチャの判定が優先されるから少し動かさないと WM_LBUTTONDOWN とかが来ないんだよ
それを簡単にマウスの時と同様すぐメッセージが来る動作にできないか、という話

ゼスチャ無効化してもダメとは面倒な話だよね
2018/04/12(木) 19:12:40.30ID:S0A11kDt
今日の収穫は、OLEオートメーションがめちゃややこしいことがわかっただけだ。
2018/04/12(木) 19:15:03.07ID:S0A11kDt
言語でネイティブにサポートされたヴァリアント型があればもっと簡単なんだが。
30841
垢版 |
2018/04/12(木) 19:19:31.30ID:gePCm00Z
そもそもマウスとジェスチャー分ける必要あったんかいな
軌跡はないが矛盾はしないだろうに
309名無し@キムチ
垢版 |
2018/04/12(木) 19:35:21.15ID:jXGrykA6
コンソールのmain関数のコマンドライン引数argv、argcを引数にとる関数があるのですが、
これはwinmain関数内でも使えますか?
その場合argv、argcの代わりにcommandshowとcommandlineを引数にする必要があるとおもうのですが、
どのようにすればエラーが出ずにargv、argcをcommandshowとcommandlineに変換できますか?
よろしくお願いいたします。
2018/04/12(木) 19:43:37.70ID:ZuhK/vm7
__argc、__argvでアクセスできる
311名無し@キムチ
垢版 |
2018/04/12(木) 19:45:08.29ID:jXGrykA6
>>310
ありがとうございます。
早速それでやってみます。
2018/04/12(木) 19:45:11.97ID:ifFSa3KQ
>>309
なんかどっちに変換したいのかよくわからんが
__argv、__argc、GetCommandLineW、CommandLineToArgWあたりで調べてよきにはからへ
2018/04/12(木) 20:12:39.23ID:ofGuXLCP
>>303
そんな古臭いメッセージ処理せずに、下記のメッセージで処理したら?
WM_POINTERDOWN: WM_POINTERUPDATE: WM_POINTERUP:
win8以降しか対応してないけどな。xp/vista/7とかでタッチパネルの処理は切り捨て推奨
2018/04/12(木) 21:38:47.94ID:Cv0USnCZ
旧来のアプリなんかタッチやフリックに対応してるわけないのに、そんなアプリに対してそれらのメッセージを投げつけて
マウス関連のメッセージを投げないという仕組みがMSらしいというか融通が利かないというか、バカバカしいな。
タッチやフリックを要求するアプリのみにそれらのメッセージ投げるだけでいいのに。

旧来アプリでも旧来アプリなりにペンタッチで動くようにすりゃ、裾野も広がりやすいだろうにな。
315297
垢版 |
2018/04/12(木) 22:59:34.36ID:1t6GyJnt
ちょっと古いシステムなのでそのままちょっと直すだけで動かないものかと
試行錯誤していました。

313さんの仰る方向でも試行錯誤を続けていたのですが、既存プログラムの
出来がおかしいのか今のところうまく行っていません。
理屈で言えばうまく行くはず・・・なので、このまま調整を続けようと思います。

皆さんありがとうございました。
2018/04/12(木) 23:04:18.01ID:ifFSa3KQ
>>314
いやタッチのメッセージを処理しなけりゃ普通にマウスのメッセージにフォールバックはされるぞ
マウスメッセージのみで手を抜きたいけど目的の品質の届かないって趣旨の質問じゃろ
317297
垢版 |
2018/04/12(木) 23:33:07.34ID:1t6GyJnt
>>316
上でも書きましたが、タッチのメッセージを処理しないようにすると
ペン入力自体全くできなくなりました。
2018/04/12(木) 23:44:04.43ID:fS8U0BFZ
関係あるんだかないんだかはわからんが
EnableMousePointer なんて api があるな
2018/04/12(木) 23:59:24.17ID:ifFSa3KQ
Surfaceでしか確認してないけどそういやFCUだかでペンのスワイプの既定が
カーソル移動からスクロールに変更されてたなあ
そのへんが原因かもね
320297
垢版 |
2018/04/13(金) 02:19:42.71ID:4MPC6lcI
>>318
ありがとうございます。
飛びついてみましたが、変化ありませんでした。
逆の考え方で、マウスをポインティングデバイスとして使うためのものかも知れませんが、
マウス操作しても前と変わらずでした。
もしかするとマウスでフリック操作などができるようになるのかも?という気がしますが、
そのような自作アプリがないのでこれ以上は分かりません。(なお、デフォでDisableが設定されていた)


整理しますと、現状>305さんの仰るとおり、ペンでタッチして少し動かせばマウスメッセージが
飛んでくるという状況です。

すっごく古いお絵かきアプリを複数引っ張り出してみましたが、基本的に同じ挙動でした。
描きやすさに多少の差異は見られましたので工夫の余地はあるものの、根本的には
WM_POINTER 系統か WM_TOUCH 系統への対応が必須のようです。

色々アドバイスいただき、皆さんありがとうございました。
321313
垢版 |
2018/04/13(金) 10:24:16.60ID:MklDTzxh
タッチパネルのみのメッセージである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;
2018/04/13(金) 10:47:38.98ID:bFIkQBXO
タブレット持ってないからわかんないけどさ
>>303の◎ってOSが出してて、OS自体が入力を拒んでるんじゃないのか?
だとしたらどのモジュールがその処理してるのか調べてその処理置換してwindows自体の挙動を変える必要があると思う
2018/04/13(金) 10:49:29.00ID:bFIkQBXO
処理置換しなくてもrawinputだとか入力関連のapi叩いても盗れる可能性あるか
2018/04/13(金) 11:35:55.96ID:UdLtdLwz
>>323
取る方法はいくらでもあってドキュメント化もされている
今回の質問は簡易なコードでマウスと同様の動作をさせる方法は無いか?ということ。
2018/04/13(金) 11:58:28.35ID:bFIkQBXO
◎の中はメッセージ来ないから困ったって質問かと思ったんだが違ったのか
わかんないもんに口出すべきじゃないなw
326313
垢版 |
2018/04/13(金) 12:15:36.03ID:MklDTzxh
書き忘れてた。WM_TOUCH系の初期化すると◎のジェスチャーとか、不具合でるよ。
初期化しないで、321のコード実装してみたらいいと思う。
2018/04/14(土) 00:16:48.20ID:a7yPR2Rx
サーバー上のファイルを編集中に、他人からの全てのアクセスを禁止したいのですが
CreateFileでdwShareModeを0にすれば排他制御は万全だと思いますか?
良い方法があれば教えてください。
328327
垢版 |
2018/04/14(土) 00:22:28.28ID:a7yPR2Rx
補足。クライアントからサーバー上のファイルを編集するときです。
329デフォルトの名無しさん
垢版 |
2018/04/14(土) 02:38:22.36ID:lnTeyTPJ
deleteされちゃいますよ
2018/04/14(土) 06:15:46.39ID:fnoJLpZQ
linux やわunix サーバなら消されちゃうかもね
331327
垢版 |
2018/04/14(土) 18:14:56.59ID:a7yPR2Rx
編集完了までCloseHandleしなければdelete出来ないんじゃないでしょうか。悪意のある攻撃者はいないとして。

私が心配しているのは、一つのファイルに対して、複数のクライアントから同時に排他Open(CreateFile)が
発生したとして、複数のクライアントで排他Openが成功してしまう可能性があるんじゃ無いかって事です。
2018/04/14(土) 18:23:06.50ID:s4TUpiI7
>>331
Open/Close は排他ロックにならない、ときいたことがある
333327
垢版 |
2018/04/14(土) 18:32:55.41ID:a7yPR2Rx
>>332
そうですか、、
小さいシステムなので、サーバ側プロセスまで作りたくないなーと思ってたんですが。
2018/04/14(土) 20:04:17.98ID:fnoJLpZQ
smb なら排他的にロックされる
2つのクライアントが矛盾する共有モードでファイルをオープンしたり削除したりはできない。

https://docs.microsoft.com/en-us/rest/api/storageservices/managing-file-locks

smb のサーバが linux や mac で、その os などから smb 以外の方法で
ファイルを変更、削除したりは可能だけどこれはどうしようもない

もしも目的が他のクライアントにエラーを返すとこでなく
書き終わった時点でアプリが書いた内容になっていることを保証したい
(書いている途中のファイルを読まれないように)だけなら
別名のファイルを作って書き終えたところで MoveFile するというよくある手法もある。
2018/04/14(土) 20:19:46.84ID:fnoJLpZQ
上のurlはazureのドキュメントだけどsmbでWindowsサーバなら同じ仕様だと思う
336327
垢版 |
2018/04/14(土) 21:05:12.23ID:a7yPR2Rx
>>324
私にsmbはちょっと難易度高杉のようです。
妥協 or 違うアプローチを考えてみます。
337名無し@キムチ
垢版 |
2018/04/14(土) 21:10:19.87ID:ywXYi+/7
質問です。
glutを使ったプログラムで、描画の後ダブルバッファ交換のglutSwapBuffers();を入れると、
windowの画面が真っ白になってしまって何も表示されなくなるのですが、どうしたらいいですか?
2018/04/14(土) 23:46:15.72ID:fnoJLpZQ
>>336
Windows の標準ファイル共有プロトコルSMBを用いて接続している
ファイルサーバ上のファイルなら
CreateFile の共有モードでロックができるということです。
2018/04/15(日) 00:06:05.13ID:G47pMzYo
>>338
なるほど。でしたら概ねロックできそうです。
ごく少数のクライアントは無料のVPNツールでLAN外からサーバーにアクセスしているんですが
これもSMBプロトコルなのかどうかは調べてみます。
情報ありがとうございました。
340デフォルトの名無しさん
垢版 |
2018/04/15(日) 10:41:11.68ID:E1b18XLI
>>337
どこに描いたの?
何を表に持ってきたの?
341名無し@キムチ
垢版 |
2018/04/15(日) 21:45:37.16ID:X4sBLOS0
Windowsのコールバック関数の中のWM_PAINTにダイレクトXの描画処理を書くと、エラーが出て実行されないのですが、どうしてですか?どうしたらいいですか?
2018/04/15(日) 21:53:50.01ID:qZPDSYA2
まず全裸になります
343デフォルトの名無しさん
垢版 |
2018/04/15(日) 22:41:41.98ID:UX4y5Mn1
使わなくてもいいからDCだけ確保
2018/04/15(日) 23:01:26.11ID:+Hw5szkB
ドリームキャスト手に入れるのは大変そうだ
345デフォルトの名無しさん
垢版 |
2018/04/15(日) 23:27:51.27ID:xpwShDOv
ぴぴん
2018/04/15(日) 23:37:59.49ID:qZPDSYA2
dc1 = beginpaint
dc2= getdc
dc2= releasedc
dc1=endpaint
2018/04/16(月) 08:23:21.50ID:5yp4kCb0
>>344
MDが復刻されるらしいじゃん。
上手くいけばSSやDCも行けるよ。
348デフォルトの名無しさん
垢版 |
2018/04/16(月) 09:43:27.45ID:75OnkAat
カードキャプターさくら
349名無し@キムチ
垢版 |
2018/04/17(火) 18:57:41.86ID:nz/ieMrf
初歩的な質問ですが、fgxsdkを使ったプログラムと、openGLを使ったプログラムをつくりましたが、
どちらか片方づつだけしか使えません。ひとつのプログラムで両方使おうとするとエラーが出てしまいます。
どうしてそうなるのですか?またどうすればいいのですか?
350デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:45:47.24ID:lRwbg5zI
バッファを上書きしないように気を付ける
351297
垢版 |
2018/04/19(木) 18:13:16.20ID:o7VdbXqH
297ですが、WM_POINTER 系を WM_LBUTTON や WM_MOUSEMOVE に
投げることで無事解決しました。
WM_POINTER 系はスクリーン座標、マウス関連はクライアント座標という
不一致の整合性を取ることと、ペン操作中の描画がされないので
UpdateWindow を随時実行すること、あとは WM_POINTER 系の処理後に
DefWindowProc は実行しないことで快適に動作するようになりました。
(描画については元の作りが甘いのが原因かもですが)

>>321
色々とありがとうございました。
取りかかりが遅くなりましたが、おかげさまで対応できました。
352297
垢版 |
2018/04/19(木) 18:16:39.64ID:o7VdbXqH
> WM_POINTER 系を WM_LBUTTON や WM_MOUSEMOVE に
> 投げることで無事解決しました。

なんか変ですね。

WM_POINTER 系処理時に、併せて適切な WM_LBUTTON や WM_MOUSEMOVE
も SendMessage or PostMessage で送信することで無事解決しました。
2018/04/21(土) 17:47:35.10ID:h8C5n4IB
surfaceのペンの筆圧などの情報を取得したい場合、何というキーワードで調べるべきですか?
2018/04/21(土) 17:53:19.89ID:9EumPI9y
>>356
SurfaceはWin32APIを使いません。代わりにWindows RTを使います。
2018/04/21(土) 18:05:27.99ID:h8C5n4IB
言葉足らずかも知れません。
surface proのペンの情報もwindows rtですか?
2018/04/21(土) 18:18:24.59ID:gTRsxGnx
>>353
直前までのスレの話題がそのまんまなんだがなあ
とりあえずこのへんを満遍なく読んでおきなさい
https://msdn.microsoft.com/en-us/library/windows/desktop/hh454916.aspx
ちなみに筆圧/傾きは基本的にGetPointerPenInfo系


片山は馬鹿だから無視しとけ
2018/04/21(土) 18:24:09.27ID:h8C5n4IB
ありがとうございます。
2018/04/26(木) 08:01:02.21ID:qK0Tcf+m
>>356
筆圧取得できました。

ペンだけでなくタッチもわかったのはとてもありがたい。
今後の課題は筆圧の最大値の取得、座標のズレの解決だ。
lParamからx,y座標取得してスクリーン座標からクライアント座標に変えたけど最大4pxぐらいずれてる(気がする)
359デフォルトの名無しさん
垢版 |
2018/04/26(木) 16:08:09.24ID:obVS20md
ありがとうございます。
2018/05/09(水) 10:38:44.80ID:urlL8t0C
https://docs.microsoft.com/en-us/windows/arm/

ハードが高杉て買えません
2018/05/11(金) 00:47:31.66ID:jtnkDrxN
WiXでディレクトリを作ってCreatorOwner(S-1-3-0)にアクセス権設定してみたら
プロパティのアクセス許可エントリにに"CREATOR OWNER"というグループが出てきた。
こんなの初めて見た。
362デフォルトの名無しさん
垢版 |
2018/05/11(金) 10:36:48.86ID:eFEUpfi5
へ?
2018/05/11(金) 20:07:56.91ID:jtnkDrxN
saclsなんかでS-1-3-0を指定しても実在の所有者のSIDに置き換わるじゃん。そもそもそのためにあるわけだし。
ACLには入らないものかと思ってた。
2018/05/11(金) 21:00:03.68ID:KUxDXsAg
ん?
365デフォルトの名無しさん
垢版 |
2018/05/12(土) 11:03:35.97ID:yo5m8R46
何十年も経ってるのに今更初めてとか
2018/05/12(土) 13:23:12.21ID:Wuy9HJPF
何十年てなんぞ?
2018/05/14(月) 00:22:00.59ID:VV/fGzO7
ゲームの効果音を鳴らすのにmciSendCommandで鳴らそうとすると
一瞬画面が固まるので別スレッドで再生するようにしたのですが改善せず固まります。

以下のサイトの別スレッドで動かす例も試しましたがメインループが1秒に1回しか実行されません。
ttp://eternalwindows.jp/winmm/mci/mci02.html

DirectSoundを使うしか画面が固まるのを回避する方法はないでしょうか?
2018/05/14(月) 08:42:54.37ID:YOvAeQk/
鳴らす毎に固まるん?
ロード画面とかでオープンだけ先にやっておいて
後は鳴らし終わったら最初にシークしてまた鳴らしたらいいんでない?
的外れてたらごめんな
369367
垢版 |
2018/05/14(月) 09:10:04.81ID:Yo4sXSf8
すみません。自己解決しました。
キーが連続して入力されたと判定されないように
前回から0.1秒以下の間隔で入力されたキーを無視する部分で
レンダリングまで無視してしまっていました。
370デフォルトの名無しさん
垢版 |
2018/05/14(月) 13:32:12.89ID:dnGRWxRE
>>367
waveout
2018/05/14(月) 15:03:48.05ID:YOvAeQk/
ズコー
372367
垢版 |
2018/05/14(月) 19:29:13.78ID:TSV87Y/E
度々すみません。
音の再生で画面が固まらないようには出来たのですが、
オープン、シークを事前に行っておいても再生までに少し時間がかかってしまいます。
例えばクリックでクリック音を鳴らせるようにすると、クリックを連打した時に鳴らなくなってしまいます。
クリック音は1フレーム目から音が鳴るように調整済みで、高速化のためwavファイルにしてあります。
core i5 8250u, m.2 ssdの環境で最適化ビルドでも再生まで0.2秒以上かかります。
mcisendcommandを高速に動作させる方法はないでしょうか?
2018/05/14(月) 19:57:29.23ID:9wWfcYFS
MessageBeepでは?
2018/05/14(月) 22:23:19.23ID:Zf7UDWDq
sndPlaySoundでは?
2018/05/15(火) 08:42:15.75ID:RLKB0pPy
まさかのWM_LBUTTONUP?
2018/05/15(火) 09:35:21.30ID:iduN+0hu
>>372
ないんじゃない?
2018/05/15(火) 11:24:49.27ID:iNTYPTvx
20年近く前に設置されたお手軽APIにリアルタイム性を求めるのもな…

ゲーム用の効果音ならDirectXTKのAudio(XAudio2のラッパー)がお手頃かしら
2018/05/16(水) 03:14:40.15ID:52uBQuev
OpenALでもいいんじゃね?
379デフォルトの名無しさん
垢版 |
2018/05/18(金) 06:39:21.09ID:KYXS7qiH
キーボードの入力だけを無効化するAPIを教えてください
BlockInputだとキーボードとマウスの両方が無力化されてしまうので。
2018/05/18(金) 07:22:41.68ID:JEElro2Y
そのものずばりなapiはないんじゃないかな
2018/05/18(金) 09:20:15.65ID:KYXS7qiH
ないじゃねーんだよアホ
だったらどうすりゃ実現できるのか教えろよ
2018/05/18(金) 09:36:45.73ID:JEElro2Y
うわあ
2018/05/18(金) 09:49:08.60ID:C170FFEJ
フィルタドライバ
2018/05/18(金) 09:56:15.34ID:crDPuGzZ
ローレベルフックでキーボード入力を捨てられた気が
2018/05/18(金) 10:17:50.27ID:mWyCAt5N
>>381
教えろよじゃねーんだよアホ
だったらどうなりゃ理想なのか教えろよ

指定したプロセスのみ無効化?
全てのプロセスで無効化?
BlockInputを試したという事は全てのプロセスで無効化でいい?
2018/05/18(金) 10:20:51.20ID:JEElro2Y
BlockInputはそのスレッドだけじゃないかな
おまえらこんな糞な奴のをよく答える気になるなw
2018/05/18(金) 10:29:53.45ID:PW/5KQgQ
キーボードを取り外す
展示とかに使うならこれだなw
2018/05/18(金) 11:03:10.17ID:/yTMyJuo
16bit時代にはそのものズバリのapiがあった
2018/05/18(金) 12:07:37.64ID:aDkqve5K
easyhookを使えるようにするにはどうすればいいのですか?
たすけて
2018/05/18(金) 12:21:16.66ID:JEElro2Y
チュートリアルにサンプルコード載ってるじゃん
2018/05/18(金) 12:23:26.03ID:aDkqve5K
ごめんなさい
プログラムするんじゃなくて、インストールの仕方、使えるようにする方法がわからない
2018/05/18(金) 12:40:49.02ID:JEElro2Y
ducumentationにインストール方法書いてあるじゃん
2018/05/18(金) 12:53:35.86ID:aDkqve5K
どれ?。。
プロジェクトに追加されてたらOKなの?
EasyHookをつかってるプログラムが動かないんだけど
RemoteHooking.Injectがエラーになる
2018/05/18(金) 12:55:27.82ID:JEElro2Y
ducumentationからコピペ

Adding EasyHook to your project
1.Open your project in Visual Studio, or create a new one.
2.Right-click your project within the Solution Explorer and select “Manage NuGet Packages…”.
3.Search for “EasyHook”
4.Select the EasyHook package and click install.
After accepting the license agreement your project is ready to use EasyHook.
2018/05/18(金) 12:59:51.80ID:mWyCAt5N
おまえこんなスレチなのをよく答える気になるなw
2018/05/18(金) 13:06:44.09ID:aDkqve5K
ごめんなさい
どこいけばいいの?
2018/05/18(金) 13:26:58.25ID:mWyCAt5N
あるならEasyHookをつかってるプログラムのスレ
無いなら入手元良く見る
2018/05/21(月) 14:45:12.74ID:J624wk10
keymapでも壊してみたらいいんじゃね?
2018/05/21(月) 15:51:07.84ID:pTo/71V7
壊すのも元に戻すのも再起動必要になるだろ
400デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:14:45.20ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

IAVAJ
2018/05/24(木) 10:37:52.55ID:cPlRxlDn
IAVAJ
402デフォルトの名無しさん
垢版 |
2018/05/29(火) 22:34:39.42ID:7/wI9AnP
Windows10で仮想デスクトップを使った場合
そのどちらのデスクトップに自作アプリがあろうとも
GetDC(0)って現在表示しているデスクトップを取得するんだな

子ウィンドウだけを仮想デスクトップに移動しておいて
その子ウィンドウにスクリーン・ショットを取らせようと考えていたんだが
所詮、仮想なんだ?
もしかしてGetDC(1)で仮想の方を取得できないかもやったが真っ白だた
2018/05/30(水) 07:12:33.93ID:tkaPgK/f
そらgetdcの引数は仮想デスクトップ番号じゃないかならなw
ivirtualdesktopmanagerじゃそういうのできないしどうしたらいんだろうな
2018/05/30(水) 07:34:07.95ID:VLAeNwdW
アクティブじゃない仮想デスクトップにあるUWPアプリとか
サスペンドするようにもなってるしDWM的に無理じゃないかしら
405デフォルトの名無しさん
垢版 |
2018/06/01(金) 04:15:17.48ID:LQ78zvmu
このスレがまだあってよかった。
いま時 Win32APIを使ってゴリゴリ書いてるんだけど、
RegisterClassEx 構造体の lpszClassName に指定する文字列って、
ローカルな変数で指定しても大丈夫? つまり、ウィンドウクラスの登録後に
文字列のメモリが解放されてしまうことになっても問題ない?
それとも文字列リテラル(静的文字列)じゃないとダメなの?
406405
垢版 |
2018/06/01(金) 04:17:20.03ID:LQ78zvmu
すまそ、変な書き方をした。
>RegisterClassEx 構造体の

WNDCLASSEX 構造体の、lpszClassNameフィールド。
2018/06/01(金) 04:33:40.82ID:p/Dhco7s
登録されたら、文字列の内容が記録されるから、ローカル変数で結構毛だらけ。
408405
垢版 |
2018/06/01(金) 08:42:09.72ID:LQ78zvmu
>>407
ご回答ありがとうございます、了解です(>∀<;)
2018/06/13(水) 19:44:17.74ID:lSIEjw1a
declspec dllexport使ってなかったから気づかなかったけど
x64で仕様変わったんだな
2018/06/13(水) 19:53:03.95ID:08JTaAbh
呼び出し規約が?
2018/06/13(水) 21:31:58.11ID:lSIEjw1a
x86だと先頭にアンダーバーが 後ろに@引数バイト数がついてたけど
それが無くなって関数名だけを勝手にエクスポートしてくれるみたいだ
2018/06/14(木) 00:37:48.44ID:CDT3Iung
https://msdn.microsoft.com/ja-jp/library/56h2zst2.aspx
これのことか。
2018/06/14(木) 02:49:39.56ID:zhf22BrY
Cの話なのね
2018/06/14(木) 09:33:49.07ID:0LV14Koi
++でも同じだよ。結局使うのはc形式なんだから
2018/06/16(土) 12:34:33.29ID:eoVHJNOw
Windows7でRemoveMenu関数を使ってコマンドプロンプトのクローズボックスを無効化したあと
タイトルバーからプロパティが開けなくなるようですが、コマンドプロンプトを再起動する以外で
回避する方法はありますか?
2018/06/16(土) 12:41:21.25ID:fQgtrTpq
cmdが内部で特殊な処理してない限りそんなこと起きないと思うんだけど・・
単にプロパティの位置が一番下だから間違えて消してるんじゃない?
2018/06/16(土) 13:09:31.09ID:Iux2O+3t
RemoveMenu呼び出しの周辺のコードさらせ。
2018/06/16(土) 16:12:48.28ID:IDYLbmOn
コマンドプロンプトやPSのコンソールの実装はかなり特殊だよ
1ウィンドウと同じに考えてはいけないと思ってる
2018/06/16(土) 16:48:55.99ID:fQgtrTpq
本当かよっと思って試しにやってみたら何のトラブルもなく閉じるだけ消えてプロパティ開けるぞ
2018/06/20(水) 14:47:03.73ID:XFilFgQX
LOGFONTのlfUnderlineを設定したフォントで文字を描画した際、下線が引かれますが、
この下線の位置や太さを決定するルーチンはありませんか?
点線なども引けるようにするため、lfUnderlineを使わずに自分で描きたいのですが、
単純に下端に描くと、メイリオだと全然違う位置になってしまいます。
421デフォルトの名無しさん
垢版 |
2018/06/20(水) 14:57:53.57ID:OnxnZInx
つまりアンダーラインが相対的にどこに来るかを指定してる属性を取りたいっていう質問でしょうか?
2018/06/20(水) 15:05:42.83ID:XFilFgQX
>>421
そういう感じです。
CreateFontIndirectで作成したフォントを使って文字を描画したあと、
その文字の位置に自分で下線を引きたいと思っています。
2018/06/20(水) 15:06:59.64ID:XFilFgQX
追記ですが、理想としてはlfUnderlineのときと
全く同じ位置や太さで描きたいと思っています。
424デフォルトの名無しさん
垢版 |
2018/06/20(水) 15:10:10.67ID:4KfCtndu
baseline memo
http://d.hatena.ne.jp/satosystems/20140210/1392019342
http://marupeke296.com/DXG_No66_OutlineFont.html
http://d.hatena.ne.jp/It_lives_vainly/20100331/1270002338
http://k3tec.net/neko_wiki/index.php?%A3%D7%A3%E9%A3%EE%A3%B3%A3%B2%A3%C1%A3%D0%A3%C9%B9%D6%BA%C28%B2%F3
http://chokuto.ifdef.jp/urawaza/struct/LOGFONT.html 👀
Rock54: Caution(BBR-MD5:79b7e0206b0fd5ffcfddd514fa488d36)
2018/06/20(水) 15:34:01.33ID:mFWpedZK
質問者じゃないけど、フォント周りのコードを弄ってるときに
ベースラインやレディングについて実際に値が欲しいときがちょくちょくあったなあ。
結局分からなかった思い出。

>>424
結局概念しか分からないw

win32apiじゃなくて、これしかないのかな?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms533824(v=vs.85).aspx
426菩薩@太子
垢版 |
2018/06/21(木) 20:10:03.98ID:6ce+aANS
汝らよ、汝らはWin32APIに関してわからないことがあったら、このスレで質問しなさい。
そして我が見守るこのスレで、誉れと思って、おにーさんおねーさんたちから、適切なアドバイスを受けなさい。
2018/06/21(木) 20:18:23.12ID:pkPeGiXN
さすれば、弥勒菩薩が降臨するまでに回答が得られるであろう
428デフォルトの名無しさん
垢版 |
2018/06/22(金) 06:16:52.85ID:kyYAMp48
芽っていう意味だよ
429デフォルトの名無しさん
垢版 |
2018/06/22(金) 08:59:29.47ID:4s+1pzSQ
>>423
アセント、ディセントの値を取ってベースラインを割り出すとか出来たような…
とにかく、アセント、ディセントをググってみるのがいいと思う

昔、似たようなことやって、えらい苦労した覚えがあるわ
詳しいことはもうほとんど忘れた
2018/06/22(金) 20:00:29.48ID:HpQmxb21
DirectWriteだとカスタム描画用にIDWriteTextRenderer::DrawUnderlineというコールバックがあるで
2018/06/22(金) 20:21:26.56ID:vo7No3CM
もしかして GetTextMetrics で取得した TEXTMETRIC の tmAscent, tmDescent
で分かるんじゃないの?
432415
垢版 |
2018/06/23(土) 09:44:08.76ID:UVw2sBCh
>>416-419
原因が分かりました
↓のGetSystemMenuをTRUEで呼ぶ箇所をなくしたら、実行後でもプロパティが表示されました
MSDNに「TRUE を指定すると、この関数は、ウィンドウメニューをリセットして Windows の既定の状態へ戻します。」と
書いてあったので、cmdなら起動直後の状態に戻るものだとばかり・・・orz

HMENU  hmenu;
/* ボタンの状態を変更する前に、コンソールのカスタマイズを取り消す */
GetSystemMenu(GetConsoleWindow(), TRUE);
/* コンソールメニューハンドルのコピーを取得する */
hmenu = GetSystemMenu(GetConsoleWindow(), FALSE);
/* 引数に応じて "閉じる"、"最小化"、"最大化" 各ボタンを無効化する */
if (!(button_stat & 0x01))
 RemoveMenu(hwnd, SC_CLOSE, MF_BYCOMMAND);
/* 以下省略 */
433さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2018/06/24(日) 08:52:07.32ID:jlx8CiNF
来たよ!!!
https://twitter.com/katahiromz/status/1010659723119509504
https://twitter.com/katahiromz/status/1010661747433172992
2018/06/24(日) 09:12:16.31ID:7l22t7T7
また片山の宣伝かよ
2018/06/24(日) 10:11:04.49ID:Ki1yi8uD
一応、Win32APIで書いたんですけど。
2018/06/24(日) 10:53:22.32ID:7l22t7T7
そういう考えで今まで何度も宣伝してたのかw
ここはwin32api質問用のスレ。言い換えるとAPIの使い方に関するスレであって、
API使ってるアプリ紹介スレじゃないんだよ
2018/06/24(日) 10:54:03.26ID:QdNeiEeM
あ? なんだよ「C++11に準拠してarray::operator[]で範囲チェックしろ」とかラリってる糞コテは片山かよ
2018/06/24(日) 11:09:06.07ID:Ki1yi8uD
>>436
リソースエディタがWin32APIに関係ないって?

>>437
誤解です。関係ない話を勝手に結び付けないで下さい。
2018/06/24(日) 11:19:47.20ID:Ki1yi8uD
5ちゃんねるは、広告料と浪人の収益によって成り立っています。
2018/06/24(日) 11:21:10.11ID:7l22t7T7
関係ないよ
質問内容によってはリソース編集が関係してくることはあるが、そんなソフトが関係することはまずない
2018/06/24(日) 11:23:27.52ID:Ki1yi8uD
コマーシャルの仕組みについて皆さまのご理解をお願い致します。
2018/06/24(日) 11:24:22.52ID:Ki1yi8uD
>>440
お前の中ではな。
2018/06/24(日) 11:39:26.10ID:Ki1yi8uD
お前ら、Win32を知り尽くしているんだろ?
だれかReactOSで日本語入力できるようにしてくれよ。
44441
垢版 |
2018/06/24(日) 11:48:47.83ID:iIAhljkC
Win32Apiで何ができるかをを知り尽くしているが
Win32Apiが何をしているのかは何も知らない
2018/06/25(月) 01:12:02.96ID:R9m7k+sg
if(sa::sendkey[cnt]!=NULL){
if(sa::sendcontrol[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYDOWN, VK_CONTROL, 0 );
if(sa::sendalt[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYDOWN, VK_MENU, 0 );
if(sa::sendshift[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYDOWN, VK_SHIFT, 0 );
SendNotifyMessage(sa::hWndSa, WM_KEYDOWN, sa::sendkey[cnt], 0 );
SendNotifyMessage(sa::hWndSa, WM_KEYUP, sa::sendkey[cnt], 1);
if(sa::sendshift[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYUP, VK_SHIFT, 1);
if(sa::sendalt[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYUP, VK_MENU, 1);
if(sa::sendcontrol[cnt]) SendNotifyMessage(sa::hWndSa, WM_KEYUP, VK_CONTROL, 1);
}
sa::sendkeyにデータキーが有る時、sa::sendcontrol、sa::sendalt、sa::sendshiftがtrueならば、
「Ctrl+Alt+Shift+データキー」といったふうに送信したいのですが、
データキーしか送信されません。
何がいけないのでしょうか?
2018/06/25(月) 07:03:38.33ID:euNVlzH4
keybd_eventもしくはsendinput使う
2018/06/25(月) 18:46:39.01ID:oo6U7F08
??非アクティブウィンドウのままがいいならこれでどうでしょう
ShiftとEndの同時押しが出来ることを確認しました

void send_shift_and_end()
{
HWND hWnd = FindWindow(L"Notepad", NULL);
if (hWnd == NULL) {
return;
}
HWND hEdit = FindWindowEx(hWnd, NULL, L"Edit", L"" );
if (hEdit == NULL) {
return;
}
BYTE kstats[256], shiftstat;
DWORD srctid, dsttid;
srctid = GetCurrentThreadId();
dsttid = GetWindowThreadProcessId(hEdit, NULL);
AttachThreadInput(srctid, dsttid, TRUE);
GetKeyboardState(kstats); // 実行前の状態を保存
shiftstat = kstats[VK_SHIFT];
kstats[VK_SHIFT] |= 0x80; // shift を押下状態に
SetKeyboardState(kstats); // 状態を更新
SendMessage(hEdit, WM_KEYDOWN, VK_END, 0); // SendMessage は OK, PostMessageは NG
kstats[VK_SHIFT] = shiftstat;
SetKeyboardState(kstats); // 実行前の状態に復帰
}
2018/06/25(月) 20:01:44.94ID:R9m7k+sg
レスありがとうございます。

このようにしてみたのですが、送りたいウィンドウがもともとアクティブな時は送信されるのですが、
アクティブ出ない場合、アクティブに出来ずに居ます。

if(sa::sendkey[cnt]!=NULL){
 //ターゲットををアクティブに
 HWND hWndTemp = SetActiveWindow(sa::hWndSa);
 char t0[256 + MAX_PATH];
 sprintf(t0, "sa::hWndSa:%d(%x), hWndTemp:%d(%x)", sa::hWndSa, sa::hWndSa, hWndTemp, hWndTemp);
 strscr_set(t0);

 //Key Event送信
 if(sa::sendcontrol[cnt]) keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
 if(sa::sendalt[cnt]) keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
 if(sa::sendshift[cnt]) keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
 keybd_event(sa::sendkey[cnt], 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
 keybd_event(sa::sendkey[cnt], 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 if(sa::sendshift[cnt]) keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP | 0, 0);
 if(sa::sendalt[cnt]) keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 if(sa::sendcontrol[cnt]) keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

 //元のウィンドウをアクティブに
 SetActiveWindow(hWndTemp);
}

デバッグ情報を見る限り、ウィンドウハンドルは取得できてます。何がまずいのでしょうか?
2018/06/25(月) 20:03:32.63ID:R9m7k+sg
ちょっと>>447さんの方法も試してみます。
有り難うございます。
2018/06/25(月) 20:32:07.52ID:RnBLs+IR
Ctrl+Alt+Delは、セキュリティで保護されているんじゃ中田家?
2018/06/25(月) 21:13:56.50ID:R9m7k+sg
>>447さんの方法で無事うごきました。
ありがとうございましたm(_ _)m
2018/06/25(月) 21:31:41.84ID:f6L/NlJ0
SetActiveWindow の代わりに SetForegroundWindow を試してみたら?
2018/06/25(月) 21:35:50.33ID:I2eYxQBJ
blinkWindowtop
2018/06/30(土) 18:06:34.48ID:RTJdtcUh
言いたかないがCOMでマジで糞だなと思うのは
アパートメントか何だか知らないが
勝手に内部でメッセージループ回すな!!!
たまにそうなって通常ではあり得ない順番で関数が呼ばれてデッドロックするんだよ糞野郎
そういう糞メソッド見つけるたびにメインスレッドとは別のスレッドで実行するように書き直すんだが
実に馬鹿らしい
どのオブジェクトのどのメソッドでそうなる可能性が有るかMSDNのどこにも書かれてないしな
どうしろと
2018/06/30(土) 18:25:36.41ID:SPR6zsx0
別スレッドにしたら余計危ないだろw
2018/06/30(土) 19:40:38.36ID:RTJdtcUh
いやまじでさ
しかも今まで大丈夫だったのに最近のWindows10のアップデートを当てたら
なぜかメッセージループ回すようになったやつとかあるし
いつ何のタイミングでメッセージループが回るか分からねぇ
アパートメントモデルはマジで糞過ぎ
全部マルチスレッド対応でいいだろ意味不明
2018/06/30(土) 19:45:02.11ID:RTJdtcUh
ただスレッドモデルのせいでメッセージループが回ってるのかどうかは良くわからないんだがな
原因は分からんが勝手にメッセージループ回すのはマジで迷惑だからやめてほしい
何がどの順で実行されるか分からなくなるから
458デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:09:52.47ID:gFgZc5FG
548
2018/07/05(木) 06:45:33.22ID:uNMy++3S
Direct2D いいね。
4K画像もヌルヌルに縮小拡大表示できる。回転や鏡像反転も大丈夫だった。
2018/07/06(金) 20:02:27.82ID:xJt/yCDq
1台のPCにマウスAとBを接続し、
マウスAは普通のマウスとしてWindowsで、マウスBを特定のプログラムのみで使いたいのですが
どのようにすればよいでしょうか?
2018/07/06(金) 20:26:18.50ID:uwYbJKCZ
特定のプログラムのみで使うってのをどういう意味にするかだな
フィルタードライバ作ってBを潰すと同時に操作をアプリに送って、アプリから特定のプログラムへマウスメッセージでも送るとか
2018/07/08(日) 20:51:40.89ID:O/180cHX
Low-Level Mouse HookでデバイスIDは取れなかったと思うし
ソフトでやる場合ドライバまで降りるしかないね
2018/07/08(日) 23:36:33.06ID:aNDdpi7h
GetGlyphOutlineでサロゲートペアの文字のビットマップを取得するには
どうすればいいでしょうか
普通の2バイトの文字はできます

調べると、グリフインデックスを取得して〜みないな内容は
ぽつぽつ見つかったのですがよくわかりません
コピペして適当に真似てみたのですが、GGO_GLYPH_INDEXを指定すると
謎の小さいデータ(abc間隔とかいうやつでしょうか)が返ってくるだけです
これまた試しにGGO_GRAY8_BITMAP | GGO_GLYPH_INDEX とやってもサイズは0でした
464デフォルトの名無しさん
垢版 |
2018/07/09(月) 17:38:45.00ID:1p1eFn95
INDEXをもらったら本体を取りに行く
2018/07/09(月) 21:03:04.88ID:xF/N3z+3
>>464
それはINDEXから直接アウトラインデータを持ってきて自前で処理するという意味でしょうか
本体を取りに行くというのがわからないです
2018/07/10(火) 19:32:28.56ID:Q7aC7GqH
カーネルモードからユーザーモードアプリにデータを渡すいい方法ないかな?
イメージとしてはマウスのボタンを押したらその情報をアプリが受け取るとか、ネットワークメッセージを受信したらそれをアプリに渡すというもの
CreateEventの通知と共有メモリ使えばできるけど、もっといい方法ないかな
2018/07/15(日) 04:33:45.21ID:Fuh1W0mR
>>463
これですがインデックス取得後、GGO_GRAY8_BITMAP | GGO_GLYPH_INDEXで
普通にサロゲートペアのビットマップを取得することが出来ました
原因は単にテストに使用していたフォントがサロゲートペアに対応してなかっただけでした…

もしそういうフォントの場合は
自分で取得前に代替フォントに切り替えるという認識であってますか
それともどこかで指定する方法はあるんでしょうか
2018/07/15(日) 07:18:20.84ID:F1eG7opL
>>466
> もっといい方法ないかな


「いい」はあなたの脳内でのみ定義された概念なので他人には答えようがない。
2018/07/15(日) 07:30:49.51ID:8618Mha6
>>468
あなたが考える「いい」方法を教えてって意味でしょwww
2018/07/15(日) 07:36:07.14ID:iXIp3nZ5
カーネルモードでFDDに保存
ユーザーモードはFDDの中身を定期的に読む

これで良い
2018/07/15(日) 08:27:47.61ID:GnA/ld69
>>469
答えたらそれは俺の「いい」と違うって言われるだけだろ
2018/07/15(日) 08:54:59.84ID:JD67P8Kl
プログラマなんてアスペキチばっかだから質問を読み取ってくれないのはよくあることよ
それにDDKスレ見りゃ分かるが質問は海外ですべき。国内じゃ回答つかん

共有メモリだとデータ欠落がありえるから(受け渡し済みデータをメモリ内から消す仕組みを作るのが大変だから)
FIFOにためて通知後にdeviceiocontrolで読み出させる
2018/07/15(日) 09:02:55.50ID:TNInTYOo
いい方法はわからないが正しい方法はあるだろう
システムはある方法が正解になる前提で全体ができている
それに逆らうと別の局面で何か問題が発生する
2018/07/15(日) 14:57:39.97ID:F1eG7opL
煽りぬきで、まず「いい」の定義から。
信頼性を優先するのか、速度を優先するのか、ソースコードの使いやすさを優先するのか、メモリ消費を抑えることを優先するのか、等。
2018/07/15(日) 15:00:46.43ID:JD67P8Kl
用途が挙げられてるからそこから読み取れってことよ
その用途で実装するならこういう処理の方が「いい」となる
2018/07/15(日) 15:19:18.62ID:F1eG7opL
質問者や発注者は、何を優先し、何を犠牲にする覚悟があるかを明確にすることが必要。
それは金であったり時間であったりする。お前らの工数と人件費を犠牲にしたい場合が多い。
2018/07/15(日) 15:24:35.14ID:blM5pGUx
まあ、「いい」は人それぞれな部分はあるかもしれないけど、そこやこだわりが書かれて無いならテキトーで良いんじゃね?
「お手軽な」という程度の解釈で。
2018/07/15(日) 15:38:50.77ID:F1eG7opL
発注側が受注側にわざと曖昧な要件を出して、受注側が提案したアイデアを無償で手に入れるのも重要な技術。
いかにしてコストを相手に押し付けるかが重要になる。
479デフォルトの名無しさん
垢版 |
2018/07/15(日) 16:39:00.88ID:F1eG7opL
相手の自尊心を刺激しつつ、情報をタダで引き出す技術は極めて重要。省資源の基本。
480デフォルトの名無しさん
垢版 |
2018/07/15(日) 18:54:11.43ID:z9dis41F
>>471
だよな
2018/07/15(日) 19:02:18.64ID:/PIdnGOp
逆に言えば「CreateEventの通知と共有メモリ」ではダメな理由は何なのか?
当人(>>466)が思うダメな理由が判れば、それを改善するものが「いい方法」なんじゃね?
2018/07/15(日) 19:29:32.13ID:JD67P8Kl
ネットワークモニターを共有メモリで実装すること考えたらダメと感じる理由分かるだろうよ
2018/07/15(日) 19:54:05.79ID:JjtknQT5
・・・・・この感覚・・・・・・感じるぞ・・・・・・
484デフォルトの名無しさん
垢版 |
2018/07/16(月) 09:41:18.75ID:Tl1DHPio
memory mapped file
2018/07/16(月) 11:29:16.36ID:fjsGqhw7
共有メモリは誰が最後に開放するか問題があった気がする
代表プロセス(サービスとか)が全部やることにすればいいんだろうけど
2018/07/17(火) 09:35:44.28ID:3FwnZhxD
Win32APIでHDCに描画していくルーチンでPDFを作成できて、
プリンタドライバではなくDLLなどで提供されているものはありませんか?

ユーザーが印刷でAcrobatなどを選択するのではなく、専用のコマンドを用意して、
DLLのAPIからHDCを作成してそこに描画していく、という方法を探しています。
2018/07/17(火) 11:31:49.15ID:iiy4NiaP
pdfium
2018/07/17(火) 11:36:41.73ID:iiy4NiaP
ごめん、pdfiumは表示ができるけどPDF作成はできないんだった。
489デフォルトの名無しさん
垢版 |
2018/07/17(火) 14:53:09.38ID:+kxKOOfA
HDC って描いてるからダメなんだろうけど
win32api じゃなくて良ければ
matplotlib の dll
2018/07/17(火) 15:02:10.66ID:Zb0J/52v
>>486
いっそpdfを自分でゴリゴリ作るライブラリを作って公開しよう
2018/07/17(火) 19:29:45.08ID:8vhfTmzU
PDFつくるの割と簡単だからな。読むのは難しいが
2018/07/17(火) 21:32:24.00ID:o/CsZXJt
PDFは、Win32APIの範疇じゃないから、HDCにこだわる必要はないと思う。
どうしてもHDCで描くなら、ビットマップを使うことになる。
2018/07/17(火) 21:46:38.93ID:zCwWixNA
>>486
libharu
手書きPDF (http://www.kobu.com/docs/pdf/pdfxhand.htm)
2018/07/17(火) 23:12:07.09ID:Zb0J/52v
どうしてもHDCからデータを取る必要があるのなら、pdfじゃなくてemfはダメなの
495486
垢版 |
2018/07/18(水) 09:13:26.55ID:b6TTATjh
やっぱりこういうライブラリは無いものなんですかね。

プリンタのHDCに対する印刷処理は実装済みで、
普通にAcrobatなどを選んで印刷すればPDFは作成できるので、
PDF作成用のHDCさえ作れれば、Acrobatなどに依存せずに、
今の処理でPDFを作成できるんじゃないかと思った次第です。

もちろん、プリンタのHDCに描画する処理とは別に、
PDFを作成する処理を新たに作れば可能なんでしょうけど、
今の印刷結果と一致させるもの大変そうだと思いました。
2018/07/18(水) 09:30:56.80ID:XytxFrpz
HDC→bmp→手書きPDFの調子で画像埋め込みpdf生成
これで終わり。1日あればできるでしょw
2018/07/18(水) 09:32:44.92ID:b6TTATjh
>>496
説明不足ですいません。
それだと文字がコピーできなくなってしまいます。
2018/07/18(水) 10:32:30.08ID:w8OpeSfX
>>469
じゃぁそう書けばいいじゃん
2018/07/18(水) 10:35:38.58ID:w8OpeSfX
>>497
まさにここに>>471の実例がw
2018/07/18(水) 10:49:35.82ID:XytxFrpz
HDCをDLLから作れないと思う。プリンタドライバ入れないと無理じゃないかな
それでもプリンタドライバを入れたくない&HDC使いたいってなら、手書きPDFしかないと思う
HDC使う処理を全てフックして手書きPDF処理に渡して生成
フォントは埋め込めるし、当然座標指定もできるから見た目を合わせるのは難しいことじゃない
2018/07/18(水) 11:39:33.38ID:2uaoDzyj
https://www.colorpilot.com/emf2pdfsdk.html
502デフォルトの名無しさん
垢版 |
2018/07/18(水) 17:17:05.71ID:r2tNZQmN
EMFがPDFになってもうれしくないんだよな
2018/07/18(水) 19:00:09.03ID:1yGq4zZr
嬉しいとか悲しいという感情はしまい込め
2018/07/18(水) 19:44:08.79ID:IL3iPWys
EM_DOCUMENT_AddPageFromMetaHandleというメソッドがあるみたいだから試してみては。
$4995-が高いかどうかは自分で考えな。

https://github.com/sybrexsys/VersyPDF
というものもある。
2018/07/18(水) 21:34:56.01ID:2uaoDzyj
プロプロイエタリっぽいな。日本人にはまだ未踏の分野みたいだ。
2018/07/21(土) 18:28:47.97ID:TBQGTmI1
IE(11)のタブってspy++で見ると、タブコントロールじゃないように見えるけど
これ自前かな?
タブの入れ替えの時も、タブがするすると動いて入れ替わる動作だし
これってタブコントロールだと無理だよね?

基本的に、IE,Edge,Chrome,Firefox,Opera,Vivaldi等のブラウザのタブって
タブコントロールじゃなくて、自前で描画しているのかな?
2018/07/21(土) 22:53:51.14ID:diLgD0pr
基本的に自前だよ
508デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:11:05.29ID:0LoJ4eZK
char *p = "hello";
を書くと、「型 const char * の値を使用して型 char * のエンティティを初期化することはできません 」
と表示されるんだが、どうすればいいんだ?
CQ出版社の『Win32 API完璧マスタ』189ページにも書いてある構文なのに・・・
2018/07/22(日) 17:13:16.23ID:Xbb1Ck+x
スレタイ
510デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:14:28.87ID:LiIRy0eu
char q[] = "hello";
char *p = q;
2018/07/22(日) 17:14:46.72ID:V5NblbDe
そんなのはCスレで聞けよ
char p[] = "hello";
512デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:15:10.69ID:LiIRy0eu
こうか

char q[] = "hello";
char *p = (char *)q;
513デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:20:17.81ID:0LoJ4eZK
これをTextOutしたいんだが・・・
TextOut(hdc,10,10, p, strlen(p) );
と書いてもエラーになってしまうし、
pをqに変えてもエラーが出る
514デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:26:49.45ID:0LoJ4eZK
>>513
「型 char * の引数は型 LPCWSFR のパラーメータと互換性がありません
BOOL TextOutW(HDC,int,intLPCWSTR,)int: 引数 4 を char[6] から LPCWSTR へ変換できません。」
って出てしまう。

CQ出版社の本には、
「TextOut(ps.hdc,10,10, p, strlen(p) ); 」って書いてあるのに。
2018/07/22(日) 17:27:01.83ID:+kDBWEhy
>>513
>508のエラーなのか TextOut のエラーなのか
2018/07/22(日) 17:29:03.13ID:+kDBWEhy
あー、面倒なので正確には調べないが、文字コードセットかソースファイルのコードを調べて
全部マルチバイト文字にでも統一すれ
2018/07/22(日) 17:30:27.51ID:V5NblbDe
コンパイラのオプションでユニコードを使うを無効化しろ
もしくはTCHARとかTextOutWとかTextOutAとかその辺でぐぐれ
518デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:33:51.95ID:0LoJ4eZK
>>515
TextOutの際に、いちいち
TextOut(hdc, 10, 10, TEXT("hello"), 5);
と文字列と字数を毎回入力したくないし、
表示文字を"good morning"とか "good bye" とか違う字数の文字列にも置き換えたいんだ。

だから、変数を使って文字列をpとかqとかに置き換えたいんだけど、そこで
型 char * の引数は型 LPCWSFR のパラーメータと互換性がありません 」
とかのエラーが出てしまう。
2018/07/22(日) 17:36:00.67ID:V5NblbDe
charは1バイト文字の型
LPCWSTRは2バイト文字の型
ものが違うんだよ
ってかwin32の本ならそのくらい書いてあるだろ。もし書いてないならゴミだから捨てろw
2018/07/22(日) 17:38:56.62ID:2bRdLxLs
TCHAR p[] = TEXT("hello");

TextOut(hdc, 10, 10, p ,lstrlen(p));
2018/07/22(日) 17:45:11.99ID:2bRdLxLs
>>518
後から文字列を変更するのであれば、初期化の時に配列の要素数に注意

#define MAX_LENGTH 256; // 要素数に注意

TCHAR p[MAX_LENGTH] = TEXT("hello");
522デフォルトの名無しさん
垢版 |
2018/07/22(日) 17:55:50.38ID:SZ8yn981
>>516-517
今から覚える人に非推奨のMBCS版を勧めるのはどうかと。
VSでも2015辺りからMBCS版のバグを治さず放置してたりするのだし。
523デフォルトの名無しさん
垢版 |
2018/07/22(日) 18:02:40.99ID:0LoJ4eZK
「TCHAR p[MAX_LENGTH] = TEXT("hello");」
で「式が必要です」ってエラーが出てしまうし。
「TCHAR p[256] = TEXT("hello");」って直接に数値指定するとエラーメッセージが消えるから、
なんかdefineが働いてないっぽい
2018/07/22(日) 18:09:58.01ID:lnBo9wWY
>>521
「256」の後の「;」は不要
2018/07/22(日) 18:17:18.42ID:2bRdLxLs
>>523
すまんね
流石に気付くだろうと思って黙ってたけど、define文の末尾にうっかり余計なセミコロン付けてしまっているので注意してね

とりあえずいまどきの環境なら、charはTCHAR、char *はLPTSTR、const char *はLPCTSTRを使い、リテラルはTEXTマクロで囲って
文字列操作関数はl付きの関数strlenならlstrlen、strcpyならlstrcmpなどに置き換えればほとんど問題はないよ
2018/07/22(日) 18:18:05.39ID:2bRdLxLs
被った、
指摘ありがとう>>524
527デフォルトの名無しさん
垢版 |
2018/07/22(日) 18:19:49.25ID:0LoJ4eZK
いろいろと教えてもらい、スレの皆様、ありがとうございます。

自分、最終的にゲームっぽいのを作りたくって、
それで会話メッセージが何百個もあるから、どうしても文字列を変数にする必要があるんです。

エラーコード↓です。

TCHAR p[256] = TEXT("hello");
TextOut(hdc, 10, 10, p, lstrlen(p));

p = TEXT("good morning");
TextOut(hdc, 30, 30, p, lstrlen(p));


こんな感じで、1つのpを使いまわしたいんです。
strcpyかとも思ったんですけど、「strcpy(p, TEXT("good morning") );」でも
「char*のパラメーターと互換性がありません」ってエラーが出て、なんか違いそうだし・・・

ググッても、Win32APIで1つの文字列変数を複数の文字列に何度も書き換える事例が見つからなくて、困ってます。
2018/07/22(日) 18:20:26.15ID:2bRdLxLs
>>525でstrcpyとstrcmpがごっちゃになってた、訂正
2018/07/22(日) 18:20:35.42ID:V5NblbDe
>>522
でもなこのレベルだとstrcpyすらできずに詰むぞw
2018/07/22(日) 18:24:33.44ID:2bRdLxLs
>>527
多分 lstrcpy でいける
2018/07/22(日) 18:26:03.58ID:+jM3tBOE
>>527
私なら(char *) にキャストしてしまいますね…これは悪手ですが
532デフォルトの名無しさん
垢版 |
2018/07/22(日) 18:26:33.56ID:0LoJ4eZK
解決しました!こうですね

TCHAR p[MAX_LENGTH] = TEXT("hello");
TextOut(hdc, 10, 10, p, lstrlen(p));

lstrcpy(p, TEXT("good morning") );
TextOut(hdc, 30, 30, p, lstrlen(p));


じぶん "lstrcpy" の存在を知りませんでした。
買ってたCQ出版社の本が2001年の本で古くって、
それで、ここら辺の話題が見当たらなくって、地元書店にWin32APIの本が無くって、
困ってました。月曜日に、銀行からカネを引き出して、都会の本屋に買い物に行こうかと思ってたところです。

質問に回答してくださった皆様、ありがとうございます。
2018/07/22(日) 18:26:39.79ID:lnBo9wWY
>>527
中身を直接書き換えないならLPCTSTRで十分
LPCTSTR p = TEXT("hello");
p = TEXT("good morning");
2018/07/22(日) 18:36:11.82ID:2bRdLxLs
>>533
LPTSTRなら可能だけどLPCTSTRだと無理じゃないかな
2018/07/22(日) 18:57:59.75ID:Xbb1Ck+x
なぜ?
536デフォルトの名無しさん
垢版 |
2018/07/22(日) 19:17:54.18ID:LiIRy0eu
>>513
TextOutA使え
お前にTextOut/TextOutWはまだ早い
2018/07/22(日) 19:47:40.34ID:lnBo9wWY
>>534
無理と決め付ける前に、まずは試してみるべきじゃないかな。
2018/07/22(日) 19:49:56.11ID:Rc8bc+T5
>>507
やっぱり自前ですか。
ベースにコモンコントロールのタブコントロール使ってるかと思ったら
どのブラウザも完全にオリジナルのタブコントロールを作ってる
みたいなんですよね。

これだけで一仕事だ、せめて手を抜く方法が無いものか。
2018/07/22(日) 20:07:22.02ID:V5NblbDe
コモンコントロールでつくりゃいい
何も真似することないでしょ
2018/07/25(水) 12:14:32.39ID:ObNghvXR
>>508
レスをつけてたここの住人はある意味、意地悪だなw
508よ、VS2017とか使ってるなら、プロジェクトのプロパティから、
構成プロパティ -> C/C++ -> 言語 の画面に、準拠モードという項目があるので、準拠モードをオフにしてみろ。
コンパイラが悪さしているだけだw
たとえば、準拠モードONだとこのコードは、こんなエラーになる。オフなら無事コンパイルできる。
#include <stdio.h>
int main(){
char *p = "hoge\n";
printf(p);
return 0;
}
1>------ ビルド開始: プロジェクト: test0001, 構成: Debug Win32 ------
1>test0001.cpp
1>d:\test0001\test0001\test0001.cpp(3): error C2440: '初期化中': 'const char [6]' から 'char *' に変換できません。
1>d:\test0001\test0001\test0001.cpp(3): note: 文字列リテラルからの変換では const 修飾子が失われます (/Zc:strictStrings を参照)
1>プロジェクト "test0001.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
541デフォルトの名無しさん
垢版 |
2018/07/25(水) 12:16:39.87ID:SfO6vmHU
>コンパイラが悪さ

最低だなこいつ
542540
垢版 |
2018/07/25(水) 12:19:48.04ID:ObNghvXR
マルチバイト文字の設定しろって書き忘れた。
構成プロパティ -> 全般 -> 文字セット
マルチバイト文字セットを使用する
の項目をセットしておけ。
古い本ベースで作るならそっちで十分だ。
慣れて来たらunicode文字セットにしてwchar_tとか使えばいいよ。
2018/07/25(水) 12:21:31.72ID:ObNghvXR
>>541
本読んでる初心者相手に、難しいこと言って混乱させるよりはいいだろう。
まずは動くようにするのが先じゃね?w
2018/07/25(水) 12:42:55.89ID:BhmZZaV3
コンパイラとか言う野郎最悪だな
そんなもんに頼むなよ
2018/07/25(水) 13:07:44.22ID:yh3zla7+
だな
ハンドアセンブルとかハンドコンパイルしろ
2018/07/25(水) 13:11:46.60ID:ufwVuEFI
https://www.suruga-ya.jp/database/pics/game/978050199.jpg
2018/07/25(水) 13:15:34.98ID:bHme1j3N
>>542
意地悪も何も、そのレスをとっくにしとるんだが
2018/07/25(水) 19:02:54.19ID:2d5RfbzO
cygwin/mingw-gcc で文句がでなければ、ほぼ問題ない、としています
2018/08/06(月) 21:23:32.62ID:CcPxoO2Y
成功した時に返り値が0になることがあるのに、失敗したら0を返しますとか言ってるAPIって何なんだよクソ野郎め
2018/08/06(月) 21:32:35.68ID:1U9qnNco
getlasterror
2018/08/06(月) 21:52:26.61ID:ID4O2Vgr
もちろんそんなの知ってるけど、GoがWindows API用に生成してくれるコードが返り値をチェックしちゃっててしばらくハマった
2018/08/06(月) 23:33:15.82ID:rktgM2el
>成功した時に返り値が0になることがあるのに、失敗したら0を返しますとか言ってるAPI

ちなみにどのAPI?
2018/08/06(月) 23:58:21.60ID:ID4O2Vgr
GetClassLongPtrとか
2018/08/07(火) 00:48:58.54ID:QZJ4WUVF
Goがクソなだけじゃん
リファレンス読んでコード生成しろよバーカ
555デフォルトの名無しさん
垢版 |
2018/08/07(火) 05:00:55.97ID:OlmXtX1U
>>549-550
「失敗が返って来たときは関数を呼びます」
だっけ
556デフォルトの名無しさん
垢版 |
2018/08/07(火) 13:27:12.44ID:ldpX++7o
>>549
「失敗したら0を返します」の対偶は「非ゼロが返ったら成功している」だ。
「成功したら非ゼロを返す」ではない

これが分からない人には if文は書けない
557デフォルトの名無しさん
垢版 |
2018/08/07(火) 14:31:10.43ID:AJOeK/rw
>関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

これな
2018/08/07(火) 21:06:57.68ID:BoePinTI
>>557
>>拡張エラー情報を取得するには、 関数を使います。

これがわからない人には、プログラムは書けない
559デフォルトの名無しさん
垢版 |
2018/08/07(火) 21:15:30.99ID:vzugDPjm
>>554-555
>リファレンス読んでコード生成しろよバーカ
>失敗が返って来たときは関数を呼びます

しばしば、動詞の主語がないせいで誰が対象なのか、わからないことが多い。
バカなのは誰なのか。
関数を呼ぶのは誰なのか、関数が関数を勝手に呼んでくれるのか。
的な。
2018/08/07(火) 21:19:02.18ID:+HmVRhEr
馬鹿なのは読み手に決まってるだろww
2018/08/07(火) 23:23:50.41ID:ca/GX3OS
まさかと思うけど英語読めないとか?

戻り値
関数が成功すると、要求した値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
https://msdn.microsoft.com/ja-jp/library/cc364638.aspx

Return value
Type: ULONG_PTR
If the function succeeds, the return value is the requested value.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms633581(v=vs.85).aspx
2018/08/07(火) 23:39:40.91ID:95G7jtf/
訳が全然ちげぇ、ってネタだろ。
2018/08/07(火) 23:44:38.95ID:JmB8aria
う〜ん
実に使いにくい
2018/08/07(火) 23:55:05.37ID:p+v0mQmH
ダークサイドの貧乏マは、インターネットのどこかにWin*2 Pr*gramm*rs' Refer*nceというヘルプファイルがあるから、別に。。。まあ、できる奴はサプスクリプションをイッチャッテ。
565デフォルトの名無しさん
垢版 |
2018/08/08(水) 04:44:16.55ID:XhOfYtOw
>>561
このひどい訳文はテンプレのようになってて
このGetClassLongPtr()の例だけじゃなく
Win32APIのいたるところで見るんだが
ほんとうにやめてほしい
2018/08/08(水) 05:30:57.38ID:pP5XdYnX
>>562, >>565
訳が酷いと言うよりなぜかわからんが関数名(GetLastError)が無くなってるって話だろ
2018/08/08(水) 07:00:27.96ID:EhLv0UZk
もう慣れたわ
2018/08/08(水) 08:05:04.95ID:ApshsMT9
GetClassLongPtrのように値だけ返すやつは、失敗時ややこしいってのはAPIに限ったことじゃなく関数作ったことあればだれでも知ってること
MSDNの日本語ページはの罠は無数にあるから少しでもWindowsプログラミングしたことあれば英語ページ見ることになる
どっちも超初心者じゃないとひっかからない罠

昨日のニュース
日本国内でのプログラミング言語別の年収ランキング、中央値1位は「Go」
http://www.itmedia.co.jp/news/articles/1808/07/news087.html
569デフォルトの名無しさん
垢版 |
2018/08/08(水) 16:43:15.25ID:QemCzjVB
>>566
それを訳がひどいって言うんだよ
2018/08/08(水) 16:56:08.84ID:T8cc5IXv
みんな間抜けなんでマジレスするけど、SetLastError(0)でクリアしてから呼ばないと、成功したのか失敗したのかわからん仕様です。
2018/08/08(水) 17:43:49.45ID:jbuaovom
>>569
周回遅れ乙

>>570
みんなそんなことは分かってるだろ
普通に考えたら失敗/成功をBOOLで返して取得した値はポインタ経由で返せばいいのに
って思ってる人は多いと思う
2018/08/08(水) 19:26:41.46ID:9aI0uHWQ
ぬるぽ
2018/08/11(土) 00:27:06.52ID:MXmSxQHh
>>566
これを見るたびに何でどうしたらこんなことになるのかと考え込んで作業が中断してしまうのだ
2018/08/11(土) 07:49:06.09ID:J6jQGTXX
開発が遅れるわけだw
2018/08/11(土) 13:45:31.92ID:VJAxUjoq
悟ってお仕事
2018/08/23(木) 22:27:48.51ID:hCHxCnaA
スナップできるのはどういうウィンドウかあるいはどういう条件なのか、具体的な要件の一覧ってどこかで見られますか。

自作デスクトップアプリケーションのウィンドウがスナップ機能の対象になってないことに気づいて、少しプログラムをいじってみたところ
すぐにウィンドウスタイルによってスナップ機能が働かないことがあるのはわかりました。
具体的にはWS_MAXIMIZEBOXが無いとスナップできません。

で、他のスタイルやスタイル以外の条件もあるかもしれないと思い、
まずはウィンドウスタイルとスナップの関係性から調べてみましたがスナップ機能の条件についての情報は見つけられませんでした。

よろしくお願いします。
2018/08/23(木) 23:19:58.10ID:yNz2G80b
スナップなんてOSの設定で最初に切る項目だぞ
気にするな
578デフォルトの名無しさん
垢版 |
2018/08/24(金) 12:24:54.13ID:ZVlysGry
ダイアログにすればいい
2018/08/24(金) 12:28:22.65ID:NFTQhSIK
ついでに質問だけど
win10あたりからウィンドウの枠のちょっと外まで(影なしにしてても)
ウィンドウのリサイズとかマウスアイコン⇔の判定に使われてるみたいで
ウィンドウの下のウィンドウを上にもって来たくてクリックしたつもりが
違うウィンドウが上に来てしまうことが多くて困ってる
これなんとかする設定どこにある?
2018/08/24(金) 12:54:56.78ID:9pgk/rrF
このスレ的な解決だとFrameRectをフックして少し大きめの枠に変えちゃえばいいのかな
2018/08/24(金) 13:35:47.85ID:C22mUEBr
> 具体的にはWS_MAXIMIZEBOXが無いとスナップできません。
win7 WS_MAXIMIZEBOXなしのタイトルバーをマウスでつまんで
desktopの上辺に移動してマウスを放すと、
タイトルバーが完全に表示されるように再移動される
これもsnapではないのか
2018/08/24(金) 16:58:34.94ID:71ZOGqZF
>>581
そうですね。即席で調べただけなので見落としてました。
いずれにせよ、スナップ操作時にどういったウィンドウならばどういう作用が起こるのか、
逆に特定のスナップの効果が欲しい場合にどういうウィンドウをセットアップすればよいのか
みたいなことがわかる情報を探しています。
2018/08/27(月) 20:05:43.05ID:vbuO7hMr
片山の取り巻きは帰れ
2018/08/28(火) 18:50:20.34ID:K0zx4BAG
実行中のGUIアプリケーションのコントロールを取得して表示させたいのですが良い方法はありますか?
2018/08/28(火) 22:31:26.44ID:CqD+kceR
spyのソースを読むべし
2018/08/29(水) 06:13:37.68ID:bvggge1h
hwnd検索するだけの質問だったのか
てっきりインジェクトして中身奪い取るとかそんなのかと思ったわww
2018/08/29(水) 06:56:51.37ID:/uFmfA/d
そっちならAppInit_DLLsの勉強しなされ
ってのが回答かな
2018/08/29(水) 07:15:50.54ID:bvggge1h
難しいのはインジェクトの先だから・・・
2018/08/29(水) 08:38:47.27ID:SgdWV5FD
悪用出来るからこの先は自分でお勉強
2018/08/29(水) 09:10:27.86ID:eKXrV34J
>>589
素直にわからないって言えよ
>>588の「先」は、「自分のプロセスに貼ったコントロールを、そのまま残しつつさらに別プロセスのウインドウに貼り付けて表示する」ということだからな
2018/08/29(水) 09:13:57.66ID:/ngMaME6
>>590
なんでそんなことするのか全然わからん。
>そのまま残しつつ
>貼り付けて
2018/08/29(水) 09:29:45.16ID:eKXrV34J
>>591
>>584がもしも>>586ならそうなるでしょ
2018/08/29(水) 10:17:28.09ID:X/yLq4q6
そのまま残してんなら奪ってないやん
2018/08/29(水) 10:41:34.94ID:eKXrV34J
>>593
飽きれるほどくだらない揚げ足取りだな
「パスワードを奪い取る」の考えてみろ。残さないとは限らないんだよ
2018/08/29(水) 11:02:53.78ID:X/yLq4q6
>>594
飽きれるほど下手な例えだな
パスワードは残さないと使えないだろ
2018/08/29(水) 11:13:44.40ID:7geB3Ftq
パスワードはいただいた
返して欲しければ1BC用意しろ
2018/08/29(水) 12:00:14.20ID:X/yLq4q6
いただいた(変更した)
2018/08/29(水) 12:09:36.88ID:/ngMaME6
入力するパスワードを勝手に変えたら駄目じゃん
2018/08/29(水) 14:19:35.46ID:X/yLq4q6
パスワード変えずに「パスワードはいただいた」って?
それ何の脅しにもならんやん
元の持ち主が別のに変更して終わり
2018/08/29(水) 14:37:13.57ID:7geB3Ftq
せっかくギャグを入れてやったのにしょうもねえ奴ら
2018/08/29(水) 22:37:19.40ID:/ngMaME6
え?おもしろいとでも思ってたの?
もしかして渾身のギャグなの?
恥ずかしくないの?
2018/08/30(木) 10:17:52.45ID:Z5Fjo3b4
程度が同じじゃないとジョークは通じないらしい
ただ今回はガキとバカだからどちらも等しく低いように見えるな
2018/08/30(木) 10:23:06.98ID:53NSE4xw
謎の上から目線
604デフォルトの名無しさん
垢版 |
2018/08/31(金) 04:18:44.69ID:kx4Z958G
昔のゲームのコードを弄ってて困った事があります。
ウィンドウの大きさを変えると一緒に表示中の画面も引き延ばされるのですが
引き延ばされた時に粗くなって美しくないです。内部のバッファをウィンドウを最大化された時の大きさで確保しておき
ゲームの処理の方でフィルタ処理を施せば上手く行きますが出来れば小さいバッファのままで
ウィンドウのリサイズ時にAPI側でフィルタ処理できないでしょうか?
あと気になるのが環境によっては上記の処理を勝手にやってくれている環境もあります(ディスプレイドライバによるのかもしれません)。
出来れば確実にこちらで処理できるようになれば嬉しいです。
2018/08/31(金) 06:25:35.68ID:u3E//DdP
>>604
普通、WM_SIZEの都度ゲームのフレームバッファを再作成するもんじゃねえの?
2018/08/31(金) 06:50:31.93ID:kx4Z958G
>>605
出来ればバッファの大きさは固定で行きたいんです。
最大化された時にいかにも拡大してフィルタリングされた感じを出したいので。
環境によってはウィンドウがリサイズされると勝手にフィルタリングしてくれて
ぼやっとした画面になるので出来ればそれを確実にやりたい感じです。
何か設定でもあるんでしょうか。OSの設定としてあるならそれを知りたいです。
2018/08/31(金) 07:13:40.06ID:wCA0c3fj
SetStretchBltMode
2018/08/31(金) 18:32:30.98ID:kx4Z958G
>>607
良さげですね!試してみます。ありがとうございます。
609608
垢版 |
2018/08/31(金) 20:11:53.40ID:kx4Z958G
どのタイミングでStreachBltを呼び出してるのかわからない…
ウィンドウを制御するクラスの中のWM_PAINTは空だし。
初期化時にDirectXのAPIにhWndを渡してるので勝手にDirectX内部で呼び出してるのかな?
リサイズされた時にhWndを元にHDC作ってそこでStreachBltとか。その後HDC破棄みたいな。
そうなると手出しできないってこと?
2018/08/31(金) 20:17:23.84ID:kx4Z958G
それともウィンドウ作成時のスタイル設定などで
リサイズに合わせてスケーリングをどうするのかみたいな設定があるのかな。
それだとそこの設定でどうにかなりそうな気もするけどよく分からない。
ちなみにウィンドウ制御クラスの中のWM_PAINTでは動画などのスケーリングは自前でやってた。
なので少なくともWM_PAINTの中では自分でウィンドウ内部の他の表示のスケーリングはやってない。
2018/08/31(金) 20:46:55.45ID:kx4Z958G
ここ見たらたぶん同じような症状で困ってた人がいて
http://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=past&;no=1506
基本的に手出しができず綺麗に拡大されるかはドライバによるという事らしい…

え〜やだやだ〜 納得できない。やっすいPCでも綺麗に拡大されてるのに
家の高いPC(ドライバも新しい)で汚いなんて納得できないよ〜!
2018/08/31(金) 21:07:44.36ID:pOoITzWx
> 現状ではコーラさんがお書き込みになられた方法しかありません
あるって書いてあるじゃn
2018/08/31(金) 21:22:40.36ID:kx4Z958G
>>612
うん。そうだけど、たっかいグラボ積んでる家のマシンで汚く表示されて
やっすい3万くらいのPCで綺麗に表示されるのが納得いかないの。
2018/08/31(金) 21:23:46.62ID:kx4Z958G
>>612
あ、ごめん見間違った。
方法はあるんだけどバッファの大きさは固定でやりたいの。
2018/08/31(金) 21:31:04.55ID:pOoITzWx
だからバッファ固定でできるって
2018/08/31(金) 21:32:44.33ID:LcHwdHfr
なんか意味不明な質問だなと思ったら、それWin32じゃなくてDXライブラリとかいう
よくわからんライブラリの話やん。
2018/08/31(金) 21:33:51.55ID:kx4Z958G
拡大した時に粗くなる→最初から内部のバッファの解像度を上げておけばよくね?
ってのはナシで。
あくまでも内部のバッファの大きさは今のままでウィンドウが拡大された時に
勝手にドライバがやる部分をどうにかしたい。けど無理そうだね…

納得いかないのは、やっすいPCでは綺麗に表示されてるのに
たっかいPCで汚く表示されてしまうこと… 逆なら納得したのにこれはないよな〜
2018/08/31(金) 21:35:25.97ID:kx4Z958G
>>616
いやDXライブラリでも制御できない部分なので
Win32APIの方でなんとかならないのかなと思って。でも無理なのかな。
ここの人ならなんか解決法わかるかなと思ってたけど。
2018/08/31(金) 21:44:49.09ID:pOoITzWx
win32でやるならSetStretchBltMode
おまえがやるべきなのは小さい画面サイズのでいいからそのDCを取り出すこと
それしたらあとは表示するだけ
2018/08/31(金) 21:50:44.31ID:kx4Z958G
>>619
要するにそれは内部バッファのHDCを取り出して
SetStretchBltModeを設定し、その後ウィンドウのクライアント領域に自前で
StretchBltで描画しろってことになるかな?まあそれしかないのかやっぱ。
2018/08/31(金) 22:41:05.39ID:kx4Z958G
さすがに自前でやったらGDI+使っても速度が全然でなかった(毎フレーム描画しないといけないので)。
諦めます〜
2018/08/31(金) 22:47:15.40ID:u3E//DdP
なんか基本的な部分から盛大に勘違いしてそうだな

Direct3D使ってるならドライバ依存になるのはスワップチェインのバックバッファが
ターゲットウィンドウのサイズとかみ合わない場合に
Presentの呼び出しでウィンドウにフィットするように自動でスケーリングされる部分だ

ドライバ依存の挙動を回避したいならバックバッファをウィンドウに合わせてリサイズするのは必須なの

逆に、バックバッファの解像度をゲームの解像度と考える必要も無い

バックバッファがどんなサイズであれゲーム自体は固定サイズのレンダーターゲット用テクスチャにレンダリングし
バックバッファへはそのテクスチャをスプライトとして張り付けるだけ
拡縮フィルタリングをニアレストにするのもバイリニアにするのもアプリでしっかり管理できる
なんならシェーダでLanczosにしても良い
2018/08/31(金) 23:02:05.30ID:GkpBxwA9
せっかく諦めたのに
2018/08/31(金) 23:19:59.47ID:kx4Z958G
>>622
なるほど〜バッファをリサイズしないと必ずドライバ依存のスケーリングになってしまうってことね。
その辺りをもうちょい考えてどう対処するか検討してみるよ。ありがとう。
>>623
まだまだ諦めんぜえ〜ww
625デフォルトの名無しさん
垢版 |
2018/08/31(金) 23:25:09.45ID:N52+Kto5
野菜の日
626デフォルトの名無しさん
垢版 |
2018/09/04(火) 23:00:53.53ID:g1EQF691
CreateFile()で取得したハンドルをGetMailslotInfo()に渡していいものでしょうか?
CreateFile()の第1引数には、別プロセスでCreateMailslot()したときの第1引数と同じ
です。
2018/09/05(水) 08:35:25.55ID:w5sEnOXo
流石にmsdn見ろとしか
2018/10/03(水) 18:23:25.15ID:BIMPuBeq
リストビューでマウスドラッグで範囲選択をしているとき、
その選択範囲の矩形座標を取得する仕組みは無いのでしょうか。
範囲選択開始時のLVN_MARQUEEBEGINしか見つからないのですが。
2018/10/05(金) 23:00:23.19ID:OkuzM4NB
メインウィンドウのメッセージループからマウス系イベント拾ってくるのが楽で良い
630デフォルトの名無しさん
垢版 |
2018/10/18(木) 16:38:48.09ID:rfYW9BA4
AVIStreamGetFrameOpenというAPIで「MPEG-4 Visual (XviD)」で
圧縮されたaviファイルを開きたいのですが可能でしょうか?
また上記が無理なら無圧縮以外の何かでエンコードされたものを
開きたいのですが何だったら可能なのかも教えてもらえないでしょうか?
AVIStreamGetFrameOpenは、2番目の引数にAVIGETFRAMEF_BESTDISPLAYFMTを指定すれば
完全な無圧縮以外でYUY2だけはいけました。
631630
垢版 |
2018/10/18(木) 17:40:26.75ID:rfYW9BA4
調べていたらコーデックというのはAVIStreamGetFrameOpenで使用されたような古い形式と
メディアプレイヤーで使用されてるような新しい形式があるようですね…
つまりこの古いAPIだとそれように提供されているコーデックを探してインストールしないといけないという事になるでしょうか?
新しい形式を利用するプログラムを作った方がいいような気がしてきました。
632630
垢版 |
2018/10/18(木) 18:23:13.79ID:rfYW9BA4
確かにVideo for Windows用のコーデックを探してきてインストールすれば動くようになりました。
解決はしたのですが他のPCでもその都度これをインストールしないといけないってのがどうも…
2018/10/18(木) 18:34:46.06ID:LsEafRqd
そりゃコーデックのインストールは必須だよ
自前実装するとかなら別だけど
2018/10/18(木) 18:57:16.36ID:rfYW9BA4
>>633
ただ新しいタイプの方(DirectShow)の方はメディアプレイヤーとかも入ってるので
デフォルトでも結構動きそうなのでそこがいいなと。
初回のプログラム起動時にコーデック用dllだけシステムフォルダに突っ込んでもいいのかな…
635デフォルトの名無しさん
垢版 |
2018/10/19(金) 12:08:49.41ID:jQ8EJjtV
>>632
ffmpeg
2018/10/19(金) 17:30:46.21ID:HIw2KJmH
ところでMacとかだと64bit化で32bit打ち切りの方向みたいだけど、Winはまだまだ32bitもサポートしてくれるよね?
2018/10/19(金) 19:13:40.82ID:HIw2KJmH
今のって64bit環境でエミュレーションしてるんだっけ?だから基本的にはずっと維持されるのかな?
2018/10/20(土) 11:06:47.52ID:6LBMAo3K
WOW64だけ終了させるのは考えにくいね。
32bit過去資産を切り捨てるメリットが当面無い。


32bitって、一般的なアプリだけなら切る方向に動くのもあり得る話だけど、
工業系で周辺ハードウェアを制御するのに32bitドライバとか組み込んでて
不思議じゃないので簡単に切れるレベルじゃないかと。
ARM系なんか採用してたらムリじゃね。
128bitOSが出てきたときにようやく切るようになるんじゃないかな。

Macはそんな環境で動いているケースはほとんどないから問題ない気がする。
2018/10/20(土) 11:46:35.45ID:9jkSTDWo
>>638
>128bitOS
128ビットアーキテクチャーとか 128ビットOS とかは、ここ30年くらいは現れないのではないでしょうか…
2018/10/20(土) 11:57:36.98ID:6LBMAo3K
8/16bit全盛時代、64bitを現実的に捉えてた人は居なかったしなあ。
128bitなんて遠い先だと今は思ってても、どうなるか分からんもんよ。
641デフォルトの名無しさん
垢版 |
2018/10/20(土) 12:18:25.97ID:u8BRF3D8
WOW64←32bit用のフォルダ
SYSTEM32←64bit用のフォルダ

では128bit化したときはどうなる?

WOW64←32bit用のフォルダ
WOW128←64bit用のフォルダ
SYSTEM32←128bit用のフォルダ

こうか?
2018/10/20(土) 12:22:46.95ID:QqxqMvRx
WOW128←32bit用のフォルダ
WOW64←64bit用のフォルダ
SYSTEM32←128bit用のフォルダ

こうなる可能性も悪夢
643デフォルトの名無しさん
垢版 |
2018/10/20(土) 13:36:52.57ID:fOofNO0j
>>640
8/16bit全盛時代は32bitデスクトップコンピューターが
スーパーパソコンと言われることもあったなあ

32bit機なんて夢だった、64bit機なんて遠い未来に
実現するのかなあという感覚
2018/10/20(土) 19:16:09.86ID:ZcZ7Cx83
>>638
そういうところがOSだけ最新なの使っているものなのか?
古いアプリケーションをずっと使っているようなところだとOSも昔のままな気がするけど

>>641
その時にはSYSTEM32って名称はやめていると思う
んで、64bit以前のアプリケーション互換云々は単純に仮想マシン環境下で動作させればいい
仮想マシン上でも十分な性能を得られるだろうし
2018/10/20(土) 19:42:10.64ID:LsRLW+LD
128bitは多分こないんじゃないかなw
32bitとか64bitってメモリマッピングの領域の問題なんで
64bitなら4GByte×4GByteまでマッピング出来てしまうので
超絶高速SSDとかできてONメモリのように管理できるように
なっても64bit超えないような
2018/10/20(土) 20:09:53.22ID:zBQrNBwm
ドリームキャストは128bitって連呼してたなぁ
2018/10/20(土) 20:18:05.59ID:wecQHzx8
既にWindowsフォルダ配下はカオスだろ
M$よくこんなん管理できんなーと思ってたらやっぱり管理できてなかったみたいだな
2018/10/20(土) 21:00:21.96ID:A+7VUlnR
アプリケーション的には
16bits → 64KB 死ぬほど不便
32bits → 4GB 快適
64bits → 16EB 贅沢できる
2018/10/21(日) 02:36:06.52ID:fpcnU4T3
32bitアプリ使ってる人多いだろうから動かなくなったら苦情がめちゃくちゃ来そう。
2018/10/21(日) 03:23:03.53ID:C+Apg5Hi
>>643
でもその頃、汎用機は32bit機械だったよ?
アドレッシングは24bitだったけど。

>>645
AS400は128bitと言ってもいいのでは。
むしろIoTとか言ってコンピュータ側のリーチが伸びてるから
単一レベル記憶で世界を管理しようとしたら、既にある技術で言えば
IPv6は128bitだし、既に128bitの世界はきてる気がするよ。
651デフォルトの名無しさん
垢版 |
2018/10/21(日) 05:03:20.85ID:5lMyjKAV
既存プロセスのウィンドウhwndに対するファイルのドラッグ&ドロップをマウスエミュレートを使わず実現するにはどうしたらよいですか?
過渡的な視覚効果であるドラッグは必要ないので、実質ドロップだけできればいいとは思うのですが。
2018/10/21(日) 08:15:24.58ID:S2kctYlU
>>649
そもそもVisual Studioが32bitだから32bit打ち切ったら開発できなくなるし w
653デフォルトの名無しさん
垢版 |
2018/10/21(日) 14:33:56.37ID:jYu3kmgI
>>650
個人が買えるPCの話だよ、その頃はPCで
32Bitアドレッシング24Bitなんて夢だった
2018/10/21(日) 16:15:03.17ID:/+3u54Rp
>>653
XL2でも100万だったけど?
2018/10/21(日) 18:55:34.10ID:PdeVN0B9
> アプリケーション的には
> 16bits → 64KB 死ぬほど不便
> 32bits → 4GB 快適
> 64bits → 16EB 贅沢できる

8bitは ?
2018/10/21(日) 18:59:32.77ID:gNVlu9Yw
>>655
>8bitは ?
ほとんどの 8 ビットCPU のアドレス空間はすでに 16 ビットだったからなあ…
2018/10/21(日) 19:06:52.55ID:9MgCOCRf
マウントの取り合いになってきたゾ〜
2018/10/21(日) 20:51:33.47ID:3rYBWp0g
>>651
アプリケーション毎にドラッグをどう処理しているか不明だからマウスエミュが確実だと思うけど
2018/10/21(日) 21:19:33.66ID:MYahSoZu
>>651
ttps://docs.microsoft.com/en-us/windows/desktop/shell/wm-dropfiles
2018/10/21(日) 21:43:12.45ID:CMVET5pn
>>655
アドレスが8bitの汎用CPUなんてないんじゃない?
4004でさえアドレスは12bitだそうだ
661651
垢版 |
2018/10/22(月) 01:10:30.37ID:zMz+R4iM
>>659
WM_DROPFILEはすでに試して失敗を確認済みです。
ドラッグ&ドロップの具体例をあげるとVisual Studio 2017 にファイルをドロップして開く処理をやりたいのだけど、
GlobalAlloc()、GlobalLock()、GlobalUnlock() などで作ったhDropをPostMessage(WM_DROPFILE)しているのだけど、まったく変化なし。
メモ帳notepad.exeの場合はPostMessage(WM_DROPFILE)で開けたのですが、VS2017と何が違うのやら。
2018/10/22(月) 02:10:39.32ID:T6zy7H5q
WM_DROPFILEの他に、OLE Drag&Dropもあるでよ
663デフォルトの名無しさん
垢版 |
2018/10/22(月) 12:32:01.71ID:uugU0jx6
PIC のアドレスって何bitだっけ
68xx の memory mapped register とかは 8bit か
そもそもどうでもいい
2018/10/22(月) 14:14:29.65ID:2rAhHCnw
>>648がネタだったらどうでもいいのだが
16bitのWindows3.1でも 1Mを越えるメモリーは使えたし、
32bitのWindowsのアプリケーションのメモリー空間は32bitではないし
64bitのWindowsのアプリケーションのメモリー空間は64bitではない
665デフォルトの名無しさん
垢版 |
2018/10/22(月) 15:48:26.25ID:H1W4+XYR
アセンブラで書いてるのかω
2018/10/22(月) 18:19:05.88ID:x0pcGzlw
8bit→16bit 前世代の256倍
16bit→32bit 前世代の65536倍
32bit→64bit 前世代の4294967296倍
64bit→128bit 前世代の18446744073709551616倍
で各時代のジャンプしてる倍数が全然リニアじゃない
128bitは俺らが生きてる間に実現しない
2018/10/22(月) 18:27:51.91ID:x0pcGzlw
つまりは
8bit倍→16bit倍→32bit倍→64bit倍 とくるから
だんだん間隔が長くなって正常
64bit(前世代の32bit倍)ですら途方もなくて持て余す(実際48bit)のに
64bit倍なんてのは途方もないものはどうしようもない
永遠に到達しないと思っても問題ないくらいに天文学的数値
668デフォルトの名無しさん
垢版 |
2018/10/22(月) 18:38:09.95ID:N4Dlk9u9
そうでもない
進化は指数関数的に変化するから
2018/10/22(月) 18:44:02.73ID:VafFZz5P
CPU取り扱いビット数は、なにもメモリー空間だけの問題じゃないと思うが。
なんにしても、ないもの語るのは不毛な話だわ。
2018/10/22(月) 19:04:08.99ID:+9ubm+fa
64bit増毛
2018/10/22(月) 19:06:40.33ID:x0pcGzlw
CPUのビット数と言ったらやっぱりメモリ空間だろ
俺らに関係する互換性の意味でもさ

>>668
bit数が一つ増えると2倍になるが、そのbit数も2倍で増やしていくから
指数関数の指数関数でとんでもない速度で増加する
一方でムーアの法則はただの指数関数だから
割り算すると指数関数が残る
というのが>>666-667の説明
2018/10/22(月) 22:15:29.36ID:iXt7ySqh
さすがに64bitアドレスを使い切ることは無いべ?
下手すると64bit個の原子は目で見えるサイズじゃないか?

2^64=1.8446744e+19
アボガドロ数=6.0221409e+23/1mol

砂粒くらいはありそうだよな?
2018/10/22(月) 22:22:39.79ID:haEJCmq/
みんながそう思ったら、IPv6は128bitにしなかっただろうね :-p
2018/10/22(月) 23:05:44.67ID:CgLRMpn3
過去からbit数が上がる際にはメモリー空間に限定した話ではなくて
「パフォーマンスが上がる」というまずは大ざっぱな喧伝がなされてた
メモリー空間はもちろん広がるが、そんな限定的な事じゃない様々な性能アップ要素で
話がされたもので、今になってメモリー空間だけに絞った話にしかならないのは
その話している人の経験や視野が狭すぎるのが原因ではなかろうか
2018/10/22(月) 23:08:02.77ID:1Kkbm3du
>>664
アプリケーションの話をしてんだから
8086 死ぬほど不便 あってるじゃん

32bitのWindowsのアプリケーションのメモリー空間は32bitじゃん?
36bit使える?32bitアプリが。
2018/10/23(火) 01:54:45.89ID:WBybiFHu
>>674
80286とi386だと、クロックが同じだと80286の方が速いこともあったよ?
2018/10/23(火) 02:55:48.42ID:sn2WQhnj
アーキテクチャや最適化とかあらゆる要素を全く無視して
一部だけ切り取って主題の否定に終始しておけば勝つから頑張れ
678664
垢版 |
2018/10/23(火) 10:09:02.12ID:GIVzaW28
>>675
Windows3.1は8086では動かない
多くの32bit Windowsアプリケーションのメモリー空間は 2G (31bits)
2018/10/23(火) 11:47:28.84ID:hJha4BQY
何でCPUのbit数の話がメモリのサイズ限定になるってそりゃ当たり前ここはプログラム板だから
ポインタのサイズがいくらになるかが互換性の面で最大限問題なんだよ
互換性の面でな
2018/10/23(火) 11:49:19.92ID:hJha4BQY
しかもここはWin32APIのスレで
128bitのWinAPIはいつ出るかって話だから
ポインタのサイズ=メモリ空間のサイズの
話になっていくのは当たり前
681デフォルトの名無しさん
垢版 |
2018/10/23(火) 12:48:48.94ID:joSIbJ7d
>>675
128bitマシンがあっても
FDDだったら死ぬほど不便だな
2018/10/23(火) 15:26:03.23ID:WBybiFHu
>>681
オンラインストレージもすべてアドレッシングされてるような美来を考えると、
そんなに不便でもないような気も少し。
2018/10/23(火) 15:28:44.02ID:sn2WQhnj
>>679-680
> 何でCPUのbit数の話がメモリのサイズ限定になるってそりゃ当たり前ここはプログラム板だから

プログラムの話でCPUの基本であるアセンブラ・命令セット・レジストリやアーキテクチャなどをすっぱり抜く意味はなんですか。


> 128bitのWinAPIはいつ出るかって話だから

>>636-640
「Win32APIのサポートはいつまでか」〜
から、
「128bit CPU・OSが出たら」〜

の話であって、128bitのWinAPIはいつ出るかって話ではありません。
しかし、「128bit CPU・OSが出たら」に対してメモリマップの問題だと言い出したのは>>645です。
この主張に対して、メモリ限定の話になっているのがおかしいというのが本反論です。

あくまでも「128bit CPU・OSが出たら」が基本の話で、あなたの言う「128bitのWinAPI」は
話の本筋ではありませんし、そもそも話が出ていません。

アドレッシングの話題は話題でやればいいですが、これを論拠に「だから次はない」
なんてのはナンセンスというだけの話です。
2018/10/23(火) 16:08:56.16ID:hJha4BQY
レジスタ長やら命令セットの話なら既にAVX512とかがあるでしょ
ただこれとWin32APIは関係ないでしょ?
x64が続く限りWin32APIのサポートがずっとあるのは明白だし
(あえて命令セットを変える意味がないでしょ・・・何の意味が?)
もし変えるとしたら128bit化の時だろうけど
まず生きてる間には来ないよねって話でしょ
2018/10/23(火) 16:18:21.83ID:hJha4BQY
ちなみに128bit化に伴って32bitプロセスがサポートされなくなる可能性は有る
何故なら128bitは100年後か1000年後かあるいは永遠に来ないか
そのぐらいの未来になったら32bitプロセスはすっかりレガシーになってて
サポートする意味が無いかもしれん、わからんがな
ただそんな未来は生きてる間に来そうにない、という事で
Win32APIのサポートが無くなることはないだろうという事を述べておる
686デフォルトの名無しさん
垢版 |
2018/10/23(火) 17:00:05.35ID:yFsvvFWj
>生きてる間には来ない

来たらどうするか(どうなるか)って話をしてるんだろ

空気読めないアスペか?
2018/10/23(火) 17:40:29.64ID:GIVzaW28
I/Oがすべてマッピングされている世界はたぶんたのしい
2018/10/23(火) 17:47:11.62ID:POYrFqPG
PCIとかはメモリ空間にマッピングされているよね
2018/10/23(火) 17:55:28.41ID:hJha4BQY
計算したら来ないし
遠い未来すぎて今と状況が違いすぎるからなんとも

結局は32bitをサポートするかは技術的というより時間的要因とうか周りからの要求で決まるわけで
例えばもし10年後に128bitになるなら32bitをサポートするようにCPUを作るだろうし
100年後だったらもはやレガシーすぎてサポートしないかもだし
(その場合はソフトエミュレーションかな)
結局は問題ないだろうということ
俺らが困らないようにしてくれるさ
IntelがItaniumを作って広げようとしても、AMDがx86作ってそっちが選ばれたしな
互換が無くなって一番困るのは俺らよりマイクロソフトだから何とかしてくれるのだわ
2018/10/23(火) 17:58:27.40ID:hJha4BQY
ただ、Windowsが無くなればWin32APIも無くなるが。。。
2018/10/23(火) 18:15:44.57ID:d491RiZs
> レジスタ長やら命令セットの話なら既にAVX512とかがあるでしょ
AVXのときにAVX512なんて絶対来ないとか言ってたか?
次がどうなるとお前が決める事ではない

> ただこれとWin32APIは関係ないでしょ?
関係ないからこそWin32APIだけの話題で次があるないを確定づける論拠にするのに意味がない
2018/10/23(火) 19:35:50.85ID:bNdv7B9n
ポインタのサイズが互換性において何の問題が?
2018/10/23(火) 20:21:56.29ID:tecJ1BiK
32/64だとポインタをDWORDに放り込んで処理してるのとかあるからな
2018/10/23(火) 23:44:40.09ID:volyHHZE
window handleとかはx64だと64bit幅だけど、wow64でもそのまま扱えるように32bit内の値しか設定されないとかあるね。
695687
垢版 |
2018/10/24(水) 06:38:30.05ID:UmzQGEnh
>>682が書いているように
I/Oの中身がすべてアドレスでとれるようなマッピングのこと
他のPCもまるごとアドレシングされているような世界
696デフォルトの名無しさん
垢版 |
2018/10/24(水) 11:37:09.95ID:XOgiiIOy
>>692-693
rubyは困りそうω
697デフォルトの名無しさん
垢版 |
2018/10/24(水) 13:36:44.56ID:42dinMX8
>>696
perl もだよ。
perlでライブラリWin32APIで構造体をマッピングする場合、
構造体のメンバー変数のアラインメントを自力で解決しなければならず、
32bit版と64bit版でオフセットを適切に切り替えるコードが必要。
2018/10/25(木) 00:37:44.65ID:yGYVJ0zR
http://wisdom.sakura.ne.jp/system/
699デフォルトの名無しさん
垢版 |
2018/10/25(木) 11:37:51.73ID:5Cy/pQlU
えらい古いな
っていうか 赤坂玲音 って糞筆者の筆頭じゃねーか
QZ って 赤坂玲音 だったのか?
700デフォルトの名無しさん
垢版 |
2018/10/27(土) 13:09:18.62ID:NcyVMn+k
今や当たり前のようになった入力補完候補の動的羅列を従来のコンボボックスのドロップダウンリストでやってみた。
作成済みコンボボックスは途中でオーナードローにスタイル変更できないので、毎回リストを再構築することにした。
ドロップダウンリストの再構築に時間がかかっているように見えたので、
試しにリストをSetRedraw(FALSE)で描画せずに再構築したところ、まったく時間がかからなくなった。
リストアイテムに追加していく処理のたびに描画で重くなっていただけだった。


結論:
ドロップダウンリストの動的変更はSetRedraw(FALSE)で見かけ上は高速に実行可能。
リスト再構築が終わったらSetRedraw(TRUE)で再び描画できるようにして RedrawWindow() などを呼べばOK。
701デフォルトの名無しさん
垢版 |
2018/10/27(土) 13:29:57.46ID:R2aCZi1a
おめ子
2018/10/28(日) 03:50:14.50ID:2tbaDxKB
>> 700 SetRedraw スレチ
703700
垢版 |
2018/10/28(日) 04:05:03.07ID:y4CTIPMK
>>702
別にMFCの話したかったわけじゃないんだが。
リスト破棄とアイテム追加のたびに描画処理が行われるとどうしてもアイテム更新完了が遅くなる。
オーナードローできない汎用のリストコントロールのアイテム更新はSetRedraw()つまりSendMessage(WM_SETREDRAW)で描画抑止すれば高速実行できる、というのが主旨。
2018/10/28(日) 15:00:14.25ID:MGLPoTB/
>>702
Win32API的には SetWindowRedraw (WM_SETREDRAW) でOK
705デフォルトの名無しさん
垢版 |
2018/10/28(日) 22:57:05.89ID:G0OjLYsX
>>691
違うって
AVXだろうがAVX512だろうがAVX1024だろうが
ただの拡張命令だから何がこようがどうでもよいけど
ポインタのサイズだけは命令セット全体に影響して互換性の面で問題が出るから
プログラマとしてそこが真っ先に気になるのは当たり前だろうよ

そんでポインタのサイズが64bitで足りなくなる事は生きてる間には無さそうということと
今現在64bit版のWin32APIのサポートがあることを合わせて考えて
Win32APIのサポートの心配するより自分の寿命の心配したほうが良いってことに
ただし、将来Windowsが無くなったら知らんが
2018/10/28(日) 23:18:58.18ID:VktvRbK2
AVXとか持ち出した人自身がどうでもいいとか言い出したよ
2018/10/28(日) 23:34:05.53ID:X0Sl4ey0
すみません
アナルに今電極を差してみているのですが
どのくらいの電圧が人間の限界なのかがよく分かっていません
参考までにお教え願えませんでしょうか?
2018/10/28(日) 23:46:07.82ID:sr3fygGC
>>707
今差しているんだろ?
限界になるまで電圧上げてみればいい
2018/10/29(月) 03:39:30.92ID:syL/ZpQ2
電流か
710デフォルトの名無しさん
垢版 |
2018/10/29(月) 11:33:26.98ID:VxCr7qKV
>Win32APIのサポートの心配するより自分の寿命の心配したほうが良い

どっちも心配
2018/10/29(月) 19:36:35.79ID:MQrExvvX
>>699
>赤坂玲音 って糞筆者の筆頭
kwsk
2018/10/29(月) 23:04:33.26ID:/SfeOL5O
何かプリキュアとか好きそうなイメージ
713デフォルトの名無しさん
垢版 |
2018/10/30(火) 14:43:24.71ID:p4LrBCE7
橋本 和明
山本 洋介山
こいつらよりまし
2018/10/31(水) 00:30:08.49ID:bv97uCMI
東京ミュウミュウ舐めんなよ
2018/10/31(水) 00:34:00.99ID:pqSFU9GW
サンプルコードにキモさを織り込める偉人だぞ
716デフォルトの名無しさん
垢版 |
2018/10/31(水) 01:20:17.24ID:OyhA4eFa
>>713
1冊じゃないのが許せないよな

赤坂玲音って会社員経験がないんだっけ
確かにそんな感じはする
717651,661
垢版 |
2018/11/04(日) 09:16:05.57ID:muyEcRRg
SendInput() にINPUT配列を渡してドラッグ&ドロップをエミュレートすることで対応できました。配列の要素は以下2つ。
ドラッグ開始位置で MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN
ドロップ位置で MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP

mouse_event()と違ってSendInput()はユーザーのマウス操作の影響を受けづらいはずですが、
マウス移動とマウスボタン操作を別のINPUT要素に入れるとユーザーのマウス操作が入り込んでしまうので、要注意でした。
2018/11/04(日) 10:52:13.06ID:4sZQO68Y
>>716
>赤坂玲音って会社員経験がないんだっけ
書籍を執筆するのに会社員経験は必要ですか?
2018/11/04(日) 11:18:54.43ID:kSTg14OV
いるわけねーだろ。バカかよw
って馬鹿だからいつまでもくだらない話題ひっぱってんだろうな
2018/11/04(日) 13:01:34.19ID:cd0AZv6K
GetMessageの戻り値をちゃんと調べる良識人やぞ
2018/11/04(日) 13:46:25.24ID:izn20/on
GetMessage…
懐かしの踏み絵ですね
722デフォルトの名無しさん
垢版 |
2018/11/04(日) 14:04:57.01ID:5RY1Lh2I
エラーを調べるには関数を呼びます
723デフォルトの名無しさん
垢版 |
2018/11/04(日) 15:45:01.93ID:I4L5mfdv
せめてヒントを書いとけよ

ヒント:最後のエラーを取得する関数です
とか
2018/11/04(日) 16:16:20.98ID:K9FptJr2
>>722で通じるからw
725デフォルトの名無しさん
垢版 |
2018/11/04(日) 18:11:10.68ID:rLQVzKFu
MSが保守投げだしたくなる気持ちは判る
2018/11/04(日) 18:32:10.13ID:eJWttrBP
>>724
w
727デフォルトの名無しさん
垢版 |
2018/11/04(日) 19:09:01.33ID:I4L5mfdv
>>724
www

まいりました
2018/11/04(日) 19:41:55.05ID:4sZQO68Y
>>720
>GetMessageの戻り値をちゃんと調べる

当然なのでは?

while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

メッセージループを抜けるかどうかは、GetMessage() を調べでもしないかぎり分かりようがないのでは?
2018/11/04(日) 19:56:38.13ID:K9FptJr2
それバグコードだからw
2018/11/04(日) 20:20:15.94ID:izn20/on
踏み絵がまだ機能しててワロタ
2018/11/04(日) 20:46:13.51ID:cd0AZv6K
>>728
ちゃんと調べてないぞ
2018/11/04(日) 20:50:35.10ID:h5bAAdgj
>>729
釣られんなよ…
733デフォルトの名無しさん
垢版 |
2018/11/04(日) 22:51:52.16ID:I4L5mfdv
-1・・・
734デフォルトの名無しさん
垢版 |
2018/11/05(月) 13:33:52.85ID:o5QGnfIr
while(GetMessage(&msg , NULL , 0 , 0) < 0) {

boolじゃないからな
2018/11/05(月) 14:30:24.29ID:frT8bC/+
そんなコードばっか書いてるからいつまでも使えないんだよw
2018/11/05(月) 17:36:34.14ID:cQ3f3cLB
>>734
エラーの時だけループするのが正しいんですね
勉強になります
2018/11/05(月) 19:35:45.35ID:7LsLMyD5
>>734
ネタなのかマジなのか判断できねー w
2018/11/05(月) 19:41:49.06ID:l7k9Isvb
while(BOOL bRet = GetMessage(&msg , NULL , 0 , 0)) {
if (bRet < 0) {
MessageBox(NULL, TEXT("異常終了してやんのw ぷぷぷ"), NULL, 0);
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
2018/11/05(月) 20:01:12.60ID:44ykk/Ua
無効ポインタを渡してしまった以外にエラーを起こす事あるか?
2018/11/05(月) 20:02:50.18ID:6+yTtRut
Windows互換を目指すReactOS、
いよいよ明日の夜、リリースです。よろしくね。
2018/11/05(月) 20:09:34.41ID:l7k9Isvb
C/C++では、メッセージループの異常終了に加えてC++の例外と、構造化例外による異常終了があるよ。
2018/11/05(月) 21:19:04.73ID:E6RwMSoz
>>740
期待しています!
2018/11/06(火) 05:22:40.71ID:ARgE5xEK
>>739
そんなもんMSの中の人にしかわからんだろ
2018/11/06(火) 05:47:46.71ID:sIfl11dh
ざっと見て2つ目の引数で-返るな
745デフォルトの名無しさん
垢版 |
2018/11/06(火) 12:09:16.46ID:vyXuaWzf
while(TRUE){
try{
while(BOOL bRet = GetMessage(&msg , NULL , 0 , 0)) {
if (bRet < 0) {
MessageBox(NULL, TEXT("異常終了してやんのw ぷぷぷ"), NULL, 0);
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}catch(std::exception &e){
MessageBox(NULL, TEXT("例外補足してやんぜw ぷぷぷ"), NULL, 0);
}
}
2018/11/06(火) 12:43:49.56ID:sIfl11dh
また頭悪いコードw
2018/11/06(火) 12:56:40.18ID:N7p2WNxF
メッセージループを終了しても永久ループから脱出できない罠
748デフォルトの名無しさん
垢版 |
2018/11/06(火) 13:14:59.49ID:qdniag2/
goto最強
2018/11/06(火) 15:07:52.54ID:W/feU5S7
std::exception はスレチだし、WndProcから送出してよい例外はWindowsの構造化例外のみだし、送出された構造化例外をWinMainで処理してはいけない
2018/11/06(火) 17:40:05.44ID:2Imqjq5w
ボケなのマジなのかわからんコードを貼ってるやつはなんなの
2018/11/06(火) 17:48:14.42ID:NYh1+GRl
真面目に書いてるつもりなんだよ
2018/11/06(火) 17:54:13.46ID:koMt5OtT
異常終了の際にバックアップを作ってくれるのは、親切なんだろうか。
2018/11/06(火) 19:49:18.62ID:W/feU5S7
半分 中の人
The Old New Thing
When will GetMessage return -1?
https://blogs.msdn.microsoft.com/oldnewthing/20130322-00/?p=4873/
754デフォルトの名無しさん
垢版 |
2018/11/18(日) 16:47:49.39ID:0OJqhmsU
リストボックスのリストアイテムに、游ゴシックの文字列をイタリック(斜体)で右詰めでDrawText()描画すると見切れてしまうのはどうしたらいいですか?
2018/11/18(日) 17:05:18.33ID:5HKlow/5
owner draw
2018/11/18(日) 17:16:58.01ID:0OJqhmsU
>>755
CDDS_SUBITEM | CDDS_ITEMPREPAINTで owner drawした結果としてのDrawText()なのですが…
757754
垢版 |
2018/11/18(日) 17:24:06.74ID:0OJqhmsU
描画直前に文字列末尾に半角スペースを追加して見切れないようにする対症療法がまず思いつきます。
DrawText()で斜体フォントを右詰め表示するときに最右文字(日本語や欧州語だと末尾文字)が切れてしまうことがあるのは、既知の現象でしょうか?
2018/11/18(日) 17:43:56.83ID:iB0TPElw
斜体は必要サイズうまく取得できないからな。別口で取得してそれ使うか、取得値より多少大きくすればいいでしょ
2018/11/18(日) 17:47:51.97ID:TJFJUOYd
斜体のずれの寸法は、tmOverhangだったかな。
2018/11/18(日) 18:13:41.25ID:0OJqhmsU
>>759
悲報。GetTextMetrics() で得られたtmOverhangはzeroでした。tmItalicはnonzeroが戻ってきているのに。
そんなわけで模範的な解決方法が特にないようなので、文字列末尾に半角スペース追加で対応しようと思います。
2018/11/18(日) 20:31:51.66ID:iB0TPElw
原因が斜体の必要サイズ取得なんだから、模範的な方がよければそれぐぐれば一発で出るよw
2018/11/18(日) 23:09:34.60ID:5HKlow/5
取れないって回答になると思うけどね
新APIとか隠し情報がないと無理かと
763デフォルトの名無しさん
垢版 |
2018/11/19(月) 05:02:23.92ID:vKX2BinB
リストボックスに限らず、スタティックコントロールも右詰め・游ゴシック・斜体で末尾文字が見切れてしまう。
他のフォントだと見切れが発生しないフォントも多い。描画APIじゃなくてフォント固有の問題に思える。
あと、「見切れる」という北斗の拳っぽい表現、あまり好きじゃないが適切な表現って他にある?


見切れる(ミキレル)とは - コトバンク
https://kotobank.jp/word/%E8%A6%8B%E5%88%87%E3%82%8C%E3%82%8B-673764
 1 テレビ放送や演劇で、本来見えてはいけないものが見えてしまう。「裏方スタッフが―・れる」
 2 写真や映像で、フレームに人物などの全体が収まらず、一部が切れている。「集合写真で端の人が―・れる」
2018/11/19(月) 05:48:21.80ID:q6cfzVbs
https://www.google.co.jp/search?q=斜体+サイズ+取得+windows+api&oq=斜体%E3%80%80サイズ%E3%80%80取得+windows+api
765デフォルトの名無しさん
垢版 |
2018/11/19(月) 13:07:49.59ID:poEgfl9j
>>760
半角スペースで大丈夫かな?

俺はフォントサイズ×0.5くらいを幅に足したわ
2018/11/19(月) 13:10:21.39ID:poEgfl9j
>>763
「見切れる」で十分通じると思うけどな
767デフォルトの名無しさん
垢版 |
2018/11/19(月) 14:52:36.11ID:3MOWhUti
フォント側データ書き換えないと無理
2018/11/19(月) 15:36:43.44ID:yv29DTgI
えーそれふぉんと?
2018/11/19(月) 15:49:16.38ID:Vi0v2wfh
>>768
770デフォルトの名無しさん
垢版 |
2018/11/19(月) 16:01:26.62ID:vKX2BinB
「Palatino Linotype」フォントでHDCにテキスト描画すると星印「★(U+2605)」などの記号が文字化け扱いされて四角になるんだけどどうしたらいい?
Windows 10 October 2018 Update から起きるようになったような気がする。
2018/11/19(月) 16:55:11.57ID:DcxQo4X/
MBCとかUNICODEとか?
2018/11/19(月) 17:13:53.40ID:RxTglLMs
そもそもそのフォントのそのコードが定義されてるのか?
昔は定義されてたけど今はされてないとかじゃないの
773770
垢版 |
2018/11/20(火) 07:34:02.29ID:FIdfDS6L
以下に再現プログラムのC++ソースをアップロードしました。
https://ideone.com/wqZpPL

各フォントで「★test☆テスト」という文字列を表示するWinMainエントリのプログラムです。
「テスト」を表示できるのに「★」や「☆」を表示できないフォントがたくさんあるように思います。
評価やご助言のほどお願いいたします。 m(_ _)m
2018/11/20(火) 07:45:01.17ID:XdMfHhgY
定義されてるかどうか確かめたのか?
単にその文字が定義されてないだけだろ
2018/11/20(火) 07:49:45.64ID:FIdfDS6L
>>774
文字が定義されているか確かめるにはどうしたらよいですか?
2018/11/20(火) 09:26:40.38ID:c9mHPamo
英字フォントでは★などはないんじゃないの
windowsに最初から入ってる文字コード表アプリで見てみ
Palatino Linotypeには登録されてない
777デフォルトの名無しさん
垢版 |
2018/11/20(火) 09:36:43.33ID:FIdfDS6L
>>776
なるほど。回答ありがとうございます。
記号である★や☆を表示できないのにカタカナや漢字を表示できるのですが、
ご紹介いただいた文字コード表との整合性についてはどうなっているのでしょうか。
2018/11/20(火) 09:52:35.34ID:XdMfHhgY
代替フォントが使われるけど、デフォルトはかなり適当だからきちんと^やりたいなら一文字ずつチェックして描画
2018/11/20(火) 10:07:40.17ID:FIdfDS6L
>>778
プログラム内でチェックするAPIはなんでしょうか?
検索のヒントになるキーワードが分からずこんなこと聞いてすみません。
2018/11/20(火) 10:11:32.06ID:XdMfHhgY
GetGlyphIndex
781デフォルトの名無しさん
垢版 |
2018/11/20(火) 10:20:12.32ID:FIdfDS6L
>>780
回答ありがとうございます。
GetGlyphIndexは、Win32APIには該当の関数が見当たらないようです。
何かサードパーティーのライブラリでしょうか?
782デフォルトの名無しさん
垢版 |
2018/11/20(火) 10:24:32.94ID:jmuJusIM
freetype
2018/11/20(火) 10:26:38.56ID:FIdfDS6L
失礼しました。以下関数ですね。
GetGlyphIndices()
https://msdn.microsoft.com/ja-jp/library/cc428689.aspx
2018/11/25(日) 16:05:13.88ID:1GlBO1DK
64-bitの環境でCreateRemoteThreadでAPIフックを試みた。フックは成功したのだが、フックの解除がかなり難しい。

LoadLibraryの戻り値を使う→だめ。
Module32First/NextのhModuleの値を使う→だめ。
DLLの内部からFreeLibraryを呼ぶ→だめ。
2018/11/25(日) 16:09:53.05ID:1GlBO1DK
自分のプロセスの内部ではフックの解除は成功した。
しかし、他のプロセスになるとフックの解除が難しい。
2018/11/25(日) 16:48:41.81ID:ItHAeG65
どう駄目なのかを書かないのは単なる独り言なのでやめてくれませんかね。
クラッシュしてるんなら以下。
https://blogs.msdn.microsoft.com/oldnewthing/20131105-00/?p=2733
2018/11/26(月) 21:54:54.87ID:owLNC83c
https://github.com/katahiromz/ApiHook
1. CMakeでビルド。
2. Targetプログラムを起動して、出てきたPIDをコピーする。
3. 「Test!」ボタンを押すと、「Unhooked」のメッセージが表示される。
4. Injectorプログラムを起動して、さっきコピーしたPIDを貼り付けて、
「Do Inject!」ボタンをクリックする。「Injected!」のメッセージが表示される。
5. Targetプログラムの「Test!」ボタンを押すと、「Hooked」の
 メッセージが表示される。注入成功。
6. Injectorプログラムの「Do Un-Inject!」ボタンをクリックする。
 「Un-Injected!」のメッセージが表示される。
7. Targetプログラムの「Test!」ボタンを押すと、「Hooked」の
 メッセージが表示される。これを「Unhooked」にしたい。
2018/11/26(月) 22:11:22.95ID:vT7JWcSC
今回はTargetというプログラムを対象に注入しているが、任意のプログラムに対して同じように(MessageBoxA APIをフックして)動作しないといけない。
2018/11/26(月) 22:14:42.78ID:vT7JWcSC
InjectorプログラムからFreeLibraryの呼び出しに成功すれば、フックが元に戻るはずだが、FreeLibraryが失敗しているように見える。

よろしくお願いいたします。
2018/11/26(月) 23:16:21.86ID:owLNC83c
https://msmania.wordpress.com/2015/04/26/reflective-dll-injection/amp/

シェルコード書きくけこ?
2018/11/26(月) 23:27:16.40ID:owLNC83c
reflectiveはブルースウィリス判定される恐れあり。他に方法はないのか。
2018/11/27(火) 10:52:25.21ID:krSRsG9l
なぜインジェクションするためにloadlibraryを皆したがるのか直接メモリにコード書き込めばfreelibraryする必要がないじゃないか。
2018/11/27(火) 11:06:20.88ID:cSPHWeDO
dllの方が圧倒的に楽だからな
2018/11/27(火) 12:27:02.62ID:mpDKeVau
終了待ちのイベントオブジェクトと、DLLスレッドと、FreeLibraryAndExitThreadで解決した。

ありがとうございました。
2018/12/05(水) 11:51:42.13ID:BbScykOp
LVM_SUBITEMHITTESTの戻り値の説明に書かれている
「Returns the index of the item or subitem tested」
の意味がよくわからないんですが、
戻り値とLVHITTESTINFOのiItemが異なる値になる可能性はあるのでしょうか。
2018/12/05(水) 13:13:14.97ID:6bKah/Y1
リストビューのサブ項目は、詳細表示のときの最初の列以外の列のテキストで使われる。
2018/12/05(水) 13:31:27.57ID:BbScykOp
>>796
それ自体は理解しているのですが、
戻り値がアイテムの番号ではなくサブ項目の番号になることがあるのでしょうか。
2018/12/05(水) 15:00:20.42ID:Gi6GtpHL
iSubItemメンバに値が入る
戻り値およびiItemは今まで通り
2018/12/05(水) 15:22:34.72ID:XTelINnE
カエル
2018/12/08(土) 08:51:15.20ID:lNQUDg2h
ReactOSはどうなった?
2018/12/08(土) 10:18:34.02ID:uWIwAxnc
Reactなし
2018/12/10(月) 14:41:18.82ID:ILcXe1rk
Windows互換を目指すReactOS Part12
https://medaka.5ch.net/test/read.cgi/os/1519906380/

こっちのスレで活動してるよ。暇なら見てね。るんぱっぱ。
2018/12/27(木) 19:29:05.60ID:3mpeBFkx
wineに頼らないと動かない産廃
2018/12/27(木) 19:45:16.53ID:xEoyai35
>>803
微軟おつ。
2018/12/27(木) 20:15:23.13ID:8bFD2Xmo
ほんと産廃だよな
なんでwindowsに頼らないとwin32アプリは動かないんだ
2018/12/27(木) 20:32:52.08ID:xEoyai35
ジャバザハット
2018/12/27(木) 21:04:33.87ID:e6FVPdkR
らんらんるー
808デフォルトの名無しさん
垢版 |
2019/01/01(火) 23:36:15.57ID:ML8jFpoW
念のため聞くけどさ、金毘羅とコンパイラどっちが御利益あるかわかってるよね?
2019/01/01(火) 23:48:35.00ID:okGaeCMA
念のために聞くけどさ、ネタとしてもここに書くつもりじゃなかったよね?
810デフォルトの名無しさん
垢版 |
2019/01/02(水) 12:04:23.94ID:fpC2xUq7
キンピラごぼうの方が御利益ある
811デフォルトの名無しさん
垢版 |
2019/01/06(日) 11:52:07.26ID:RBr8Qah/
ktkr
【Win】 WindowsUpdateで入れなくても良いKBリスト。2018年12月12日まで分
http://blog.livedoor.jp/nichepcgamer/archives/1039785182.html
812デフォルトの名無しさん
垢版 |
2019/01/08(火) 21:00:32.75ID:V1Q/vFq5
Windows(上で動作しているアプリ)が鳴らしている音の「生データへのポインタ」
を取得するWin32APIを教えてください。
813デフォルトの名無しさん
垢版 |
2019/01/08(火) 21:03:39.61ID:V1Q/vFq5
812
音データが入っているバッファへのポインタです。
2019/01/08(火) 21:13:43.96ID:BVjQZPEf
ない
2019/01/08(火) 21:14:52.46ID:jpAVboCM
dllインジェクションするしかない
2019/01/08(火) 21:20:13.54ID:V1Q/vFq5
>>814
ありがとうございます。APIとしては用意されていないのですね。
>>815
DLLインジェクション。注射ですか。初めて聞く言葉なので少し調べてみます。
分からなくなったらまた来ます。

目的は、現在発音中の音声のスペクトラムアナライザーを作ることです。
FFT自体はできており、自アプリで鳴らしているWAVデータを処理する
ことまではできていますが、上記のことを実現したいので。
2019/01/08(火) 21:25:43.44ID:V1Q/vFq5
winmm.dllをフックすれば実現できそうです。
早速やってみます。
ありがとうございました!
818デフォルトの名無しさん
垢版 |
2019/01/09(水) 11:55:22.51ID:B8oaeAR+
>>812
生データかどうかは知らんがミキサーの出力は取れるはず
2019/01/12(土) 14:22:16.93ID:nOTIPVuG
OS:Windows10
VC++ 2015
なんですが、下記ページの質問者と同じ問題にあたりました。
(LANが抜けているとNICに設定した固定IPアドレスではなく0.0.0.0が取得されてしまう)

https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/9dd046d6-d0ad-4875-b9be-9ac6c7106454/ip124501248912524124731239821462244712604127861?forum=vcgeneralja

このページの解決方法(WSAIoctl()関数にSIO_GET_INTERFACE_LIST)では、
ループバックアドレスしか取得できませんでした。

この他、GetIpAddrTable()も試しましたが同様でした。

どうすればLANケーブルが抜けていてもNICに設定した固定IPアドレスを取得できるでしょうか?
2019/01/12(土) 15:05:56.36ID:hHDH7/la
へ〜そうなんや〜。この辺サンプル作ってたから試してみよ。
と思ったらPCの裏側弄るのめんどくせw

結果、おっしゃるとおりGetAdapterInfo()でもダメだった。
けど、これってAPIレベルでは取れないんじゃないかな?
プロパティで表示されてる固定IPって、単にレジストリに登録されてるだけでは・・・

GetAdapterInfo()で取れるAdapterNameを取得し、
レジストリの
HLM\SYSTEM\ControlSet001(ここは環境による?)\Services\Tcpip\Parameters\Interfaces\{上記で取れた名前}\IPAddress
から取ればいいんじゃないかなあ。

固定IP設定してないと上記キーは存在せず、代わりにDhcpIpAddressが存在する。



なお、もうPCしまい込んだんで、LANケーブル抜いてレジストリ確認してないw
間違ってたらスマソ
2019/01/12(土) 15:18:01.40ID:uLAlds2c
>>820
ControlSet001の所はCurrentControlSetの方が良い
822819
垢版 |
2019/01/12(土) 15:43:42.17ID:nOTIPVuG
>>820
わざわざ検証してくださってありがとうございます!

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19361&;forum=6

このページを見ても、LANケーブルが抜かれている状態でIPアドレスが参照できないのは然りのようですね。
レジストリにアクセスした経験が無く、何か恐いので、
0.0.0.0が取得できたらLANケーブルが抜けているか、とりあえずロクな状態じゃないということで、
エラーを出す等の対処としたい(今回のアプリではこれで十分)と思います。

ありがとうございました!
2019/01/12(土) 15:58:58.78ID:hHDH7/la
>>821
そうそう、それそれ

>>822
ケーブルが抜けてる時点では通信のしようがないので、
IPを取得できてしまうとむしろエラーの判定方法が面倒くさくなると思う。
だから「取得できない=エラー」でいいでしょう。

なお、レジストリからの値の取得は別に何も恐くは・・・書き込みは気を遣うけど。
824819
垢版 |
2019/01/12(土) 20:54:40.03ID:cv9IM3HX
>>823
RegGetValue()で固定IPアドレスを簡単に取得できました!
レジストリアクセス、恐るるに足らず・・・!w

>だから「取得できない=エラー」でいいでしょう。

IPアドレスを取得できても、LANケーブルが接続されていないと、
その後のbind()で失敗するので、そこでエラーを出すことができます。
さらに、一定時間間隔でbind()を試みておけば、
ケーブルが接続された段階で正常な受信処理に進むことができます。


これで理想的な対応が完了しました!
ありがとうございました!。゚( ゚´∀`゚)゚。
825デフォルトの名無しさん
垢版 |
2019/01/13(日) 10:39:34.53ID:ATVrIMyH
>>819
WirelessLANで固定IPのときな何が取れるのかな
826819
垢版 |
2019/01/14(月) 02:01:50.42ID:DNWDWbUc
>>825
確認してみました。

・Wi-Fiオフ ⇒ 0.0.0.0
・Wi-Fiオン(AP未接続) ⇒ 0.0.0.0
・Wi-Fiオン(AP接続) ⇒ 設定した固定IPアドレス

APへの接続有無が、有線時のLANケーブル接続有無に対応する結果となりました。
もちろん、上記ケースのいずれの場合においてもレジストリからは設定された固定IPアドレスが取得できました。
827デフォルトの名無しさん
垢版 |
2019/01/14(月) 10:58:45.95ID:ZKhJHRcZ
LANケーブルが刺さってて反対側の端もHUBに刺さってて
そのHUBがどこにもつながってないときはどうかな
2019/01/14(月) 14:56:20.16ID:F7cyM080
どこと何の通信をするのか分からないけど、インターネットが可能かどうかという判定なら
固定IPとか関係ないしな
829819
垢版 |
2019/01/17(木) 02:34:20.94ID:5Sf+2HTN
>>827
確認してみました。
どこにも繋がっていないハブ(通電はしている)に繋げば
GetAdaptersInfo()で固定IPアドレスが取得できました。
要はコネクタのところのLEDがチカチカしてる状態ならOKのようです。
830デフォルトの名無しさん
垢版 |
2019/01/17(木) 13:32:04.21ID:uUdEyVn6
ガキの使いやあらへんで
2019/01/18(金) 09:31:37.52ID:/JSvmQQz
Win32に限らない話なんだけど、「floating window」と
「top-level window」って、何らかの意味の違いってあるのだろうか?
それとも同じ?
2019/01/18(金) 09:57:11.80ID:oa0CPX6o
トップレベルは全部の上に対して上
フローティングは親に対して浮いてる
2019/01/18(金) 12:23:14.96ID:/JSvmQQz
>>832
ちなみに、TOP-MOST と TOP-LEVEL を勘違いしての発言?
834デフォルトの名無しさん
垢版 |
2019/01/18(金) 12:26:49.75ID:/+PP0p1B
WS_OVERLAPPEDWINDOW
WS_OVERLAPPED
WS_POPUPWINDOW
WS_POPUP
WS_CHILDWINDOW
WS_CHILD
2019/01/18(金) 17:24:32.14ID:1LXUKdBd
>>831
「floating window」って非MDIウインドウであってtop-levelである必要はないんじゃね?
「top-level window」ならば必然的に「floating window」だろうけど
2019/01/18(金) 17:55:26.61ID:/JSvmQQz
>>835
top-level の定義は、親が存在しない (CreateWindow 実行時に NULL が指定され
ている) Window だ、って英語で書かれているよ。
MDI とか関係ないと思うんだけど。
2019/01/18(金) 18:42:47.29ID:1LXUKdBd
>>835
訂正
「非MDIウインドウであって」→「非MDI子ウインドウであって」ね

>>836
だから『「top-level window」ならば必然的に「floating window」』ってのはOK?
親の存在の有無にかかわらず非MDI子ウインドウならそれは「floating window」でしょ

要するに「floating window」のうち親を持たないのが「top-level window」
2019/01/18(金) 18:53:17.40ID:FdTpqa5z
フローティングってのはブラウザなんかでタブをドラッグすると独立できる奴ってイメージがあるけどなあ。
2019/01/18(金) 19:49:53.56ID:xKp6dC4w
>>838
同じ用語が別の文脈で異なるものを指すことはよくある。
このスレのタイトルを見直してごらん。
2019/01/18(金) 20:27:04.31ID:bji/uTEx
>>838
小さなものってイメージもあるな
841デフォルトの名無しさん
垢版 |
2019/01/19(土) 01:02:57.44ID:2Tiw7zAQ
それはない
842デフォルトの名無しさん
垢版 |
2019/01/19(土) 01:55:25.45ID:Lyax1h3i
どうも、Win32APIそのものの質問ではないですが質問させてください。
Win32API等のサンプルがおいてあったサイトがどうしても見つからないのです。
以前は難なく見つかったので、消失したっぽいのですが。
覚えているのは以下です

- デバイスコンテキストを利用したスプリッターのサンプルがあった(これは自分ライブラリにしたので確実)
- OLEを利用したファイルのD&Dのサンプルがあった(これも自作アプリで利用したので確実)
- 2016年3月までは存在していた(日記を見て確認)
- 確かZIP(かLZHの圧縮ファイル)がアップロードされてたような。(通常のソースとその解説ページもあった)

URLさえ判れば Internet Archive 等で何とかなるかと思うのですが・・・
2019/01/19(土) 02:02:18.49ID:eJ/T1GXt
OLE D&Dの資料は俺様も欲しいっす。
844デフォルトの名無しさん
垢版 |
2019/01/19(土) 02:55:55.30ID:2Tiw7zAQ
みおぼえあるわ
2019/01/19(土) 03:12:53.98ID:n7alGXg6
見たら思い出しそうではあるが
846デフォルトの名無しさん
垢版 |
2019/01/19(土) 06:43:28.33ID:wHcHNf+g
これとか?

OLE DragDrop (サンプル)
http://hp.vector.co.jp/authors/VA016117/oledragdrop5.html
847842
垢版 |
2019/01/19(土) 09:43:29.26ID:Lyax1h3i
>>846
そのページは昨日に到達してましたが、残念ながら違います。

確かOLEのD&DのページはC++で実装されてて、
IDropSource、IDataObject、IDropTargetの共通部分である
QueryInterface、AddRef、Release関数をIUnknownImplementという名前の
クラスを作ってそれをprivate継承してから、内部ではその親クラスの関数を呼び出す事をしていました。
IUnknownImplementという名前は自分のセンスではないのでそのページからそのままコピペしたのだと思います。

以前はOLE D&Dで検索すると難なく到達出来てたので消失したと思われます。
誰かブックマークしてて今では消えてるページのURLとかでそれらしきものがないでしょうか?
2019/01/19(土) 10:35:14.95ID:S211ls6J
>>847
ブラウザの履歴を検索したら出てこない?
849デフォルトの名無しさん
垢版 |
2019/01/19(土) 11:05:14.74ID:E3pxDp1L
NGチェックで貼れないサイトがあるな
atata sakura ne jp . /com/chap5.html
atata sakura ne jp . /com/chap7.html
https://docs.microsoft.com/en-us/windows/desktop/api/oleidl/nn-oleidl-idroptarget
https://gist.github.com/yohhoy/3053385
850デフォルトの名無しさん
垢版 |
2019/01/19(土) 11:10:10.62ID:E3pxDp1L
http://eternalwindows.jp/ole/oledrag/oledrag00.html
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi
2019/01/19(土) 11:17:26.03ID:ie4pzIPS
これ?
http://eternalwindows.jp/ole/oledrag/oledrag00.html
2019/01/19(土) 18:27:05.61ID:a3eM+T1s
>>841
そう?
メインウィンドウよりでかいフローティングウィンドウなんて見たこと無いんだよな
853デフォルトの名無しさん
垢版 |
2019/01/20(日) 11:49:19.90ID:h0iPP/nj
朝鮮人メンタル
854842
垢版 |
2019/01/20(日) 15:59:03.36ID:CaWvoORx
>>848
最後にアクセスしたのも大分前なので。その間にPCも変わってたりしますし。

>>849 >>850 >>851
残念ながらそれらでもないですね。

今日も探していたのですが見つからずもう諦めてきた感じです。
その際に副産物で見つけた、既にサイトが無くなってたページと
そのInternet Archivesを張っておきます。
かなりこの手の情報が消失してる事が判りますね。

http://www.g-ishihara.com/
https://web.archive.org/web/20180807082916/http://www.g-ishihara.com/

http://win32lab.com/tips/
https://web.archive.org/web/20160810040639/http://win32lab.com/tips/

http://web.kyoto-inet.or.jp/people/ysskondo/
https://web.archive.org/web/20160810173814/http://web.kyoto-inet.or.jp/people/ysskondo/

http://ruffnex.oc.to:80/kenji/index.php
https://web.archive.org/web/20160324222113/http://ruffnex.oc.to:80/kenji/index.php

http://www7.plala.or.jp/keny01/
https://web.archive.org/web/20170123104718/http://www7.plala.or.jp/keny01/
2019/01/21(月) 07:38:46.81ID:5BrFA625
> top-level の定義は、親が存在しない (CreateWindow 実行時に NULL が指定され
> ている) Window だ、って英語で書かれているよ。

最大の突っ込みどころは根拠が「英語で書かれている」のみ
2019/01/21(月) 10:35:20.85ID:UEk4ntQa
>>855
The MSDN entry About Windows offers the following definition: A window that
has no parent, or whose parent is the desktop window, is called a top-level window.

https://stackoverflow.com/questions/18244379/what-exactly-is-a-top-level-window-in-win32-programming


A top-level window is a window that is not a child window, or has no parent window
(which is the same as having the "desktop window" as a parent).


The MSDN entry About Windows offers the following definition:
A window that has no parent, or whose parent is the desktop window, is called
a top-level window.
2019/01/21(月) 16:33:26.70ID:5BrFA625
>>856
引用元にCreateWindowは出てこないわけだが
2019/01/22(火) 12:47:25.26ID:/p6ZcYuK
no parentでそれぐらいわかるだろ
859デフォルトの名無しさん
垢版 |
2019/01/22(火) 13:04:37.64ID:/wbMKv3O
PPAP
2019/01/23(水) 01:51:43.39ID:fK1BYch6
msdnのAbout WindowsのParent or Owner Window Handle
"A window that has a parent is called a child window. "
childでparentがnullの場合はtoplevel

"A window can own, or be owned by, another window."
ここからmsdnのWindow FeaturesのOwned Windowsに移動して
CreateWindowのhwndParentの話になる

要は、child(WS_CHILD)はparentを持ちownerを持たない
WS_POPUPやWS_OVERLAPPEDはparentを持たずownerをもつ
CreateWindowのhwndParentはparentかowner(両義性がある)
2019/01/24(木) 18:27:16.16ID:/05KE7l4
>>860
Parent, Owner は、「排他的」にしか持つことは出来ないことは正しいけど、

>WS_POPUPやWS_OVERLAPPEDはparentを持たずownerをもつ

はちょっと違うと思うよ。一応、NULL を指定することが出来るから。
2019/01/27(日) 08:58:04.40ID:Z8Sr7X5M
という訳で
CreateWindow hwndParent != 0, WS_OVERLAPPED or WS_POPUPだと
"A window that has no parent, or whose parent is the desktop window, is called
a top-level window. "
のとおり、top-levelになる
863770
垢版 |
2019/01/27(日) 18:15:04.65ID:qHVP6gPn
私は“「Palatino Linotype」フォントでHDCにテキスト描画すると星印「★(U+2605)」などの記号が文字化け扱いされて四角になる”件について質問した者です。
みなさん、何の役にも立たない知ったかぶりの回答ありがとうございました。2019年1月22日にリリースされたKB4476976で無事、修正されたようです。


https://support.microsoft.com/ja-jp/help/4476976/windows-10-update-kb4476976
テキスト コントロールで、一部の記号が四角形で表示される問題を修正します。
2019/01/27(日) 22:30:57.69ID:I4R/P36r
>>863
Palatino Linotypeに★(U+2605)は存在しない(>>776)し、
その場合の代替フォントの扱いがてきとうだった(>>778)のが、
KB4476976で修正されただけだろ。
865770
垢版 |
2019/01/27(日) 22:57:15.58ID:qHVP6gPn
>>864
知らないんなら憶測で書き込まないでくれるか?
そういう憶測の書き込み、質問者が混乱するだけで意味がないんだよ。
スレのレベルが下がるからこのスレには書き込みを控えてくれ。

https://en.wikipedia.org/wiki/Star_%28glyph%29
2019/01/27(日) 23:00:10.55ID:biLrTPET
>>863
>みなさん、何の役にも立たない知ったかぶりの回答ありがとうございました

こいつは、荒らしだろ。
無視しろ。相手をするな!
2019/01/27(日) 23:07:56.82ID:Z8Sr7X5M
> スレのレベルが下がる www
2019/01/27(日) 23:13:55.20ID:15mfyiko
>>865
そのリンク先に意味無いだろ。
荒らしたいだけか。
869770
垢版 |
2019/01/27(日) 23:21:03.57ID:qHVP6gPn
>>868
リンク先は星印についての英語版Wikipedia。見ればわかるとおり、星印★は欧州で普通に使われている。
日本語のひらがなや漢字を代替フォントで痴漢できているのに、欧州でもよく使う星印★が代替フォントで痴漢できない不可解な状態がようやく解消された。
870770
垢版 |
2019/01/27(日) 23:26:16.39ID:qHVP6gPn
このスレは「です・ます」調で質問を書き込むと、的外れでレベルの低い回答が返ってきやすい。
この手の回答者には、丁寧語を使うのは不慣れな初心者と値踏みして質問者へのいたずらで無駄な作業をやらせてやろうという悪意がある。
2019/01/27(日) 23:53:38.21ID:eqe5Jbhe
文字コード表で「Palatino Linotype」のU+2605が存在しないことに何も間違いなかったでしょ?
そのことに気付かず指摘されて初めて分かった人が何言ってるの?
2019/01/28(月) 00:07:05.80ID:+M9WQ/f8
元から代替フォントの問題だと指摘されていたし、何も間違っていないな
質問された時にはまだ修正されていなかったのだし
873770
垢版 |
2019/01/28(月) 00:10:03.58ID:FJ2d04ee
>>871
欧州フォントにはU+2605だけじゃなくて漢字やひらがななども存在しないよ。
欧州フォントにない記号が表示されないことを仕様であるかのように知ったかぶりで断定するデタラメな回答はアウト。
874770
垢版 |
2019/01/28(月) 00:40:47.00ID:FJ2d04ee
ちなみにPalatino Linotype のような欧州フォントは雄雌記号の♂(U+2642)と♀(U+2640)が少しイラストっぽく表示されるので、お試しあれ。
2019/01/28(月) 00:40:53.70ID:J+udoZHz
>>873
さすがにアホ
876770
垢版 |
2019/01/28(月) 00:55:58.16ID:FJ2d04ee
Win32APIの不具合なのか新しい仕様なのか判断できない人は質問に回答したらダメでしょ。
2019/01/28(月) 01:15:13.62ID:j971hPKN
> 欧州フォントにはU+2605だけじゃなくて漢字やひらがななども存在しないよ。
欧州フォントでも漢字表示できるの?
はえーすっごーい
2019/01/28(月) 01:59:38.49ID:yOibm1qy
言い方は忘れたけど、確か、Forwarding や Redirecting みたいな機能が
あって、グリフが存在して無い文字は、他のフォントのグリフを使用する
ことができる機能が Win32 には備わっていたと記憶している。
2019/01/28(月) 02:08:56.48ID:jKaiFfBH
https://superuser.com/questions/396160/how-to-change-configure-font-fallback

・Font Fallback
・Font Linking
2019/01/28(月) 06:24:36.00ID:yQjFtWDc
>>874
それも代替フォント選択がいい加減だから=バグだよw
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 を受信した瞬間それが解放されて
しまうからだと想像しています。

この問題に対処する一般的(標準的?)な方法はあるのでしょうか?
よろしくお願いいたします。
2019/01/31(木) 18:37:28.68ID:J/ff8w5v
マウスを直接やって独自実装やるんじゃなくてwindowsのドラッグアンドドロップとして機能実装するのが一般的
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;

こんな感じで、ちょっと試してみようと思います。  
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 しかないのかなと思いました。
2019/01/31(木) 19:40:12.79ID:VYsToa/P
WM_KILLFOCUSとWM_CLOSEよりWM_CAPTURECHANGEDの1箇所で処理したいって事なのかな
887デフォルトの名無しさん
垢版 |
2019/01/31(木) 19:50:33.62ID:zuTwaubK
>>886
状況に応じて対応する手もあると思うのですが、予測していなかった状況がまだあるかもしれないので
一カ所で処理したほうが無難なのかな、と考えています。
888L
垢版 |
2019/02/01(金) 01:20:53.20ID:WOdIBupf
>>887
基本、>>883 見たいなやり方でいいんじゃないかな。
後、個人的には、Spy++みたいなものでメッセージの来る順序を
観察してそれに応じて「アルゴリズム(←大げさかも)」を考えてる。

Windows の場合、OSのバージョンアップでメッセージの飛んでくる
仕様が変わったりするかも知れず、もしかしたら動かなくなることも
あるかも知れないが、「行儀よくプログラムすれば」それを防げる
という単純なものではないと思ってる。なぜなら、何が行儀の
良いプログラムがそもそもドキュメント化されていないし。

という訳で、現存する全てのバージョンのWindows OSで実験して
動くかどうか確認して動かなければ修正し、新しいバージョンのOS
が出てきたら、また実験する事で対応するしかないらしい。

2ch/5ch の書き込みによれば、「どんな場合にも対応できる
プログラムなんて作れるわけがない」んだそうだで、それを
聞いて深く考えさせられたことがある。
2019/02/01(金) 01:29:58.10ID:WOdIBupf
>>888
[続き]
MSDNなどで、自分のやりたいことを探すと、近いものが見つかって、
「これこれこうすれば良い」と書かれていることがあるので、実際に
やってみたとしても、後々、さまざまな不具合と独自機能拡張の難しさに
悩まされ続けることがある。そのたびにネット中を探し回ったり、
色々実験して対処することになる。
でもよくよく考えてみると、そもそも自分で0から実装すると意外と簡単な
ことであったりして、全部自分の制御下にある分、調べる必要もなく、
むしろ時間の節約になったりする事が多い。
890デフォルトの名無しさん
垢版 |
2019/02/01(金) 01:44:48.22ID:n6bcSVs+
>>889
FindFirstFileのワイルドカードはあまり当てにするな、まで読んだ。
2019/02/01(金) 04:13:32.40ID:2psUfhCM
MFTを直接読みなされ
2019/02/01(金) 17:50:15.61ID:IACxdzc7
>881
ScrollBarのつまみをLButtonDownしたままマウスポインタをつまみから外してドラッグするとつまみの位置は移動します。ということはCaptureしています。
スレッドのCaptureはひとつしかないので、事前のCaptureは解放され、WM_CAPTURECHANGEDが通知されます。
あと、WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。
2019/02/01(金) 18:19:28.05ID:WOdIBupf
>>892
>WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。

ああ、そういえば、そうだった気がする。メッセージの
Caputure Changed という名前からしても。
2019/02/01(金) 18:35:25.24ID:kGNgvrty
キャプチャ中のAlt+Tabなどは、WM_CANCELMODEというものもある
2019/02/01(金) 18:50:09.36ID:WOdIBupf
>>894
あー、そういえば海外のサイトを調べていたら、
「ALT+TAB でも Capture がどうのこうのなるから、
 正しくは、これこれこんな風にプログラムしなければならない」
みたいに書いてあった。ALT+TABを使わなければ生じないことなので、
後回しだな、と思ったのでちゃんと理解してない。
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
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;
  /**/
2019/02/07(木) 12:26:45.88ID:kmlzmIx7
PCをXPからwin8.1 64bitに移行したんだけど、自作のソフトがいくつか動かない。デバックしてみたら、GetDC(0)→GetPixelやっている所でフリーズしているみたい。
win8でGetDC(0)は駄目だったりする?
2019/02/07(木) 12:30:15.66ID:trMMLIP2
GetDCはウィンドウに対するDCを返す関数だから、ウィンドウに関係ないなら、CreateCompatibleDC(NULL)/DeleteDCに変えてみい。
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/
901デフォルトの名無しさん
垢版 |
2019/02/07(木) 15:13:59.88ID:GcZVZFC2
>>898
一回コピーを作らないとだめ
2019/02/07(木) 19:21:59.34ID:/5LF0iCd
>>898
Aero環境ではGetPixelがとてつもなく遅くなるというやつじゃないの?
903デフォルトの名無しさん
垢版 |
2019/02/08(金) 16:13:48.70ID:OJ5k9nKR
Win8.1はAeroじゃなくてMetroだから違うのでは。
2019/02/09(土) 07:34:09.50ID:VoK7d33Y
そういったシステム上の差異をブラックボックス化して吸収するのがSDKなりライブラリの役割だと思うんだけどな。
なんでこうも面倒なのかね。
2019/02/10(日) 00:56:19.51ID:B31yNMWe
AeroやMetroはライブラリだから
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関連で取得変更できてなかったり、手を入れなければならないソフトがいっぱいありそう
909sage
垢版 |
2019/02/10(日) 15:07:59.97ID:FHx5KBLx
元々SetPixelを呼び出すごとにDrvBitBltしていたので遅かった
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音量を変更する方法が不明です。
どなたか教えてください
2019/02/12(火) 15:38:56.47ID:7Y/Mu4tq
Vista以降ミキサーの仕様が変更されててwave音量の項目自体なくなってないか?
2019/02/19(火) 22:54:47.64ID:mfSiw2KQ
LLHOOKか何かで、ユーザーの入力は全部遮断しつつ、
SendInputやkeybd_eventやらのプログラム由来の入力は通すようにしたいのですが、
何か方法ないでしょうか?
今はHIDデバイスを無効にする事を考えてますが、あんまやりたくないです。
914デフォルトの名無しさん
垢版 |
2019/02/20(水) 15:53:14.16ID:rNooXWfe
盾ニか~などの合字が出力されるWin32APIってどんなのがあるの?
2019/02/20(水) 18:03:14.01ID:P1QqcLfo
>>914
無いんじゃないの。
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
2019/02/20(水) 18:13:20.05ID:AQq/x/Lj
LOGFONT.lfWidth、CreateFontIndirect、SelectObject、TextOut/DrawTextを使えば半角漢字を描画できる。
2019/02/20(水) 18:15:28.65ID:AQq/x/Lj
元号については、ここに詳しく書いてあるよ。
https://docs.microsoft.com/en-us/windows/desktop/intl/era-handling-for-the-japanese-calendar
2019/02/20(水) 18:22:20.03ID:AQq/x/Lj
元号のAPIを追加するより、レジストリで定義する方が得策だね。事前テストも出来るし。
2019/02/20(水) 18:45:40.96ID:EHsoFK41
>>917
盾ニか~ってただの文字コードに対応した文字
ただ、いわゆる機種依存文字なので、その文字コードを想定していない
クソアプリが死ぬって話がその記事に書いてることなのでは?

レジストリに記録されてるのは元号と西暦の対応で、
その情報を使いたいアプリが好きに使えばいいだけの話

APIでそこ多分見てる(見てないかも知れんが)のは
GetCalendarInfoやEnumCalendarInfo系あたりじゃなかろうか
今回の件でこいつらが問題を起こすとは書いてないと思うが
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
森鷗外𠮟る
2019/02/22(金) 21:29:35.92ID:kVQHKw0G
WaitForSingleObjectやWaitForMultipleObjectsってspurious wakeupがあるから使うなと言ってる先輩がいるけど
本当ですか?
2019/02/22(金) 21:44:37.57ID:x13qkxfg
spurious wakeupがある→正しい
使うな→よりより代替手段がなければ使うしかない

代替手段があるかどうかは環境によるから先輩ちゃんに聞く
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が起こりうるらしい

先輩の情報源を知りたい
2019/02/22(金) 22:23:38.90ID:qRCx8JnJ
同期オブジェクトが非シグナル状態でWaitFor系関数から勝手に戻ってくることはないと断言できる
仕掛けるオブジェクトに依ると思う
2019/02/22(金) 22:27:18.85ID:qRCx8JnJ
ただし単に寝ていたスレッドが起きるという現象自体は外部のCPU負荷調節アプリとかでResumeTheradを発行することで簡単に再現できる
2019/02/22(金) 23:11:25.13ID:4O+31NpZ
魔王も勇者が入って来ただけで起きるしな
931デフォルトの名無しさん
垢版 |
2019/02/22(金) 23:26:13.44ID:7tzQnSDu
そもそも何をWaitFor系関数で待つのかってのも大きい。自作Signalオブジェクトなら問題起きないでしょ。
2019/02/23(土) 07:23:17.25ID:9pAAXdf2
>>927
以前、2つのプロセス間で、WaitForSingleObject() を CreateEvent(), SetEvent() 系
の HANDLE で実験してみたけど、バグ的な現象は起きず、至って正常に動作し、
2つのプロセスで、お互いに、SetEvent() したり、WaitForSingleObject() で
相手を待ったりして、ハンドシェイク的な振る舞いが思ったとおりに出来ることが
確認できた。

速度も、SetEvent() した事が相手に届くまで、確か、1(μs)前後だったので、
十分速いと結論付けた。
2019/02/23(土) 08:40:48.30ID:zem2FMDi
C++標準のwait系にはあるからいちいち確認するしなきゃいけないから面倒だよな
しかも、イベントだけ使いたいのにいちいちmutexをよういしなきゃいけないし・・・
934デフォルトの名無しさん
垢版 |
2019/02/23(土) 11:36:21.35ID:+DV3f+Dk
都市伝説かも知れんが
そもそもいつ発生するか判らない発生しないかも判らない現象を
ちょっとテスト書いてみて大丈夫(キリつ
2019/02/23(土) 11:54:16.12ID:apHI25Q1
条件変数ならともかく、Eventなんかはspuriousで起こされても確かめようがないんじゃないのかな。
936デフォルトの名無しさん
垢版 |
2019/02/23(土) 16:03:56.92ID:qOMwbnHQ
同期機能は同期機能としてそのまま利用しつつ、最低限の安全性や整合性については別途確認すべきなのでは。
2019/02/23(土) 18:44:58.70ID:9pAAXdf2
WaitForSingleObject() には、MSDN の仕様書に書かれていないような意味においての
バグ的な spurious wakeup は起きないと思う。

なお、実験する限り問題ないが、絶対ないかどうかは誰にも分からない。
2019/02/23(土) 18:57:16.07ID:Cx5sxFW5
c++標準ライブラリには堂々と書かれてるな
Windowsだとc++標準ライブラリを使う理由がないな
2019/02/23(土) 19:07:25.29ID:9pAAXdf2
同期オブジェクトは重要。
仕様書に何も書いてないのに、もし、spurious wakeup が起きるとしたらバグ。

なお、C++ の STL ライブラリは馬鹿が作ったと思ってる。
昔ながらの C の標準ライブラリは良い出来だが、それと混同しないほうがいい。
940デフォルトの名無しさん
垢版 |
2019/02/23(土) 20:04:03.30ID:qOMwbnHQ
C++のSTLとCライブラリでは機能が似ているところはない気がするけど?
念のため言っとくとiostreamはSTLじゃないよ。
2019/02/23(土) 20:24:45.58ID:7js9m1kN
つーかspurious wakeupなんて存在を許してる時点で作ったそいつらはアホじゃないの
そいつらのリテラシーどうなっとんのか疑うレベル
942デフォルトの名無しさん
垢版 |
2019/02/23(土) 20:32:05.22ID:qOMwbnHQ
汎用性のためにファイルロックを使った排他処理で実装するとそうなってしまうんじゃないの。知らんけど。
2019/02/23(土) 22:14:41.32ID:apHI25Q1
厳密にspurious wakeupを許さない実装は大変でパフォーマンス的にも不利だから。
というか、spurious wakeupを許すとすごく有利だというのが後から発見されたんじゃなかったかな。
2019/02/24(日) 02:55:03.61ID:ZXw7vz2Z
っていうか、win環境ならC++標準ライブラリよりWaitFor〜を使ったほうがいいだろ
std::unique_lockなんで馬鹿みたいに遅いしw
2019/02/24(日) 04:17:10.21ID:N5G83Lpp
>>937
WaitForSingleObject()ってエラー返すことがあるよね?仕様上では。
要はちゃんとエラーハンドリングしろって話だけどさw
2019/02/24(日) 08:23:50.21ID:pcDSz9Pr
>>943
プログラムには優先順位があって、まず、正しく動作する事が一番重要。
その次に来るのが、使いやすさか、または、速度。どちらが優先されるかは
設計思想や哲学による。その次にプログラムのサイズ。

いくら速度が速くても、やるべきことが正しく行われないならプログラムとしては
失格なんだ。
2019/02/24(日) 08:36:16.85ID:fWdsplTz
「sprious wakeupもありえる」というのを「正しい動作」と定義したんだから何の問題もない。
2019/02/24(日) 08:48:33.63ID:pcDSz9Pr
それだと、使う側のプログラムが長くなるだけなので、設計思想に問題を感じる。
ライブラリ設計者の経験不足かもしれない。
速くなるといっても結局、使う側でループの中で判定して条件に合わないなら、
また繰り返し、wait するのなら、ライブラリ側でそういう風にできなかったの
だろうか。
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;
   }
  }
}
2019/02/24(日) 10:03:24.37ID:9KBfjXtA
>>949
深く考えてから書き込みましょう。
ぼくのかんがえたさいきょうの同期実装についてはスレ違いなので、よそでやってください。
951デフォルトの名無しさん
垢版 |
2019/02/24(日) 14:42:49.21ID:YwY0sV++
LoopyWaitでいいよもう
2019/02/24(日) 15:26:11.06ID:BJ3WFlaM
「sprious wakeupもありえる」のはいいが、
どのAPIも使うたびにいちいち関数仕様確認するのは面倒だな

つーか関数の説明には書いてないので仕様とは言えないと思うんだが・・・初見殺し?
2019/02/24(日) 15:39:02.49ID:2tRfk65D
>>952
初めて使うAPIでしかも同期処理なんて複雑なものは仕様を調べて使うのが当然のことだと思うぞ。
2019/02/24(日) 16:04:30.12ID:N5G83Lpp
>>949
   raw_wait(y, z);  // spurious wakeup 有り

   if ( IsCond(y, z) ) {  // 厳密な条件チェック
の間で条件が変わったらどうするの?
2019/02/24(日) 16:07:02.11ID:EMRtI4X3
>>954
え、それはプログラミングの仕方の問題じゃないの?
元々、マルチスレッドプログラムは難しいんだけど、それと今回の
問題は別なのでは。
2019/02/24(日) 16:08:45.84ID:N5G83Lpp
>>955
どうやってプログラムで回避するの?
回避できないんだったら「絶対に起きない」なんて言えないだろ。
こんなレベルで排他処理語られても...
2019/02/24(日) 16:14:47.34ID:pcDSz9Pr
>>956
もともと、排他処理用のAPIは、そういう「変な問題が起きない」ように用意されて
いるんだよ。「Atomic」アクセス、などと言われていて、「途中に」とか
中途半端な状態が起きない作りにしてある。それは割り込み発生を好きにOFFに
できるところのシステム側(OS)でしかできない。
2019/02/24(日) 16:16:16.11ID:pcDSz9Pr
なぜかIDが勝手に変わったが、949=955=957だ。
2019/02/24(日) 16:17:26.62ID:9KBfjXtA
同期オブジェクトの正確性ではなく、ユーザ定義データの保護こそが大切。目的を見失わないように。
2019/02/24(日) 16:18:28.55ID:pcDSz9Pr
ちなみにオイラは、32BITマルチタスクOSを作った経験がある。
2019/02/24(日) 16:24:01.17ID:Krr3p0wT
>>949
シングルスレッド脳だとそういう発想になる
2019/02/24(日) 16:34:48.90ID:9KBfjXtA
たまにかかってくる間違い電話がいやだから電話は無能。そんな感じ。
963デフォルトの名無しさん
垢版 |
2019/02/24(日) 16:36:35.10ID:2fcQjxFq
Atomicを語るならID変わらないようにしないと恥ずかしいな
2019/02/24(日) 16:41:49.67ID:pcDSz9Pr
IDが変わる理由は知らん。多分、5chのシステム上の問題だと思う。
2019/02/24(日) 16:43:05.47ID:pcDSz9Pr
沢山の人で賑わっているように見せるためかな。人寄せと広告料金関連で。
2019/02/24(日) 16:46:55.09ID:9KBfjXtA
コールバック形式のAPIを使うプログラマはその呼び出しタイミングをAPI側に委ねている。
何がいいたいかというと、要するにあきらめろということだ。
2019/02/24(日) 17:53:55.79ID:N5G83Lpp
>>957
それが起きるからどうするという話で、
あんたが糞の役のも立たないコードを出したんじゃん。
つまり>>954はクソだったと認めるということ?
2019/02/24(日) 18:01:12.16ID:pcDSz9Pr
>>697
多分、あのコードで問題ないはずだ。
ちなみに、オイラは現実社会では天才と言われているよ。
969デフォルトの名無しさん
垢版 |
2019/02/24(日) 18:31:20.56ID:9KBfjXtA
車のバンパーは本来、ボディを保護するためにある。
そのバンパーに傷がついたりへこんだりすることを病的に嫌悪している状態。
お大事に。
2019/02/24(日) 18:39:12.54ID:fWdsplTz
もしそのraw_wait()がP命令だとしたらその結果がspuriousのときはV命令で状態を戻さなきゃならんと思うが。
ただどっちにしてもそのIsCond()はライブラリ側では構成しようがないけどな。

あと、やっぱりspurious wakeupって条件変数特有のものじゃなかったかな。
なんかそのへんで話がずれている気がする。
2019/02/24(日) 18:54:16.69ID:EMRtI4X3
>>970
どういう状況を考えてるのか前提が分からないし、だから
「深く考えてない」
という事になってしまうのだけども。少なくとも、Win32のWaitForSingleObject()
では特に問題は起きない。
2019/02/24(日) 18:58:07.16ID:D1Rqo30U
つ MsgWaitForMultipleObjectEx
2019/02/24(日) 19:23:32.11ID:njB6xu8t
>>972
GetMessage相当が入ってるだけで基本WaitForと同じ動作だが何か?
2019/02/24(日) 22:10:09.80ID:SGjUOn7r
>>925
>WaitForSingleObjectやWaitForMultipleObjectsってspurious wakeupがあるから
>使うなと言ってる先輩がいるけど本当ですか?
嘘です。

同期オブジェクトを使いこなせない先輩が自分のバグを解決出来ずにこれを
spurious wakeupのせいにし、
同期オブジェクトをろくに知りもしない >>926-973 みたいなやつが適当なことを
書いているだけです。
2019/02/24(日) 23:25:34.04ID:N5G83Lpp
>>930
勇者がきてないのに目覚めてしまった魔王とか想像してほっこりした
2019/02/25(月) 22:30:45.76ID:M4I6EPLO
>>974
ってことは、Win環境においてはC++標準ライブラリを使う理由が無いってこと?
2019/02/25(月) 23:33:02.61ID:2LN6Bs/0
WaitFor〜はOS制御の根幹って感じはするけど、lstrcpy〜系をAPIにする意味はよく分からん
978デフォルトの名無しさん
垢版 |
2019/02/26(火) 02:22:40.88ID:K9v1e6Ic
昔はCライブラリへのリンクなしでビルドする需要が割とあった。
2019/02/26(火) 12:16:11.37ID:5MxkS3P7
>>976
Windows では、Windows API か、それをクラスにまとめた、MFC を使う。
型も、HDC とか、Windows 独特のもの

C++標準ライブラリは、アルゴリズム以外は、あまり使わないだろ
2019/02/26(火) 12:23:22.51ID:D7AA7sgA
プラットフォーム共通にしたい場合なんかに使うと思うよ。
排他処理みたいな、OSに近いしい部分はOSに近しいAPIの方がいいと思うけどお。
981デフォルトの名無しさん
垢版 |
2019/02/26(火) 16:48:18.20ID:K9v1e6Ic
vector,list,mapなど各種コンテナ、文字列クラスbasic_string、スマートポインタクラスshared_ptr,unique_ptrは使うでしょ。
コードでのdelete, delete[] 呼び出しを減らすためにね。
982デフォルトの名無しさん
垢版 |
2019/02/26(火) 17:32:55.36ID:K9v1e6Ic
スマートポインタクラスshared_ptr,unique_ptrは、デストラクタを細かく指定できるのでHDCやHFONTなどにも使えるよ。
すでにMFCなどにラッパークラスがすでにあるから使わないだろうけど。
2019/02/26(火) 20:07:38.65ID:ZphJ05zo
昔はCRT依存しない実行ファイル作る意味もあったけど、C++が普通になったら
もうそこはこだわらないね。
2019/02/26(火) 20:15:04.12ID:gazg2F9T
>>980
プラットホーム不問にしなきゃいけないような有益なプログラムを書ける人なんてほぼいないだろ

boostライブラリみたいなものなら、プラットホーム固有のものを使っちゃいかないけど、あんなライブラリを書ける人なんて世界でも100人もいないだろ
985デフォルトの名無しさん
垢版 |
2019/02/26(火) 20:22:51.49ID:K9v1e6Ic
WindowsAPI直呼びを避ける動きは、主にゲーム業界からのニーズで発生するんだけどねぇ。
2019/02/26(火) 23:03:56.44ID:D7AA7sgA
>>983
CRTに脆弱性があってから分離が当たり前になった気がするなあ
分離しておかないとパッチがあたらないし
2019/02/26(火) 23:06:10.50ID:D7AA7sgA
>>984
今時のシステムはWindowsなのかLinuxなのか、上の人はコストしか見ないから
どっちでも行けるようにしておかないと下っ端は辛い状況になるよ。
外注に出す金があるならそんなみみっちいことは言われないわけで。
988デフォルトの名無しさん
垢版 |
2019/02/26(火) 23:39:30.91ID:K9v1e6Ic
>>986
ブラウン管ディスプレイのきじゃくせい(なぜか変換できない)なんてどうでもいいだろ。
2019/02/27(水) 01:01:50.92ID:QPgoOUvU
strsafe.h
2019/02/27(水) 03:28:19.50ID:32GlVML2
>>988
もしかして:ぜいじゃくせい
2019/02/27(水) 07:27:37.75ID:5GOwcvUn
>>986
CRTに依存しないってのはstaticでもdynamicでも使わないって意味。昔はあったんだけどね。
2019/02/27(水) 07:35:30.59ID:L5IXP2k2
>>990
お前すげーな、漢検でも持ってるのか?


って言われたいのかなぁw
2019/02/27(水) 09:32:05.81ID:TPOAkFQ/
ネタをネタと
994デフォルトの名無しさん
垢版 |
2019/02/27(水) 09:44:25.02ID:TXzf+Z8H
申し訳ないが、心臓再同期療法の話はスレ違いなのでよそでやってくれ。
2019/02/27(水) 15:18:35.62ID:Gg4oALq7
脆弱性という文字は脆弱性と読んでしまう脆弱性がある

次スレ
http://mevius.5ch.net/test/read.cgi/tech/1551247748/
2019/03/01(金) 13:25:53.11ID:wtAGrKTy
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴ……!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,
      //三/|三|\       ,,,,    ,,、,、,,,
      ∪  ∪
  ,,          ,    ,,,,    ,,、,、,,,       ,,、,、,,,
,,,,,    ∧_∧ うまいモナー,,,,,   、 ,,,,,,   ,,,,,,,,    ,,,,,
 ,,,   ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
  / ̄ ( つ日ヽ   ∧_∧    (    )               /
/    (__))   (´∀` )   (    )    ∧_∧∧_∧ / マターリモナー
 ∧_∧∧_∧ドーゾ (日ノ )  | | |    ( ´∀`) ´∀`)
 ( ´∀`) ´∀`)    ((__)  ,(_(_) (○)⊂   ) つ日⊂ ) モーナー
―(つ⊂  ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
   (⌒)(⌒) (⌒)(⌒)グーグー
2019/03/03(日) 18:40:33.11ID:5EsDLzeQ
SendMessage(WM_CLOSE);
2019/03/03(日) 18:41:27.12ID:5EsDLzeQ
SendMessage(WM_SYSCOMMAND, SC_CLOSE);
2019/03/03(日) 18:42:26.83ID:5EsDLzeQ
PostQuitMessage(5963);
1000デフォルトの名無しさん
垢版 |
2019/03/03(日) 18:44:07.75ID:5EsDLzeQ
TerminateProcess(hProcess, 5963);
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 476日 23時間 21分 7秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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