19/09/15 12:35:24.64 tu3q64lr.net
unix の execlp だと pid は変化しませんが、
Win32API の execlp とか _execlp とかだと processID は変化してしまうようです。
CreateProcess が呼ばれているからだと思いますが、
Win32API の execlp とか _execlp とかで変わったあとの processID を知る方法はありますか?
(起動された側で getpid() で判るのですが、そっちではなくて元の processID を握ってる方からのリンクが切れて困ってます。)
320:デフォルトの名無しさん
19/09/15 18:08:42.80 jdtp5u68.net
>>297
俺はリソーススクリプト直叩き
MSDNに詳しい情報乗ってるし、英語だけど
プログラマなら大体わかるよ、翻訳サイトを使ってもいいしね
そして、ライブラリ化しといて次から簡単に使えるようにしとく
バージョン情報とかも関数やクラスにして簡単に使えるようまとめとけば便利
GUIは.NETがクラス化の良いお手本になるよ
321:デフォルトの名無しさん
19/09/15 19:39:40.56 WzV8SEFI.net
VS使わない縛りなの?
322:デフォルトの名無しさん
19/09/15 19:55:06.55 G+rzyOKL.net
>>314
> Win32API の execlp とか _execlp
そもそもexeclpとかはwin32apiじゃなくて単なるライブラリだよ
とりあえずざっとソース見る限りではpidを返す方法はないみたい(インターフェースもないしね)
自分で実装するしかないと思う
323:デフォルトの名無しさん
19/09/15 23:50:00.36 jdtp5u68.net
>>316
VSは使ってるよ、昔は無料のエディションには
MFCもリソースエディタも付いてなかったからな
趣味でやってるから問題なし
フリーのリソースエディタを入れるか迷ったこともあったけど
直叩きで行けるしまあいいかと
324:デフォルトの名無しさん
19/09/16 00:47:21.27 iDbWACrZ.net
それぐらい普通、何でもないよ
俺なんかメニューバーとかスクロールバーとかツールバーとかリストビューとか
こまごましたUIパーツ、全部DirectXで一からフルスクラッチで書いたし
4K画面だとリストビューとか動作がカクカクになるから使い物にならんよ
フォントの描画が重いみたい
325:デフォルトの名無しさん
19/09/16 00:49:05.96 B+hfHu5+.net
結構前からリソースエディタは無料版VSでも入ってたろ
326:蟻人間
19/09/16 01:47:28.54 cPhlmIua.net
後世のために書いておくが、Visual StudioのリソースコンパイラーはUTF-8の扱いに致命的なバグがあって、最悪の場合、文字化けする。あれはANSIコードページかUTF-16で使うものだ。
327:デフォルトの名無しさん
19/09/16 10:51:40.64 7yboD6Fj.net
不定期
URLリンク(stefansundin.github.io)
328:デフォルトの名無しさん
19/09/16 12:37:37.02 IB1jvVpV.net
>>321
コンパイラーの問題だからエディターは何でもいいんじゃね
って話ではないの?
329:デフォルトの名無しさん
19/09/16 17:55:40.47 +LXKkUCe.net
そもそもリソースファイルにUTF8が使えるなんて知らなかったわ
330:デフォルトの名無しさん
19/09/16 17:57:32.41 Y7LS5TKS.net
いや使えないでしょUTF-8
331:蟻人間
19/09/16 18:32:35.66 cPhlmIua.net
MinGWのwindresというコンパイラーなら、pragmaでコードページ指定すればUTF-8が使える。
Visual Studioのrcは前述の通りUTF-8読み込みにバグがある。
332:デフォルトの名無しさん
19/09/16 18:40:12.76 OCMqZYFH.net
RisohEditorってどうなん
333:蟻人間
19/09/16 18:43:49.21 cPhlmIua.net
RisohEditorはUTF-8とUTF-16のソースが扱える。UTF-16の入力は、独自のプリプロセッサでUTF-8に変換している。
334:蟻人間
19/09/16 18:46:27.85 cPhlmIua.net
VSのRCの文字化けバグについては
URLリンク(developercommunity.visualstudio.com)
こちらで。まだ直っていない。
335:デフォルトの名無しさん
19/09/16 18:52:28.03 OHfOAVfs.net
リソースファイルはBOMつきUTF-16LEでいけるでしょ。
336:デフォルトの名無しさん
19/09/16 19:26:31.76 dTSbudTn.net
重箱。UTF-16LE/BEと呼ぶ場合はBOMを付けてはならないらしい。
337:デフォルトの名無しさん
19/09/16 19:56:19.89 OCMqZYFH.net
UTF-8 も BOM 付けちゃいけないんだろ
338:デフォルトの名無しさん
19/09/16 20:21:16.53 dTSbudTn.net
UTF-8なら禁止はされていない。
339:デフォルトの名無しさん
19/09/17 00:30:59.73 J+q8D2Xe.net
>>331
理解が間違っている。
「BOMつきUTF-16LE」と「UTF-16LE」は別のものであり、どちらも存在する。
「UTF-16LE」にBOMがついていないからこそ「BOMつきUTF-16LE」という表現が成り立つ。
小倉トーストとトーストが別のものであることと同じであり、トーストに小倉餡がついていないからこそ小倉トーストが成り立つ。
340:デフォルトの名無しさん
19/09/17 02:12:33.57 GJd5TLi7.net
粒餡と餡子が別のものであることと同じであり、
餡子に粒が入ってないからこそ粒餡が成り立つ
ってことですね
341:デフォルトの名無しさん
19/09/17 02:53:38.24 J+q8D2Xe.net
名古屋のモーニングにゆで卵がついたからといって、モーニングでなくなるわけではないのだ。
無論、ゆで卵がつかないモーニングもある。ゆで卵がつこうがつくまいがモーニングなのだ。
342:デフォルトの名無しさん
19/09/17 03:09:38.39 F6p74H2h.net
名古屋とか言う異世界の話はやめようぜ
意味が分からん
343:デフォルトの名無しさん
19/09/17 18:03:14.36 IoM9hprN.net
名古屋が4次元?
344:デフォルトの名無しさん
19/09/17 18:08:21.64 +bGUkqkJ.net
みそかつ
みそ煮込みうどん
高血圧
345:デフォルトの名無しさん
19/09/17 18:36:53.76 TzGpBMAj.net
段ボール入り肉まんが人によってはバレないが、やはり人間的にはエラーが出やすい
そういうことだな
346:デフォルトの名無しさん
19/09/18 14:01:12.80 +0ud2Fjw.net
Caretの点滅間隔について質問です
自アプリがアクティブの時のみ点灯(点滅間隔にUINT_MAXを指定して擬似的に)
自アプリが起動中はWM_SETFOCUSでON(点灯)に、WM_KILLFOCUSでOFF(元の間隔)にする事はできましたし他のアプリにも影響はありません
ですが自アプリが終了したら他のアプリでもONの状態になってしまいます
メッセージを追ってみると
WM_CLOSEでDestroyWindow
→WM_KILLFOCUSでOFFへ
→プロセスが終了
になっていたので自アプリ内で再度ONになっている事はないです
これはどういう事ですか?
347:デフォルトの名無しさん
19/09/18 19:04:24.43 L8SHYgAR.net
WM_CLOSE
→DestroyWindow (hWnd 失効)
→WM_KILLFOCUSでOFFへ (hWnd 違いで無視)
→プロセスが終了
かな
知らんけど
348:デフォルトの名無しさん
19/09/18 19:30:38.13 +0ud2Fjw.net
ありがとうございます
引数は間隔のみですが一応DestroyWindow直前でOFFにしてみても同じ結果でした
349:デフォルトの名無しさん
19/09/18 19:31:59.76 Dukdxvvo.net
完成品には道のり遠くw
350:デフォルトの名無しさん
19/09/18 19:37:10.52 +0ud2Fjw.net
Getで値を見てみるとONの状態になってしまうのではなく
アプリが終了したら間隔が0xfeeefeeeになってしまう
でした
言い直しますと
System設定の500(ミリ秒)からUINT_MAXではなく200へ変更するようにしても
アプリを終了したら間隔が0xfeeefeeeになってしまう
です
351:デフォルトの名無しさん
19/09/18 19:39:32.20 Dukdxvvo.net
たまねぎスレw
352:デフォルトの名無しさん
19/09/18 19:57:32.75 u5s3196f.net
方法は何でもいいけど、例えばクリックしたらキャレット処理を終了→その後アプリ終了でどうなるかやってみ
問題が絞り込めるでしょ
WM_CLOSEで終了処理が思ったように動いてないってのはありがち
353:デフォルトの名無しさん
19/09/18 20:00:53.08 Dukdxvvo.net
はい完成品なしw
354:デフォルトの名無しさん
19/09/18 20:07:36.38 +0ud2Fjw.net
>>347
それも既に試しましたが同じ結果です
>>341でも書きましたがメッセージを追ってWM_CLOSEが正常な事も確認済みです
355:デフォルトの名無しさん
19/09/18 20:10:21.94 Dukdxvvo.net
はいBASICからやり直しw
356:デフォルトの名無しさん
19/09/18 20:10:41.11 +0ud2Fjw.net
>>347
途中送信すみません
設定してもいない値0xfeeefeeeになるので
間隔はSystemと同じ値(500)にSetするだけにしてみても同じ結果でした
357:デフォルトの名無しさん
19/09/18 20:12:42.36 rjYHNvyN.net
0xfeeeってデバッグの時の初期化されてない奴の値じゃないっけ
終了時に数値の参照先おかしくなってるとかかな
358:デフォルトの名無しさん
19/09/18 20:31:05.81 VIgnmm9s.net
「あなたのアプリがWM_CLOSEで0xfeeefeeeにしてる」のは明白でしょ
0xfeeefeeeって特別な値よ、ググってみそ
359:蟻人間
19/09/18 20:50:12.78 d3y9L0GY.net
DestroyCaretしてないとか?
360:デフォルトの名無しさん
19/09/18 20:51:02.69 doMp/Sm3.net
DEBUGビルドのランタイムで
newからのdelete や malloc からの free の後に 確保領域の内容を0xfeee で埋める
ポインタを開放した後に指し先の内容値を取得し、セットしちゃってるんでないの?
361:デフォルトの名無しさん
19/09/18 20:51:25.32 nSTUFOvJ.net
速度設定するとこにトレース出力でもおいて、まずはほんとに意図しないタイミングで呼ばれてないのかチェックだな
362:デフォルトの名無しさん
19/09/18 20:54:27.99 GIOjMe2C.net
イベントを2回通っていて、認識できてないとか。
363:デフォルトの名無しさん
19/09/18 21:32:56.42 +0ud2Fjw.net
>>353
キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました
>>354
してもしなくても同じ結果になります
>>355
値の指定をハードコードにしても同じでした
>>356-357
重複した呼び出しなども無かったです
364:デフォルトの名無しさん
19/09/18 21:52:22.59 8Lx1p1Xb.net
Releaseモードで検証したら
365:デフォルトの名無しさん
19/09/18 21:58:28.43 rjYHNvyN.net
別のとこでメモリ壊してるんかな
その部分だけの最小コード書いてみては
それでもなるなら手に負えない感じが
366:デフォルトの名無しさん
19/09/18 22:24:23.19 Ei+Tp6td.net
>>352-353, >>355
0xfeee なんてパターンあったっけ?
0xFDFDFDFD No man's land (normally outside of a process)
0xDDDDDDDD Freed memory
0xCDCDCDCD Uninitialized (global)
0xCCCCCCCC Uninitialized locals (on the stack)
の4パターンしか知らんかったわ
URLリンク(docs.microsoft.com)(v=vs.60)#what-exactly-do-you-mean-by-failure
367:デフォルトの名無しさん
19/09/18 22:31:02.62 rjYHNvyN.net
なかったっけ
うろ覚えで書いたから間違ってたかな
368:デフォルトの名無しさん
19/09/18 22:48:37.86 u5s3196f.net
0xfeeefeeeでググれ
369:デフォルトの名無しさん
19/09/18 22:51:58.57 u5s3196f.net
>>358
> キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
> WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました
マウスクリックで終了してる「はず」なのに終了してないなら、そもそもキャレット処理を
全く走らせてなくても問題が再現する「はず」
でもその場合は問題ないってなら、やはり終了処理に何かある
370:デフォルトの名無しさん
19/09/19 04:56:26.34 WgtBHfjG.net
>>363
お前がググれよw
371:デフォルトの名無しさん
19/09/19 08:37:27.80 55mEbAq6.net
>>361
new -> delete -> 値が0xfeeefeeeに
もしnewしたクラスのメンバ変数が値を保持して間隔設定してるなら
delete後に0xfeeefeeeなるよ
クラスポインタをdeleteしてからNULLにしたらエラーになるはず
こんな感じじゃないかな
WM_CLOSEで(deleteしてから)DestroyWindow (クラスポインタとメンバ変数の値が0xfeeefeeeに)
→WM_KILLFOCUSでOFFへ (OFFにする時に参照してるメンバ変数が0xfeeefeee)
→プロセスが終了
でもハードコードでもなるみたいだから違うかも?
372:デフォルトの名無しさん
19/09/19 09:42:21.55 BhEGNWlU.net
unix の pipe は双方向だと思うのですが
win32api の pipe (namedpipe ではない方) は一方通行なんでしょうか?
先生なんとかなりませんか?
373:デフォルトの名無しさん
19/09/19 09:45:58.80 VunEY3BQ.net
WM_CLOSE
↓
WM_DESTROY
374:デフォルトの名無しさん
19/09/19 09:51:38.16 VunEY3BQ.net
ああ
WM_QUIT
かな
375:デフォルトの名無しさん
19/09/19 10:17:38.29 nEj2AKuG.net
>>367
UNIXも一方通行では
376:デフォルトの名無しさん
19/09/19 10:35:55.09 WgtBHfjG.net
>>366
間隔設定がよくわからんが
class C { int a; };
auto x = new C();
delete x;
ってやるとxのポイント先が0xddddddddになるんだが…
Visual Studio Express 2017, 15.9.16
377:デフォルトの名無しさん
19/09/19 12:34:19.77 WgtBHfjG.net
>>366
書き忘れたけど当然デバッグビルドな
ついでにライブラリのソース追っかけたけどパターンはバイト単位に設定されてるので0xfeeeなんてパターンは無いと思うよ
378:デフォルトの名無しさん
19/09/19 16:05:31.90 NIaCYNJC.net
>>365
どこのgoogle使ってんの?
>0xfeeefeee を検索するとHeapFree で処分された後のヒープ領域がこの値で埋められている、とわかる。 ということは「処分済みヒープへのポインタを誰かが使っている」ということだ。
なお、正解かどうかは論じてないので悪しからず
379:デフォルトの名無しさん
19/09/19 16:41:49.39 cbyVF/Zh.net
解放バッファの埋めパターンは、ライブラリが自力でセットするものなの?
380:デフォルトの名無しさん
19/09/19 17:15:02.02 BhEGNWlU.net
-D_DEBUGで自動化やろ
381:デフォルトの名無しさん
19/09/19 18:06:22.20 NIaCYNJC.net
とりあえず>>373の検証
100バイトHeapAllocして適当にa~zの文字書き込んでHeapFreeの前後でダンプ取ったけど、
0xfeeefeeeが入ることはなかったな
debug版
前
382: 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 後 F0 C6 42 05 88 41 47 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 release版 前 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 後 78 EF 81 05 F0 54 79 05 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 free後に何か入ってるけど、実行毎に違う値が入ってる 0xfeeefeeeに関しては、単純に何かのAPIがそういう処理してるんでは
383:デフォルトの名無しさん
19/09/19 18:13:44.87 VunEY3BQ.net
コンパイラによっても違うのか
URLリンク(www.nobugs.org)
384:デフォルトの名無しさん
19/09/19 18:42:59.80 NIaCYNJC.net
APIだからコンパイラ関係ないと思うけどね
OSは8.1だけど
コンパイラというかライブラリが関係するはずのmallocでやってみた
vs2017 - ツールセットvs2013(詳細略)
以下並びは>376と同じだけどダンプの長さはa~zの26+1バイトじゃなく30バイト
allocも100ではなく30バイト
debug
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 CD CD CD
DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
release
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 00 00 00 00
385:デフォルトの名無しさん
19/09/19 19:23:51.83 55mEbAq6.net
>>371
間隔設定はキャレットのね
こっちでは0xfeeefeeeになるね
URLリンク(i.imgur.com)
386:デフォルトの名無しさん
19/09/19 22:12:42.24 1bu8PAPD.net
>>379
環境は?
十数バイトをdeleteしただけでHeapFreeを呼ぶのも考えづらいし、そもそもこっちでも>>376と同じくHeapFreeで0xfeeefeeeが入ることもなかった
387:デフォルトの名無しさん
19/09/19 22:36:38.24 2Kmv27QM.net
vs2003とかそのあたりかなこれ
388:デフォルトの名無しさん
19/09/20 00:25:02.03 n3bycm/n.net
Win10 Pro(32bit)でHeapFreeやってみた
VS2017(Community Edition)は0xfeeefeeeにならなかったが、
VC2010(Express Edition)でやってみたら0xfeeefeeeになったわ(確保していた領域の先頭8バイトほどに0xfeeefeeeじゃない値が入っていたが)
面倒だからオプションとか生成されたバイナリとか詳しく比較してない
389:デフォルトの名無しさん
19/09/20 09:31:26.82 DNSz8VRz.net
>>380
VC++2010Expressだよ
画像こっちの方がよかったね
URLリンク(i.imgur.com)
390:デフォルトの名無しさん
19/09/28 11:23:33.59 2Q8qxITa.net
メッセージ処理の
case(msg)
ってなんで
case(msg.message)
じゃないの?
構造体直接評価できるの?
391:デフォルトの名無しさん
19/09/28 11:29:50.08 2Q7OqYnQ.net
どこかのサイト?
392:デフォルトの名無しさん
19/09/28 11:46:59.83 QstsG7m2.net
メッセージは構造体じゃなくて UINT やろ
393:デフォルトの名無しさん
19/09/28 14:28:14.81 hWveUl7z.net
>>384
多分サンプルの読み方を勘違いしている
GetMessage関数なんかで使われるlpMsgとかはMSG構造体なので中でメッセージIDを
確認したいならば「msg.message」を見ることになる
メッセージIDのハンドリング行うサンプルなんかで普通に使われてるWndProc関数の
uMsgはUNIT型の「msg.message」が実体なのでcaseでそのままハンドリングできる
でないか?
394:デフォルトの名無しさん
19/09/28 16:13:30.79 91yg28/R.net
caseにカッコつけんな
395:デフォルトの名無しさん
19/09/28 17:54:36.06 zcWtf1aP.net
本来ライブラリに任せるべきところをかなりネイティブなwinsockプログラミングをしています。
TCP通信にて最大セグメントを超えてwinsock2.sendを行った場合はどうなってしまうのでしょうか?
エラーとなるためそこも自前で実装する必要があるのか、それともwinsockが勝手に分割を行ってくれるのか、はたまたネットワークアダプタやルーターなどのデバイスが勝手にやってくれるのか、どういう挙動となるのかご伝授お願いします
396:デフォルトの名無しさん
19/09/28 20:46:23.20 QstsG7m2.net
ソケット通信てそんなところ気にしなきゃいけなかったっけ?
ア
397:ップロード・ダウンロードルーチン組んだけど記憶にない
398:デフォルトの名無しさん
19/09/28 21:19:08.01 qwUCk4Gy.net
winsock2に限ればエラーが返るんじゃないか?
質問するよりもmasdn見たほうが確実だろ
399:デフォルトの名無しさん
19/09/28 21:42:01.62 zNn3MVf2.net
sizeof演算子に括弧つける派です?
400:デフォルトの名無しさん
19/09/28 22:22:37.56 ZZfYVsnP.net
UDPだと知らん間に分割された挙句
場合によっては断片が届く順番まで変わるからな
401:デフォルトの名無しさん
19/09/28 22:24:29.26 ZZfYVsnP.net
sizeofに括弧付ける
マクロの引数は使用時に必ず括弧付ける
402:デフォルトの名無しさん
19/09/29 08:10:25.37 qdFsd7WD.net
>>393
> 場合によっては断片が届く順番まで変わるからな
むしろTCPが頑張って順序を元通りに入れ替えてるんだが…
403:デフォルトの名無しさん
19/09/29 08:12:55.60 qdFsd7WD.net
>>392
不要なカッコは付けない派
例外は演算子の優先順位がわかりにくい時に付けるぐらい
理由は間違っててもコンパイルエラーにならないから
404:デフォルトの名無しさん
19/09/29 08:26:06.28 MP9GBJ11.net
>>392
俺も無駄な括弧はつけないな
わざわざつける理由がない
単項演算子の優先順位を知らんアホが仲間にいない
405:デフォルトの名無しさん
19/09/29 09:39:48.44 xMtED3Cu.net
どこから「単項」演算子の話が…
406:デフォルトの名無しさん
19/09/29 10:26:13.14 MP9GBJ11.net
そのアホがいた・・・驚愕
今 sizeof の話をしているんだが
脈絡が読めないとはな
407:デフォルトの名無しさん
19/09/29 10:29:45.89 JKK19nEu.net
こういう奴が書くソースは総じて読みにくいw
408:デフォルトの名無しさん
19/09/29 10:31:48.98 9b9emf+N.net
付ける派
if(...) switch(...)なのにsizeof(...)じゃないのはなんとなく嫌
409:デフォルトの名無しさん
19/09/29 11:39:16.24 98/tCU9d.net
どこがAPIの話だ馬鹿は京急に突っ込んで死ね
410:デフォルトの名無しさん
19/09/29 11:53:45.41 3s0zt66k.net
hoge = malloc(length * sizeof struct hage *);
hoge = malloc(sizeof struct hage * * length);
hoge = malloc(*length * sizeof struct hage *);
hoge = malloc(sizeof struct hage * * *length);
hoge = malloc(*length * sizeof struct hage **);
hoge = malloc(sizeof struct hage ** * *length);
()付けないとどんどんわかりにくくなっていく
411:デフォルトの名無しさん
19/09/29 13:23:57.04 eQVILPNx.net
sizeof(型)は()必要だよ
412:デフォルトの名無しさん
19/09/29 13:34:02.17 cKDPFQQS.net
いらんよ
413:デフォルトの名無しさん
19/09/29 13:50:41.73 6WuqtMyk.net
Win32API以外の話は不要
414:デフォルトの名無しさん
19/09/29 13:54:31.01 MP9GBJ11.net
>>400
おまえみたいのに読んでもらう必要が皆無
415:デフォルトの名無しさん
19/09/29 13:59:56.96 MP9GBJ11.net
単項演算子とそうでないものの区別がつかないアホが
return にも括弧したがるんだろうな
# K&R 1st世代の人はともかく
416:デフォルトの名無しさん
19/09/29 14:05:22.62 6WuqtMyk.net
書いてから思ったが、排他の否定な書き方が好きじゃない>>406
読みにくい
肯定した書き方だけに統一したい
そういう意味では、好きじゃないという書き方もダメか
嫌いと書くべきか
ということで、
Win32APIの話をしろ
おやすみ
sizeofは計算式絡むことがほとんどなのと、明示的にした方が分かりやすく
馬鹿らしいミスの回避のためにも付けといて損はない
417:デフォルトの名無しさん
19/09/29 15:27:53.48 MP9GBJ11.net
自分らしいミスか、わかりますw
418:デフォルトの名無しさん
19/09/29 15:43:36.72 Mg/ytEjl.net
>>403
この例からしても括弧つけた方が見やすいが、ID:MP9GBJ11は見やすさ全否定なの?
俺様はインデントもスペースも改行も無くても、優先順位・スコープ範囲が分かってるから無問題って理屈だよな
419:デフォルトの名無しさん
19/09/29 15:50:52.56 qbYXpMyS.net
typeidもsizeofも関数じゃなくて演算子なんだけど、typeidは括弧が必須。
420:デフォルトの名無しさん
19/09/29 16:01:08.70 EcHpn11g.net
>>389
TCPのMSSは相手との関係で決まるので何バイト送り込んでもエラーには
ならないと思うけど
TCPとしては送れたデータ量をSeq番号で管理していてセグメントの分割は
ドライバの仕事なのでアプリケーションレベルでは意識する必要なかったと
思うけど
UDPとかIP直みたいなデータグラムの場合には「WSAEMSGSIZE」が返って
くるみたいだけどTCPは平気なんじゃないかな(転送データの保障がある
わけではない)
421:デフォルトの名無しさん
19/09/29 17:35:14.18 3s0zt66k.net
さすがに return にまで () 付けてるのはうざいわ
422:デフォルトの名無しさん
19/09/29 17:44:23.38 MP9GBJ11.net
>>411
仲間に書かれても文句は言わねえな
見た目の問題じゃなく、やろうとしている内容がセンスに欠けるときなら
これ例えばこんな手もあるよなと議論に誘ったりはするし
iocccみたいな実験をTPOを間違えてやる大馬鹿野郎がいたら喧嘩売る
実例として/*/野郎は口汚く罵ってやった
423:デフォルトの名無しさん
19/09/29 17:51:28.09 dmuVBgYo.net
()なんてあってもなくても分かりやすけりゃいいんだよ
逆に>>403なんて()あってもなくても読みにくい。俺はこんなの絶対書かないな
424:デフォルトの名無しさん
19/09/29 18:02:50.86 bLCqrou7.net
sizeof には、極力変数名側を与えるようにして型名は避けるようにしてるけど
WinAPI とは遠い話だな
425:デフォルトの名無しさん
19/09/29 18:08:58.10 MP9GBJ11.net
もうダメ、我慢できないから言っちまおう
>>403は必要な()とそうでないのが解ってねえ
アホwバカwww
426:デフォルトの名無しさん
19/09/29 18:09:40.55 XoUEO8Fx.net
return (a);
とは書かないけど、
return (a+1);
のときは括弧を付けなくなる
427:デフォルトの名無しさん
19/09/29 18:44:22.03 qbYXpMyS.net
GCCではtemplate関数の記述する際に、ある文字列が型であることをコンパイラに教えるtypenameキーワードが必要なので、sizeof に括弧がないと読みづらくなる傾向はある。
428:デフォルトの名無しさん
19/09/29 21:35:11.45 MP9GBJ11.net
>>420
バーカwwwwwwwwww
typenameが必要か否かは規格17.7で明確化されている
429:デフォルトの名無しさん
19/09/29 22:11:20.40 Mg/ytEjl.net
>>415
規約や仕様の話じゃなくて見た目の話してるんだから、それを分かっててセンスがどうのこうのって言い出すのなら
この話の流れで草を生やしながら馬鹿まき散らすのは、マジでセンスないねって話になるよ
430:デフォルトの名無しさん
19/09/29 22:29:52.99 6WuqtMyk.net
おはようさん
スレタイ読めない奴は総じてセンスも才能もないってことですよ
431:デフォルトの名無しさん
19/09/29 22:52:38.22 Qb/y7uSu.net
>>387
ありがとうございました
432:デフォルトの名無しさん
19/09/30 08:14:44.84 069AXC1X.net
>>422
やろうとしている内容がセンスに欠けているときって言ってるのに規格がどうたらとか、いいからまず涙拭けよw
433:デフォルトの名無しさん
19/09/30 08:23:22.14 h3H1G0XJ.net
もう少しwindowsに関係した話をだな
434:デフォルトの名無しさん
19/09/30 09:28:52.10 5PqXiw6I.net
ガイジの出身地方ではWin32APIの範囲なんだろ
435:デフォルトの名無しさん
19/09/30 12:38:46.03 vkIGDak2.net
Win32APIがsizeof()推奨なのは
hoge * で済むものをわざわざ
typedef hoge *LPHOGE;
とかやっちゃって
sizeof LPHOGE
とかやって
不都合出て来るからだろ
436:デフォルトの名無しさん
19/10/01 20:49:26.16 D6lr/hhZ.net
Win32 APIはバージョン差を吸収するのにパラメータ構造体にその大きさをセットするので
わりかし sizeof の頻度は高いかもな
437:デフォルトの名無しさん
19/10/01 21:01:09.96 OgNbwofS.net
流れを読まず適当にレスすると
win32apiプログラミングにおけるapiの仕様やsizeofの使用頻度を考えたら括弧付きが自然なのは周知の事実なんだから
それにセンスが何ちゃらと難癖付けてるのはwin32apiプログラミングしてないアホでしょ
こんなん出ました
438:デフォルトの名無しさん
19/10/01 22:45:12.05 WzUe48WU.net
カッコつけてんじゃねーよ的なやつな
439:デフォルトの名無しさん
19/10/01 22:51:24.51 93GMDhBd.net
チコちゃんもといカコちゃんみたいな
440:デフォルトの名無しさん
19/10/02 06:50:57.68 c9vI97O0.net
> win32apiプログラミングにおけるapiの仕様やsizeofの使用頻度を考えたら括弧付きが自然なのは周知の事実なんだから
理由もメチャクチャだし周知とかアホすぎる
> それにセンスが何ちゃらと難癖付けてるのはwin32apiプログラミングしてないアホでしょ
>>430出ましたw
441:デフォルトの名無しさん
19/10/02 10:31:29.32 y1aZWk4e.net
スレタイ読まないカコちゃんまた来たの?頭弱いね
442:デフォルトの名無しさん
19/10/02 11:02:31.08 I2VMZsV4.net
sizeofに括弧つけるかどうかなんて
正直どうでも良くね?
443:デフォルトの名無しさん
19/10/02 11:33:56.30 Jzurp0++.net
構造体にサイズ入れることが一番多いからあんまつけないな
444:デフォルトの名無しさん
19/10/02 13:04:47.75 55+aQRnY.net
64bit化してからHOGE_PTRが増えてさらに混乱
445:デフォルトの名無しさん
19/10/07 18:52:52.31 gF1mLPnp.net
sizeof付けるの嫌ならラッパー作ってそっちで呼び出せよ
win32APIの仕様がそーなるんだからしかたねーじゃん。手続き通りに記述するしかない。
446:デフォルトの名無しさん
19/10/07 20:15:04.08 WFXsDvHg.net
perlでWin32APIを使うライブラリWin32::APIを使ってると、
32bitと64bitで異なる構造体のアラインメントを正しく解釈してくれないので、アセンブラ並みに低レベルな記述が必要になることがある。
447:デフォルトの名無しさん
19/10/07 21:01:12.36 Byy1mx9U.net
cからperl呼ぶのも腐ってるな
448:デフォルトの名無しさん
19/10/07 22:23:56.51 WFXsDvHg.net
>>440
世の中には発酵食品が沢山ある。
発酵 腐敗 熟成 の違いを見極めるのは難しい。
449:
19/10/09 21:21:44.79 ggd9iNPq.net
質問です。
SetFilePointer()
URLリンク(docs.microsoft.com)
を FILE_END で使ったことのある方はおられますか?
第3引数 PLONG lpDistanceToMoveHigh を 0 (そして第 2 引数 LONG lDistanceToMove も 0 )で使うと、FILE_END であっても当のファイルが 4GB 以上の場合にはポインタがファイルの最後に設定されない現象があるようです
この場合ダミー変数(毎回 0 を投入している)を設けて lpDistanceToMoveHigh にそのアドレスを設定すると FILE_END がその本来の意味を示すようにみえます。
推量形で記述しているのは、私の環境(mingw64-gcc)ではコンパイラのオプティマイザが過剰に効いている可能性があり -O0 でコンパイルしてはじめて、ある程度この現象が確認できたという事情のためです。
これは一般的な話なのでしょうか?
450:
19/10/09 21:24:08.20 ggd9iNPq.net
>>442
ソースを晒します
URLリンク(ideone.com)
451:デフォルトの名無しさん
19/10/09 21:49:31.92 75Pp/Qaq.net
longの場所になぜintを使う
452:
19/10/09 22:06:12.13 ggd9iNPq.net
>>444
printf("sizeof(int):%d, sizeof(LONG):%d\n", sizeof(int), sizeof(LONG));
$ ./a.exe
sizeof(int):4, sizeof(LONG):4
453:デフォルトの名無しさん
19/10/09 22:12:20.45 wmrCsqX1.net
lpDistanceToMoveHighがNULLの時のFILE_ENDは単純にファイルサイズも下位32bitだけ見て処理してそう
でかいファイル扱うなら素直にSetFilePointerEx使った方がよさげ
454:
19/10/09 22:39:59.07 ggd9iNPq.net
>>44
455:6 *Ex には気がつきませんでした 昔書いたものをみると s1 = GetFileSize(f, &s2); SetFilePointer(f, s1, (PLONG)&s2, FILE_BEGIN); WriteFile(f, p, strlen(p), &n, 0); ってやっていましたから、どうも、昔も同じところで嵌ったらしく、お茶を濁す方法まで昔と同じのまま、しかもその記憶が今はない… もうなにもかも忘れてしまった… コメントありがとうございました
456:デフォルトの名無しさん
19/10/15 14:52:27.44 iJLx9DXs.net
書き込むなよクソコテの分際で
457:
19/10/15 19:34:41 6pml1OhP.net
みんなクソだと思ってたけど
458:デフォルトの名無しさん
19/10/15 20:02:45.72 M5SL5EtX.net
そうなんだ
病気だね
459:デフォルトの名無しさん
19/10/15 20:59:08.69 H14rNUWV.net
こんな場所でこんなクソ書き込みしてるくせに自身のクソさ加減に気付かないなんて病気だぞ☆
460:デフォルトの名無しさん
19/10/15 22:41:36.61 72mqelru.net
そうなんだ
病気だね
461:
19/10/17 09:57:15 z4eLhP/Z.net
PCが複数のネットワークにつながっています。
IUPnPDeviceFinderで検索するネットワークを指定するのはどうしたらいいのでしょう?
462:デフォルトの名無しさん
19/10/21 22:12:09 EXgPOVjA.net
CSPのハンドルであるHCRYPTPROVなんだけど、
これってスレッドセーフ?
具体的には、同じハンドル使って別スレッドで同時にCryptGenRandom()呼んでも大丈夫なものなの?
Goのcrypt/randが排他せずに同じハンドルで呼んでいて気になったんで
463:デフォルトの名無しさん
19/10/21 23:03:30.44 xGMxn7s7.net
7から10にしたらこんな感じで画面外の領域が描画されなくなってしまいました URLリンク(i.imgur.com)
Windows10で画面外の領域を描画させるような関数か方法はありますか?
InvalidateRect、UpdateWindow、RedrawWindow、PrintWindow、DwmGetDxSharedSurfaceは試しましたが無理そうです
ソースです URLリンク(dotup.org)
464:蟻人間 ◆T6xkBnTXz7B0
19/10/21 23:12:02 LVq8IpRv.net
>>455
CreateDC("DISPLAY", ...)
CAPTUREBLT
465:デフォルトの名無しさん
19/10/22 00:53:22 VVF85bpK.net
>>456
CreateDCではディスプレイに表示されてる領域のデバイスコンテキストしか取得できませんでした
ウィンドウの外ではなく、ディスプレイの外に出ている領域を取得したいのです
CAPTUREBLTは単体だと真っ黒、SRCCOPYと一緒に指定してもSRCCOPY単体と変化はありませんでした
466:デフォルトの名無しさん
19/10/22 01:13:45.23 tgq7+oc3.net
455に貼ってるスクショでは単に5chのページが途中までしか描画されないように
見えるだけで、"画面外の領域"の意味がよく分からんが・・・・
それはともかく、実は管理者権限で実行するといけちゃうとか?
467:デフォルトの名無しさん
19/10/22 02:01:10.02 VVF85bpK.net
>>458
別アプリ(画像ではブラウザ)をSetWindowPosでウィンドウの一部がディスプレイの外に出る位置に移動して
そのウィンドウの内容をBitBltで取得して自分のウィンドウに表示してるんですが
ディスプレイに表示されてないディスプレイの外に出た部分が真っ白になってしまいます
すいません、説明下手なのでソースを見てもらえると助かります
468:デフォルトの名無しさん
19/10/22 02:29:09.84 rKj5dIYC.net
まともに説明もできないソースだとそもそも何したいのかわからないほどのバグな気がする
469:デフォルトの名無しさん
19/10/22 02:57:41.77 tgq7+oc3.net
対象となるアプリのスクショを取るようなアプリでOK?
面倒なので
470:試さないけど、単に画面外に描画しても無駄なので描画してない だけのような気がするが、その理屈なら画面外ではなくその上に別ウィンドウを 表示させるとどうなるんだろうなってことと、対象アプリがブラウザ以外だと どうなるんだろうなってことなど突き詰めたい項目が(面倒くさくなり以下略
471:デフォルトの名無しさん
19/10/22 09:19:42.21 cLGxu2gX.net
Windows7でaero有効なら画面に見えていないウィンドウからbitbltできるが、10でaero廃止されたのが
関係しているのかな。
10でもタスクバーのウィンドウプレビューは表示されるから7と同じようにできてもいいとは思うが。
472:デフォルトの名無しさん
19/10/22 09:22:47.36 swuil85R.net
10でも取れるぞ。これは確実
ソース見てないから原因はしらね
473:デフォルトの名無しさん
19/10/22 12:27:17.50 VVF85bpK.net
>>461
OKです
デスクトップのデバイスコンテキストから転送すると上にある別ウィンドウの画像込みになりますが
対象アプリのデバイスコンテキストから転送すると対象アプリの画像だけを取得できます
対象はブラウザ以外でも描画されない部分が白か黒かの違いだけです URLリンク(i.imgur.com)
>>462
プレビューでも描画されないです URLリンク(imgur.com)
474:デフォルトの名無しさん
19/10/22 13:41:14.15 fxbuxtP/.net
画面コピー貼る前にソース貼れ
475:
19/10/22 13:44:24.15 afWm6mlf.net
>>464
早く解決したいのだったらソースを貼らないと
476:デフォルトの名無しさん
19/10/22 13:47:22.65 PRXTlxOV.net
そのコードだとキャプチャできないのは確認したけどプレビューまではそんな風にならんな
なんとなくOS自体の省力設定に連動して
OSがクリップしてる or アプリ自身のクリップを引き起こしてる臭いけど
新しめのキャプチャAPIだと↓
URLリンク(docs.microsoft.com)
477:デフォルトの名無しさん
19/10/22 13:55:50.74 PRXTlxOV.net
補足、そっからじゃC++のデスクトップアプリからの使い方がわかんねえな
URLリンク(github.com)
478:デフォルトの名無しさん
19/10/22 14:05:08.56 VVF85bpK.net
>>465
>>466
>>455 で張ってますが落とせないとかありますか?
別のろだで用意したほうがいいですか?
>>467
うちだと実機でも仮想PCでもプレビュー欠けてるんですよね
仮想PCに新規でWin10入れて確かめてみます
C++のソースありがたいです。試してきます
479:デフォルトの名無しさん
19/10/22 14:09:15.53 fxbuxtP/.net
一度memdcにコピーする手間があったような
480:デフォルトの名無しさん
19/10/22 14:32:05.02 cLGxu2gX.net
俺も>>455と同じようなキャプチャソフトを自作してたんで今win10で試してみたが
ウィンドウが画面外にはみ出しているからといってキャプチャできないことはないな。
プレビューが欠けるということもなかったが。
>>464
プレビューが欠けるのが特定のアプリだけならそのアプリの問題だろうから
あきらめるしかないだろうねえ。
どのアプリでも欠けるとしたらwindowsの設定かGPUの問題かなにかかな。
481:デフォルトの名無しさん
19/10/22 15:53:33.65 VVF85bpK.net
クリーンインストールWin10でも症状変わらず
ScreenCaptureforHWNDも変わりませんでした
>>471
画面内で表示してから画面外に移動してキャプチャしてませんか?
キャプチャはできても更新がされない感じなので
移動してから内容更新するとキャプチャ画像とプレビューがこうなります URLリンク(imgur.com)
482:デフォルトの名無しさん
19/10/22 16:05:23.75 cLGxu2gX.net
それをedgeとかでやっても同じなん?
動画を表示していもプレビューは随時更新されるが、ふつう。
483:デフォルトの名無しさん
19/10/22 16:09:29.85 tgq7+oc3.net
他のキャプチャソフトではどうなるの?っと
484:デフォルトの名無しさん
19/10/22 17:18:39.23 An+rmEaC.net
コンパイラ設定が
485:xp互換だと撮れないってのもあるな
486:49
19/10/22 17:33:47.67 8AVeU+tz.net
そもそも何がしたいのか分からない。
487:デフォルトの名無しさん
19/10/22 18:06:58.79 PRXTlxOV.net
こっちで試してる限りでもいまいち挙動に一貫性がなくて確証は無いんだが
そのWaterfoxってのだけ更新時に画面外のレンダリングを省いてるのはプレビューで確認できたんで
検証するのにそれは外した方がいいな
画面外に出たアプリのWM_PAINTでrcPaintが差分を返すのは正常な挙動なので
アプリ自体の画面更新と内容の取得のタイミングによってはプレビューがそうなる理屈は説明できる
キャプチャに用いているBitBltとも内容が異なるのはGDIとDWMでは見てるバッファが違うのかもしれない
ただ全部のアプリがそうなるとなるとこっちじゃ現象自体が確認できないのでなんとも
488:455
19/10/22 21:17:47.98 VVF85bpK.net
>>473
>>477
Firefox、Waterfox、Chrome、VisualStudio2019、MPCBE、ペイント、メモ帳
画面外に出た部分はプレビュー更新されないし、BitBltも更新されてない画像しか取れない
Edge、フォト
画面外に出た部分もプレビュー更新される、BitBltでは画面内でも画像が取れない
IE
画面外に出た部分もプレビュー更新される、BitBltでは画像が取れたり取れなかったり不安定
動画です URLリンク(dotup.org)
>>474
Loiloだと画面外は真っ黒でした。他は名前言ってもらえれば試します
>>475
x64でプラットフォームツールセットはVisual Studio 2019(v142)なのでXP互換ではないと思います
>>476
ウィンドウの一部が画面外に出ても、ウィンドウがすべて画面内にあるのと同じようにキャプチャしたいです
489:デフォルトの名無しさん
19/10/22 21:59:23.80 JI3aTgMm.net
ディスプレイ外にはみ出した窓があってそのはみ出したリージョン内で表示更新かかってて
そいつを ALT+PrtScr でキャプチャしてもうまく取れてないなら厳しいんでないかな
490:デフォルトの名無しさん
19/10/22 22:11:54.49 An+rmEaC.net
俺自作のソフトはキャプチャできるが、ALT+PrtScrはキャプチャできん@win10
491:デフォルトの名無しさん
19/10/22 22:35:32.44 YGRhwcPr.net
グラボに依存とか?
492:デフォルトの名無しさん
19/10/22 22:54:01.75 cLGxu2gX.net
>>478
なるほど、ペイントで現象確認した。
GPUリソースを食わないよう改善した結果とかかねえ。
493:デフォルトの名無しさん
19/10/22 22:56:43.07 HSQTG8Jj.net
どうなんだろう。BitBlt(,,,SRCCOPY | CAPTUREBLT) しか方法ないのかね。
494:デフォルトの名無しさん
19/10/22 23:00:04.93 GE3t6WX1.net
2段階のアクセラレータはどのようにやるのがいいの?
Visual Studio のCtrl+K Bみたいな・・・
495:蟻人間
19/10/22 23:03:39.56 QN5InCe0.net
>>484
アクセスキーテーブル切り替えか、
状態遷移だろうよ。
496:デフォルトの名無しさん
19/10/22 23:10:21.12 PRXTlxOV.net
なんかだんだんワケがわからなくなってきたが再度確認したら
基本的にUWPアプリ以外は画面外の再描画しないっぽいな(Chromium系はやっぱり描画されてるけど)
ほとんどのアプリが律義にrcPaint見てるとも思えんし描画先がGDIだと強制的にOSでクリップされてんのかしら?
おそらくWindows Compositionが噛んでてBitBltで取れないUWPアプリはWindows.Graphics.Captureで取れるけど
UWPアプリ以外でクリップ済みのイメージしか取れないのはまあ当然っちゃ当然
497:デフォルトの名無しさん
19/10/22 23:28:56.03 An+rmEaC.net
win10でUWPでない従来のアプリの画面外キャプチャできるよ
win7がaeroオフだと撮れなかったみたいに何らかの条件があるのかもしれないが
498:デフォルトの名無しさん
19/10/23 00:49:00.28 /s0IRa9G.net
Mozilla Firefoxなどサードパーティ大手は今もWin32APIをネイティブに使っており.NETは使ってない。
499:デフォルトの名無しさん
19/10/23 01:17:59.09 VREi5cKF.net
エクスプローラのアドレスバーで「デスクトップ」とか「ダウンロード」って入れたら
そこのパスに移動しますが、「デスクトップ」(という日本語)からパスに変換するAPIはありますか?
500:蟻人間
19/10/23 01:29:37.00 DFr4VJRt.net
>>489
SHGetLocalizedNameの逆写像っぽい。CSIDLからテーブルを作るのが楽かと。
501:デフォルトの名無しさん
19/10/23 01:33:15.99 VREi5cKF.net
あれ?なんか上の方に同じような質問がw
502:デフォルトの名無しさん
19/10/23 01:52:47.01 VREi5cKF.net
なんかめちゃくちゃめんどくさそうw
503:デフォルトの名無しさん
19/10/23 02:38:41.47 /s0IRa9G.net
SHGetFolderPath() でCSIDLコンプリートをめざすとか
504:蟻人間
19/10/23 03:33:00.02 bxABcYeD.net
URLリンク(github.com)
作ったぞ。自由に使え。
505:デフォルトの名無しさん
19/10/23 04:05:49 /s0IRa9G.net
>>494
早いですね。
とはいえ、実在するパスからの逆引きだと、「コントロール パネル」とか「プリンター」みたいな仮想フォルダ名は取れない。
506:蟻人間
19/10/23 04:20:43.92 DFr4VJRt.net
仮想フォルダならPIDLを使うのではないか?
507:蟻人間
19/10/23 04:23:26.39 DFr4VJRt.net
PIDLとGUIDをどうやれば結び付けられるか? え~と
508:蟻人間 ◆T6xkBnTXz7B0
19/10/23 04:25:53 DFr4VJRt.net
URLリンク(stackoverflow.com)
ここにヒントが。
509:蟻人間
19/10/23 04:32:28.94 DFr4VJRt.net
落ちます。
510:蟻人間 ◆T6xkBnTXz7B0
19/10/23 04:40:22 DFr4VJRt.net
仮想フォルダならレジストリを見る方法があるが、KnownFolderの方が正しい方法に思える。
511:デフォルトの名無しさん
19/10/23 04:47:44 /s0IRa9G.net
WTL公式gitレポジトリにあるエクスプローラもどきアプリのサンプルが参考になるかも。
URLリンク(sourceforge.net)
512:デフォルトの名無しさん
19/10/23 12:55:03.32 hZZQZDty.net
画面外のスクショが取れない件、1809からの挙動のようだねえ
URLリンク(stackoverflow.com)
513:デフォルトの名無しさん
19/10/23 12:59:02.01 ou8vQa3g.net
>>502
日本語で
514:デフォルトの名無しさん
19/10/23 15:31:41.90 J1BMEu9t.net
いや判るだろ
1809 update 入れた後に可笑しくなったんだろω
515:455
19/10/23 21:03:31.35 i0lmBL5A.net
1809以降の挙動ならプログラムじゃなくてWindows側の問題みたいですね
BitBltだけじゃなくプレビューにも問題出てるからバグっぽいですし
そのうちアップデートで治ることを期待しつつプログラムでの対応は諦めます
いろいろ答えてくれた皆様ありがとうございました
516:蟻人間
19/10/23 22:21:30.01 bxABcYeD.net
やっぱりKnownFolderから取得できた。
URLリンク(github.com)
自由に使え。
517:蟻人間
19/10/23 23:01:48.53 bxABcYeD.net
揚げ物
518:デフォルトの名無しさん
19/10/24 00:20:06.38 ywNA7G1O.net
ありがとう。だがしかし別のアプローチで
俺が解決したい(本当の)問題は解決できていたのだよ
まあ誰かの役に立つだろうから放っておいたけどな
すまんなwww
519:デフォルトの名無しさん
19/10/24 00:41:12.27 Fw8n9fLr.net
アップデートで直るかっちゅーても挙動自体は描画の最適化とも言えるので仕様としてこのままいきそうだけどなあ
自作ので試してみたけどやはり一部でも画面外に出てると無効領域をクライアント全体と指定しても
強制的にクリップされたHDCが返ってくるね
BeginPaintだけじゃなくてWM_PAINT外でのGetDCでも同様
DXGI swap chainが出力先ならクリップされない
普段窓を画面外に追い出したままにするってことがないから気付かなかったなコレ
520:デフォルトの名無しさん
19/11/04 15:23:29.75 /C5zJSxn.net
SetForegroundWindowでフォーカスを奪えない、
入力中にフォーカスが奪われるとウザいからWindowsが
奪えないようにしてるって話はよく聞くと思うけど
逆にエクスプローラが起動すると(バックグラウンドなのに)
フォーカスを奪ってくれて困ってるんだけど対応策ない?
ウザいんだがw
521:
19/11/04 15:58:26.30 fwURXfb5.net
>>447
さらに追試を重ねていました
悪いときは 10G, うまくいっても 5000G 程度(日によってばらばらです)で
FILE_END ができなくなる現象は、
FILE_END が悪いのではなく、システムで圧縮するように指定するとそういうことがおきることがわかってきました。
Windows もいろいろとあてにならない、もう linux に軸足を移そうか、と思案しています
522:デフォルトの名無しさん
19/11/04 16:19:56.83 1IiqNDSP.net
>>510
SetFocus()を使うと好きなコントロールにフォーカスを与えることが出来る。
SetForegroundWindow()は余り効果が無い。
523:デフォルトの名無しさん
19/11/04 16:52:05.66 KwYoxUXo.net
longポインタ引数にintポインタ渡して>>445みたいなトンチンカンな返答する人が何か言ってる
524:
19/11/04 18:29:13.81 fwURXfb5.net
>>513
>>445 を日本語に翻訳してみました。
URLリンク(docs.microsoft.com)
では api 関数の第二引数は 「LONG」で定義されています。
ここで注意しないといけないのは「long」ではなくて「LONG」。
すなわち LONG は win32api.h で定義されている型です。これが実際の環境ではどう typedef されているかは環境依存です。
それを調べるために >>445 で実際に sizeof(LONG) の値を出力させると sizeof(LONG) = 4
私は >>443 で第二引数に int (そして渡す値は 0) を使っていますが sizeof(int) = 4
値は 0 だから signed/unsigned については問題ない
そして sizeof(int) = sizeof(LONG) だからなおさら問題ないのです。
昔は DWORD (Double WORD) と定義されていましたが、1 word = 2 bytes, 2 words = 4 bytes
32bit 環境での普通の int のサイズは 4 なので昔から int を当てて問題なかったのですよ
結論:>>513 >>444 はニワカ、win32api スレに投稿する前に 10 年 ROM ってください
525:デフォルトの名無しさん
19/11/04 18:55:51.87 KwYoxUXo.net
>>514
445のどこがWindows環境?
526:デフォルトの名無しさん
19/11/04 19:29:40.39 ex697rOI.net
DOS窓でprintf出力しながらWin32APIだって使えるからWin環境
527:デフォルトの名無しさん
19/11/04 20:03:10.14 xxqq9QlV.net
LONGは、WPARAMやLPARAMと型変換する危険コードが多い気が。もちろん古いコードだけど。
528:
19/11/04 20:32:15.68 fwURXfb5.net
>>515
だから、あなたは 10 年 ROM ってなさい、ってさっき言ったでしょう?
529:デフォルトの名無しさん
19/11/04 23:46:10.01 hiiCgg8I.net
ここはWin32スレなんだからWin64や総称であるWindows APIはスレ違い
32ビットの話だけしてろ
530:
19/11/05 00:15:09.88 SbnLKNM3.net
>>519
残念ながらその意見に賛同する人は少数派だと思いますよ
531:デフォルトの名無しさん
19/11/05 01:54:03.16 RTdVMJgD.net
Win64APIなんてどっから出てきたの?
532:デフォルトの名無しさん
19/11/05 11:28:00.41 f5fZl2jz.net
> 昔は DWORD (Double WORD) と定義されていましたが
LPARAMは 16bit,32bit共に LONG (符号付整数)
533:デフォルトの名無しさん
19/11/05 11:48:37.07 McETm4vA.net
>>519
64bitプログラミングであっても使用するAPIは実体としてはWin32APIだぞ
Win64APIなんて実体はなく、論理的に実装区分として呼び分ける程度
つまりスレチでも何でもない
534:デフォルトの名無しさん
19/11/05 19:37:14.92 wVD+ILW8.net
double wordが32bitだなんて本来word幅が16bitという前提の話でインテルなら80286までのはずが386でパスされathlon64で再びパスされるという異常事態が今も続いているわけなんだが
535:デフォルトの名無しさん
19/11/05 20:20:06.81 Rmlz0hln.net
>>524
16bit CPUや32bit CPUという言葉と
ポインタ = アドレス幅が違うことは普通にあるってわかってる?
8086は16bit CPUでレジスタ幅は16bitだがアドレス幅は20bit(最大1MB)
80286も16bit CPUだがアドレス幅は24bit(最大16MB)
80386は32bit CPUでレジスタ幅、アドレス幅ともに32bitで
分かりやすい時代がPentiumの第一世代(1995年ぐらい)ぐらいまで続いたが
Pentium Proからは物理アドレス拡張が搭載され32bit CPUだが
アドレスバスは36bit(最大64GB)になったんだが
536:デフォルトの名無しさん
19/11/05 20:52:13.30 mHpC8FDb.net
>>525
釈迦に説法ご苦労
537:デフォルトの名無しさん
19/11/05 21:08:53.99 Rmlz0hln.net
釈迦は俺やしw
538:デフォルトの名無しさん
19/11/05 21:43:32.83 mHpC8FDb.net
俺メインフレームでdiagnose命令とかいじくってて
別な案件でhdlでcpu書いたりしてるけど
539:デフォルトの名無しさん
19/11/06 01:32:27 k1IDaN6Q.net
メインフレームw
何歳になってもイキリ小僧してるんだな
サルのパパとママはご存命かい?
540:デフォルトの名無しさん
19/11/06 02:20:55.89 71FJFoA8.net
>>529
何イキっとんねん
541:デフォルトの名無しさん
19/11/06 04:07:48 Z1mcKm+J.net
イキなりえなり
542:デフォルトの名無しさん
19/11/06 07:21:07 cnDla3Ge.net
>>525
ソフト的なAPIの話に物理アドレス空間で語るバカ乙w
543:デフォルトの名無しさん
19/11/06 12:01:28.81 o3tEvZiY.net
釈迦がどうかはともかく
>>525 が全くトンチンカンなレスであることは事実
いつものあいつだろ
544:デフォルトの名無しさん
19/11/06 15:05:39.69 Z1mcKm+J.net
>>532
APIの話だというのなら、OSが16bitだろうが32bitだろうが
APIの仕様が代わるわけないんやで
異常事態でもなんでもなく、それが高い互換性の理由だ
545:蟻人間
19/11/06 15:13:44.92 Z1hQUtYe.net
64ビット対応で
Get/SetWindowLongよりもGet/SetWindowLongPtrを使え。とか、
DialogProcの戻り値をINT_PTRにしろ。
とかの若干の変更点があるようだ。
546:デフォルトの名無しさん
19/11/06 15:19:20.45 o3tEvZiY.net
HANDLEもこっそりtypedefに_PTR変えたんだっけ
547:デフォルトの名無しさん
19/11/07 01:18:36.16 7K0XtVuo.net
ダイアログプロシージャの戻り値がめんどうなことになる
x86じゃBOOLだけどx64だとINT_PTR
でもVC6だとBOOLはintだという
548:デフォルトの名無しさん
19/11/07 01:32:58.79 sEmiRyTj.net
歴史的理由で仕方のない面もあるが、
単一のソースで16bitと32bit、32bitと64bitでコンパイルできるようにしてきたから
型の実態は結局なんなんだ?って悩むことになってる。
もうそろそろネイティブ型だけを使えるようになってほしいが
そのために言語を変えるほうが楽だろうな
549:デフォルトの名無しさん
19/11/07 01:44:34.42 ubAK6fog.net
intとlongのサイズ違うこともあるしな
c#みたいにint32みたいなの最初から用意しとけよ
550:デフォルトの名無しさん
19/11/07 01:48:09.03 cfOynPV2.net
stdint.h使おう
551:デフォルトの名無しさん
19/11/07 02:23:16 +N3PsKU8.net
前に聞いた話だと、大型機が64BIT化した後も、intは、32BITの事が多いらしい。
552:デフォルトの名無しさん
19/11/07 02:26:43 4jX7Qkw7.net
いいかげんな知識で語りたがるやつ多すぎ
553:デフォルトの名無しさん
19/11/07 02:27:07 +N3PsKU8.net
32BIT時代は、整数サイズとポインタサイズが一致していて、サイズの選び方に
悩むことが無く便利だった。果たして、整数型を全部64BITにして良いものか
どうか。原則的に速度は変わらないとしても使用メモリは増えてしまう。
恐らく、exeファイルのサイズも増加するだろう。
554:デフォルトの名無しさん
19/11/07 02:42:22 sEmiRyTj.net
コンピュータが遅かった時代はCPUに最適なデータ型を
使うことが重要だったが、今は数値型しかなくて
データサイズは自動的に決まりますとかばかりだもんな
555:デフォルトの名無しさん
19/11/07 02:44:07 +N3PsKU8.net
64BITポインタptrと配列添え字idxに対して、
ptr[idx]
と書いた場合、idxが32BITと64BITだと実は、32BITの方が
1クロック増えてしまう可能性が高い。なぜなら、マシン語レベルでは、
上記の演算で、ptrは64BIT整数として扱われ、ptr[idx]は、
*(ptr+idx)として処理される。ところが、64BIT+64BITの整数演算は
あるが、64BIT+32BITの整数演算は無い事が多い。なので、
idxが32BITだと、いったん、64BITにBIT幅を拡張する命令を1つ
挿入する必要がある。
だから、64BITポインタのアーキテクチャだと、idxも64BITにした方が
速度が上がる可能性が高い。
556:デフォルトの名無しさん
19/11/07 02:45:21 +N3PsKU8.net
>>544
>今は数値型しかなくてデータサイズは自動的に決まりますとかばかりだもんな
C++だと今でもデータサイズは明示します。
557:デフォルトの名無しさん
19/11/07 02:54:21.19 PsJP4fV8.net
size_t型が無難にして最強
558:デフォルトの名無しさん
19/11/07 03:00:35.26 sEmiRyTj.net
>>546
他の言語の話や。今は速度よりも利便性のほうが重要や
559:デフォルトの名無しさん
19/11/07 03:18:33 +N3PsKU8.net
>>548
例えば、JavaScriptだと、数値型のデータサイズが自動的に決められている
わけではなく、常に double 型(64BIT 浮動小数点型)なのですが、
整数は32BIT整数型までだと double型に精度を落とすことなく完全に
収まるので、何も考えずに正しく扱えるだけです。
JavaScriptでは、64BIT 整数型は、伝統的には原則的に使えません。
560:デフォルトの名無しさん
19/11/07 03:23:20 +N3PsKU8.net
>>549
また、JavaScriptは、シンプルな使い方では、原則、整数型がなく、
console.log(54 / 10);
とすると、5.4と表示されます。これは、54や10が整数ではなく、
54.0 や 10.0 という double 型浮動小数点として扱われているためです。
これは、Sun/Oracle の Java とは全く結果が異なります。後者では、
54/10は、「整数除算」なので、結果は整数の「5」となります。
561:デフォルトの名無しさん
19/11/07 03:38:26 sEmiRyTj.net
> JavaScriptでは、64BIT 整数型は、伝統的には原則的に使えません。
64bitも使うのかって話なんだけどな? 52bitで十分だろう?
URLリンク(sbfl.net)
> JavaScriptのNumber(数値型)は倍精度浮動小数点数となります。
> つまり全体が64bitで、仮数部が52bitです。仮数部が52bitなので、
> Numberを用いて正確に表せる最大の整数は、53bitで表せる数から
> 1引いた数になり、(2^53 ? 1) = 9007199254740991となります。
562:デフォルトの名無しさん
19/11/07 03:39:52.10 sEmiRyTj.net
なんだ。JavaScriptにBigIntあるじゃん
Numberで表せる最大の整数値は十分な値にも思えますが、
分野によってはこれでも足りなくなることがあります。そこで導入されたのがBigIntです。
BigIntは、任意精度の整数を表す新しいプリミティブ型です。
任意精度の整数値については、基本的にCPUに搭載されている計算機は対応していないので、計算はソフトウェアによって行われます。
563:デフォルトの名無しさん
19/11/07 03:43:05 sEmiRyTj.net
やっぱりどんなときでもプログラマがデータ型を
選んでくださいっていうのは時代遅れだと思わ
564:デフォルトの名無しさん
19/11/07 03:53:54.05 +N3PsKU8.net
>>553
自動化することは可能ですが、現在の技術でそういうところまで自動化した
言語を使ってコンパイラ処理系を書くと、コンパイル速度が100倍遅くなる
かも知れません。これはコンパイル意を作成した経験に基づく話です。
もの凄く厳しい世界が実はまだ沢山残っています。
565:デフォルトの名無しさん
19/11/07 03:55:32.96 +N3PsKU8.net
>>554
誤:かも知れません。これはコンパイル意を作成した経験に基づく話です。
正:かも知れません。これはコンパイラを作成した経験に基づく話です。
566:デフォルトの名無しさん
19/11/07 03:58:19 sEmiRyTj.net
100倍遅くなるなら100倍高速なコンピュータを使えばいいだけ
567:デフォルトの名無しさん
19/11/07 03:58:57 sEmiRyTj.net
今より100倍遅かった時代もあるのに
何を言ってるんだろうか?
それこそ時代遅れの感覚
568:デフォルトの名無しさん
19/11/07 03:59:39 sEmiRyTj.net
あと、「かも知れません。」とかいう推測はどうでもいいから
コンパイラを作り上げた俺が言うのだから
説得力は高いだろうし
569:デフォルトの名無しさん
19/11/07 04:00:34.74 +N3PsKU8.net
>>555
GPGPUなどの世界でも、乗算速度がfloatとdoubleでは、4倍以上も違うような
例も多いのです。また、doubleをサポートして無いGPGPUの場合、doubleの乗算を
floatや整数型などにバラして処理するので数10倍かかります。
なので、慎重になる必要があります。
CPUの場合でもintとdoubleで速度がかなり違うことが多いです。
570:デフォルトの名無しさん
19/11/07 04:02:01.90 sEmiRyTj.net
あと極まれにスピードが重要な部分があるから
全部スピード重要視しろとかいうアホな感覚なw
あれはやめてほしい。
極稀に重要なら、極稀に使うものを作ればいいだけ
よく使うものを短くする。(仕事の)圧縮の鉄則
571:デフォルトの名無しさん
19/11/07 04:02:17.73 +N3PsKU8.net
>>558
あなたより私の方が良いコンパイラを作っている可能性も有りますよね。
572:デフォルトの名無しさん
19/11/07 04:05:54.80 +N3PsKU8.net
>>560
自動化の道は検討の価値はあるでしょう。
しかし、int32型とint10000000型を自動的に取捨選択できるほど、
コンパイラが賢くなるのは恐らく遠い未来です。
どこかで機能制限や精度を人間が指示する必要があると考えられます。
573:デフォルトの名無しさん
19/11/07 04:07:52.13 sEmiRyTj.net
>>561
そういう俺のほうが優れてるとか言う主張をしたいなら、
個人を特定できるような情報をだせ
574:デフォルトの名無しさん
19/11/07 04:08:39 sEmiRyTj.net
>>562
コンパイラが無理なら実行時にメモリ拡張すればいいだけ
そういうことも思いつかないから、その程度止まりなんだよw
575:デフォルトの名無しさん
19/11/07 04:08:50 +N3PsKU8.net
>>563
それはお互い様です。
576:デフォルトの名無しさん
19/11/07 04:11:41.18 +N3PsKU8.net
>>564
それでは明らかに遅く、数値計算、コンパイラ、翻訳、AI、データ処理、
OSなどの作成には向いていない言語になるでしょう。
577:デフォルトの名無しさん
19/11/07 04:12:20.64 sEmiRyTj.net
大胆に変数はすべて128bitしかないという言語だって考えられる
最大 340282366920938463463374607431768211456 までしか扱えないが
578:デフォルトの名無しさん
19/11/07 04:13:03 sEmiRyTj.net
>>566
そんな言語が今はたくさんあり実用化されています。
579:デフォルトの名無しさん
19/11/07 04:17:30.53 +N3PsKU8.net
>>567
64BIT整数ですら効率を考えて使用を躊躇する世界に我々はまだいます。
あなたが普段使っているコンパイラも、非常に細かい高速化を施して
あるので快適に使えているだけで、PythonやJavaScript、Rubyなどの
動的言語では達成できません。
例えば、JavaScriptの遅さは、全てdouble型にして、変数は、全てheapメモリ
から確保することが主原因の一つです。それだけでC++の数十倍以上遅くなっています。
あなたの考えてことは、JavaScriptをさらに遅くするような結果となるでしょう。
580:デフォルトの名無しさん
19/11/07 04:18:51.44 +N3PsKU8.net
>>568
有りますが、C/C++、Java、PythonやJavaScript、Ruby、Java、Kotlinなどの
メジャー言語ではそのような方針はとっていません。
581:デフォルトの名無しさん
19/11/07 04:23:37 +N3PsKU8.net
>>564
「その程度どまり」と言いますけど、あなたは私の作品を全く見てませんね。
全く発表してませんから。
582:デフォルトの名無しさん
19/11/07 05:42:32.39 xrNXmkmc.net
スレ違いのバカ二人はどこかよそに行って気の済むまで殴り合ってきてくれ
583:デフォルトの名無しさん
19/11/07 06:22:21 D8b5RtWG.net
> つまり全体が64bitで、仮数部が52bitです。仮数部が52bitなので、
> Numberを用いて正確に表せる最大の整数は、53bitで表せる数から
> 1引いた数になり、(2^53 ? 1) = 9007199254740991となります。
ひどい説明だな
どのくらいひどいかというと
WM_SYSTEMMENU並み
584:デフォルトの名無しさん
19/11/07 11:03:05.72 JQdG/Jj/.net
公共の場で変数型のピロートークですか
585:デフォルトの名無しさん
19/11/07 11:05:56.88 dB1QBG
586:Xo.net
587:デフォルトの名無しさん
19/11/07 11:27:25.53 nSoHFrko.net
>>575
NULLは0だから~
site_tはどうせintだから~
こういう馬鹿なハケンが一人いると崩壊するよね
588:デフォルトの名無しさん
19/11/07 12:11:51.38 sEmiRyTj.net
とか言うやつほどnullptrのことを知らなそうw
589:デフォルトの名無しさん
19/11/07 12:17:00.95 9pMbL+ZJ.net
(´∀`)<ぬるぽ
590:デフォルトの名無しさん
19/11/07 17:55:20.14 7K0XtVuo.net
#ifdef _WIN64
#define BOOLX64 INT_PTR
#else
#define BOOLX64 BOOL
#endif
BOOLX64 CALLBACK Dlg(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
こうやって回避してるわ
591:デフォルトの名無しさん
19/11/07 18:14:03.25 2gAeIIzZ.net
Windowsのデータ型だけのヘッダファイルって無いかしら?
データ型はあちこちで使わざるを得ないから、あちこちでincludeしたいけど、
APIのヘッダファイルはincludeしたくない。
APIを直接使うのは面倒だから、全部ラップしてるんだよね。
だから他からは使えないようにしたい。
592:デフォルトの名無しさん
19/11/07 19:03:13.60 +mjs9icr.net
データ型もラップしとけよ
593:デフォルトの名無しさん
19/11/07 19:07:36.74 2gAeIIzZ.net
>>581
どうやってラップすればいいですかね?
594:デフォルトの名無しさん
19/11/07 19:16:08.80 2gAeIIzZ.net
なんとなくわかったからいいやw
595:デフォルトの名無しさん
19/11/07 21:31:30.10 6aSe0RTj.net
横にそれるが
データ型もAPIの一部だと思ってるがあってるよな?
596:デフォルトの名無しさん
19/11/07 21:47:07.60 nSoHFrko.net
アプリケーション独自の型なんか知りませんがな
597:デフォルトの名無しさん
19/11/07 23:33:07.15 rEYaLqlI.net
個人的には構造化したほうがやりいいかな
598:デフォルトの名無しさん
19/11/08 03:59:17.05 ksOnEph7.net
お前らMFCでも使ってろ
599:デフォルトの名無しさん
19/11/08 04:54:11 2aYByRbi.net
普通のアプリならMFCが一番だと思うんだがなあ
変に角を丸くするとか透明にするとかされても使いにくいだけだろうに
600:デフォルトの名無しさん
19/11/08 05:57:08.22 bt2cbsd4.net
むしろMFC = 角を丸くするとか透明だろ
MFC以外でそんなの見たことないわw
601:デフォルトの名無しさん
19/11/08 07:30:44.18 D1bzmSlR.net
あんまりMFC関係なくね?
WS_EX_LAYEREDもSetWindowRgnもAPIを陽に意識して使うわけで
MFCはラッパーとしての薄さがありがたいだけやん
602:デフォルトの名無しさん
19/11/08 07:52:07.38 tDaXxZK7.net
MFCはかゆいところに手が届かないからな
廃れたWTLがいい
603:デフォルトの名無しさん
19/11/08 09:32:12.24 MipGbP9q.net
>>591
WTLは廃れてないよ。今もちゃくちゃくと最新コードがコミットされ続けている。現時点で2019年11月3日(日)が最終更新。
URLリンク(git.code.sf.net)
604:デフォルトの名無しさん
19/11/08 11:37:03.54 bt2cbsd4.net
廃れたかどうかは、使ってる人がいるかどうかであって
作っている人がいるかどうかではない
605:デフォルトの名無しさん
19/11/08 12:13:14.99 xtk88Sle.net
俺が使ってるから廃れてないぞ
606:デフォルトの名無しさん
19/11/08 12:17:45.01 2aYByRbi.net
>>594
ちょと見せてみて?
607:デフォルトの名無しさん
19/11/08 13:27:31.55 D1bzmSlR.net
あんまり不人気だと
供給側も撤退を考える要素が色々出てくるだろ
608:デフォルトの名無しさん
19/11/08 13:56:39.50 1R79qYgq.net
ワイの中では永遠の大人気、comctl32.dllをずっとverupして欲しいと願います
1803でも修正するくらいだしさ
609:デフォルトの名無しさん
19/11/08 21:00:43.55 lpVjWTGo.net
TOPMOST ウィンドウがほかのウィンドウの背後に移動してしまう
URLリンク(social.msdn.microsoft.com)
610:デフォルトの名無しさん
19/11/08 21:14:49.46 sQQR9KNr.net
TOPMOST同士があるからな
611:デフォルトの名無しさん
19/11/09 13:55:21.92 hHKZwsDl.net
タスクマネージャもよく後ろに移動する時あるけど何なのあれ
612:デフォルトの名無しさん
19/11/09 14:13:06.87 BZG37V3w.net
API設計が糞だから
皆がみんなTOPを取りたがって
奪い合いになる
613:デフォルトの名無しさん
19/11/09 15:42:27.57 01iIJK4d.net
タスクバーより手前にくる時もある
別件だが
タスクマネージャのCPU使用率が高くなってグラフが高速になるのもある
614:デフォルトの名無しさん
19/11/09 17:34:31.94 GyhiHYRD.net
もう記憶の彼方ですがディスプレイメモリのアドレスって直で取れましたっけ?
毎回メモリ確保してDIB作って画面のHDCからコピーしてっやらないと駄目すかね
それなら諦めてGetPixel使いますが
615:デフォルトの名無しさん
19/11/09 17:44:43.05 HanEs9+F.net
アドレスを直で、の正確な意味がわからんが基本あれGPUにあるからね
Direc3Dテクスチャで良いならIDXGIOutputDuplicationから取れるけど
616:デフォルトの名無しさん
19/11/09 17:56:17.05 HyuDdIlK.net
TOPMOSTなんて思い上がった言葉ですぐ気がつけよ
スレッドの優先度でさえ最優先ではなくタイムクリティカルだろうが
617:デフォルトの名無しさん
19/11/09 18:03:02.50 GyhiHYRD.net
>>604
こりゃ失礼、ありがとうございます
なんか昔いじった気がしたんですが、あれはオフスクリーンバッファだったか……
PC98じゃあるまいし、言われて見りゃ無理くさいすね
画面上の変化を監視して作業自動化する様なのを頼まれたのですが、
監視するべきは数ピクセルなので、おとなしくGetDC(nullptr)からGetPixelします
618:デフォルトの名無しさん
19/11/09 21:35:29.14 hHKZwsDl.net
GetPixelって内部でどうやってるのかな
毎回呼び出すと遅いんだよね
619:デフォルトの名無しさん
19/11/09 22:19:46.16 HyuDdIlK.net
故意に減速してるようだね
ビットマップオブジェクトにキャッシュしといて
そこから取ると普通の速度になる
620:デフォルトの名無しさん
19/11/09 22:41:44.97 e6n/6jzv.net
gnsk
621:デフォルトの名無しさん
19/11/09 23:25:01.42 HanEs9+F.net
仮にVRAMから1ピクセルだけ毎度読み戻してたらそらクソ重いやろとは思うが
今のDWMってGDI周りの扱いがどうなってんのかよくわかんねえからな
622:デフォルトの名無しさん
19/11/10 06:21:08.90 nWjdF62e.net
XPでは爆速だったのがVistaから突然遅くなった
623:デフォルトの名無しさん
19/11/10 09:02:24.14 R9o6dqtJ.net
TOPMOSTの競合の話ではない
"ごく稀に TOPMOST ウィンドウが通常のウィンドウの背面に移動してしまう現象が発生するとお問い合わせいただいています。"
"•Windows 8.1 以降、Windows 10 でも数十回に 1 回程度この現象が発生します。"
624:デフォルトの名無しさん
19/11/10 09:11:24.47 IRh+3wYd.net
>>611
メモリー積め
ってかPC買い替えろ
625:デフォルトの名無しさん
19/11/10 09:22:52.91 nWjdF62e.net
>>613
GetPixelの話だよ?
626:デフォルトの名無しさん
19/11/10 10:13:14.69 2HW6YGp5.net
それはAeroのせいかも知れない。
色々なアルゴリズムがあるが、特に「半」透明の処理は、後ろから順にやって
いかないので、Windowが重なっている場合、その内の一つでも色が変化した場合、
その場所に重なっている全ての Window の色が分からないと、画面に表示される
色が計算できない。Windowsは、昔はメモリが少なかったので、伝統的には、
各Windowが仮想VRAMを持たない設計になっていた。それと絡んで、Windowの
ピクセルの色を取得するには、そのWindowにWM_PAINTメッセージを送って、
アプリプログラマが作成したOnDraw()などの関数に本質的にはそのWindow全体の
再描画をさせるのが伝統的やり方。
このやり方に従っているなら、ディスプレイ上の最終的な色を取得したい場合、
例えたった1点の色であっても、非常に沢山のCPUパワーを必要としてしまう可能性が
ある。仮想VRAMにキャッシュしておけば高速化できる可能性は高いが。
627:デフォルトの名無しさん
19/11/10 10:14:06.88 2HW6YGp5.net
>>615
誤:色々なアルゴリズムがあるが、特に「半」透明の処理は、後ろから順にやっていかないので、
誤:色々なアルゴリズムがあるが、特に「半」透明の処理は、後ろから順にやっていかないといけないので、
628:デフォルトの名無しさん
19/11/10 10:48:16.19 IRh+3wYd.net
>>614
ああすまん、それはVistaから導入されたDesktop Window Managerのせいやね
Windows 7から改良されたからマシになってるはず
629:デフォルトの名無しさん
19/11/10 11:26:39.91 GjrjejsC.net
aeroで半透明になるから描画に時間かかる←わかる
だからgetpixelに時間かかる←う~ん
呼ばれるたびにDCに対して描画させてピクセル取り出してるのならわかるけどさ
630:デフォルトの名無しさん
19/11/10 11:30:44.05 42Oft6n8.net
getdc(0)だと全部の合成してからビデオメモリからとってくるから遅い
個別ウィンドウ指定だとウィンドウ下のとかからも取れる上に早い
個別の描画内容は多分システムメモリ上にある
大体そんなような動作っぽい
getpixel使わないからbitbltの挙動だけど多分おんなじじゃないかな
631:デフォルトの名無しさん
19/11/10 12:37:49.81 R9o6dqtJ.net
> 呼ばれるたびにDCに対して描画させてピクセル取り出してるのならわかるけどさ
1x1のビットマップに転送して取得しているのでxpでも遅かった
632:デフォルトの名無しさん
19/11/10 13:55:52.22 fP398yW4.net
>>615
> そのWindowにWM_PAINTメッセージを送って、
> アプリプログラマが作成したOnDraw()などの関数に本質的にはそのWindow全体の
> 再描画をさせるのが伝統的やり方。
> このやり方に従っているなら
もうやってないというか「重なり」なんて概念がないよ。
動画再生して、他のウインドウの後ろに隠して、
その状態でタスクバーにマウス乗せてみ
画面に表示されてなくても、ウインドウの中身は更新されてるからさ。
最小化したときはアプリ側で描画止めてるソフトが多いけど
それでも最小化した時点の縮小画面は見れるし
Windows VistaのAeroから変わってるんだわ。
半透明処理もGPUにやらせてるからWindows 2000の頃と違い格段に軽くなってる。
633:デフォルトの名無しさん
19/11/10 13:57:05.17 fP398yW4.net
>>618
× aeroで半透明になるから描画に時間かかる←わかる
○ 半透明処理はCPUで行っていて時間がかかる処理だったがああ
GPU処理をするようになって軽くなったから、Aeroで半透明が採用された
634:デフォルトの名無しさん
19/11/10 14:11:16.15 hRll0rFL.net
>>606
GetDC GetPixel で取れない場合
URLリンク(maverickproj.web.)<)はて?.com/entry/20101209/1291890231
URLリンク(codeday.me)
635:デフォルトの名無しさん
19/11/10 14:11:28.61 O4L9SaaX.net
GPUを使うようになった時点で、GetPixelのような処理はGPU側に問い合わせを送って
その結果を返してもらうという形になったから、遅くなるというのはあり得る話。
636:デフォルトの名無しさん
19/11/10 14:17:16.14 fP398yW4.net
昔はVRAMにあったものがGPUのメモリにあるわけだからね。
通常の描画処理は、CPUからは命令だけ投げてあとはGPUが処理するので
GPU内で完結するから速いんだよ。でもデータを取ってきたりするのは負荷が高い。
だからピクセル単位でとってくるよりも、一定の範囲をごっそり取るほうが
GPUに出す命令は減るから結果として速くなる。
637:デフォルトの名無しさん
19/11/10 15:48:36.60 GjrjejsC.net
でもaero切ると描画速いよw
GPU使おうが何しようが処理が多いのは変わらないし時間かかるのも変わらない
638:デフォルトの名無しさん
19/11/10 15:51:41.38 u8+xJCBj.net
同じことをするならGPUを使ったほうが速いんだよ。
Aeroを切るとバックグラウンドウインドウの描画をしなくなるから速く感じる。
それは、それまでのOSの設計の正しさ、GPU性能が低い場合の正しさを証明してるわけ
639:デフォルトの名無しさん
19/11/10 16:09:15.77 GjrjejsC.net
もう滅茶苦茶だなw
そりゃ同じことをするなら一般的にはGPUが速いよ
でも半透明処理の有無の話をしてるんだから、同じ処理での比較じゃない
半透明処理をしなければそれだけ処理が減るんだから一般的には速くなる。体感の話じゃない
昔と比べて処理が速くなっただなんて歴史はどうでもいいんだよ
で、getpixel使うときはメモリ確保してそこにsrccopyするだろ。この時点で描画なんかは終わってる
getpixelはコピーされたメモリ内容を読みだして過去のピクセルを返す処理のはず
リアルタイムのピクセル情報返すってなら半透明で遅くなるのもうなづけるけどそうじゃないだろ
640:デフォルトの名無しさん
19/11/10 16:51:52.04 invbJGJm.net
Vistaから7でウィンドウ毎のシステムメモリのバッファを削減した時も
トレードオフとしてリードバックが頻発するシナリオでは従来よりペナルティがあると言ってたな
10でもDXGIのフリップモデルが増えたりFCUでGetPixelがさらに重くなる現象もあったりと今でも色々弄ってそう
ウィンドウからGetPixelする時とデスクトップからGetPixelするのではなんか事情が違うのかも知らんけど
641:デフォルトの名無しさん
19/11/12 19:29:29.86 fqP05o8Z.net
HBITMAPの画像を上下反転や左右反転や90度単位の回転をする場合、やはりPlgBltでしょうか。
それとも、それらに特化したAPIでもありますでしょうか。
642:デフォルトの名無しさん
19/11/12 19:33:32.19 R9AMJEW8.net
>>630
確か、BitBlt系の関数は選択肢が沢山あって、PlgBltだけではなかったはず。
643:デフォルトの名無しさん
19/11/12 20:44:06.06 mKGma296.net
>>630
SetWorldTransform
644:デフォルトの名無しさん
19/11/13 10:09:58.07 OceCV+VL.net
DirectX使えば自由
645:デフォルトの名無しさん
19/11/19 11:11:30.06 NEogfZFa.net
いいかい学生さん、
「令和元年12月2n日」をな、「令和元年12月2n日」をはみ出さずに表示できるくらいになりなよ。
それが、人間えら過ぎもしない貧乏過ぎもしない、ちょうどいいくらいってとこなんだ。
646:デフォルトの名無しさん
19/11/25 20:46:42.81 0q+n1Hac.net
Windows10 での symlink
URLリンク(social.msdn.microsoft.com)
647:49
19/11/25 22:38:11.66 dg2mzwJY.net
>>630
GDIPlusは駄目なん?
648:蟻人間
19/11/25 22:53:59.71 S0HuE7/3.net
StretchBltでマイナスの値を指定するとミラーリングできるらしい。
URLリンク(forums.codeguru.com)
649:デフォルトの名無しさん
19/11/26 00:15:01.51 FXTOqUMb.net
どっかで阿鼻叫喚が始まる予感
URLリンク(twitter.com)
(deleted an unsolicited ad)
650:デフォルトの名無しさん
19/11/26 09:59:26.09 c3SEnPpX.net
お
いよいよcp932ともおさらばか
試行錯誤はあっても良い流れは認めよう
問題が出たら出たで治せば良いんだから
治す範囲がどんだけあっても諦めるな
なにもやらないよりまし
651:デフォルトの名無しさん
19/11/26 10:49:04 LSm6MssX.net
一年前以上からあるオプトイン設定の話だが
652:デフォルトの名無しさん
19/11/26 11:36:11 fVihpbt7.net
>>639
cp932使ってる古いアプリは、この設定にすると
動かなくなるだけ。つまり捨てるしか無い。
cp932を使ってる古いアプリを捨てるって話なら、
ずっと前から捨てられる。
Windows自体はコマンドプロンプトも含めて
ずっと前から完全にUnicode対応
653:デフォルトの名無しさん
19/11/26 11:45:03.56 fVihpbt7.net
「ワールドワイド言語サポートで Unicode UTF-8 を使用」をするとどうなるか?
Unicode対応のアプリ・・・設定とはとは無関係にUnicode対応
Unicode非対応のアプリ・・・
日本語アプリはcp932でないと動かない。
ASCIIしか使えないアプリはcp932でもUTF-8でも動く。
UTF-8に対応したアプリは現時点ではまず存在しない。
この設定は今後UTF-8に対応したアプリが作られたときのための設定
この設定はデフォルト値でしかないのでUTF-8にしてもchcp932相当のことをすればcp932アプリは動く
互換モードの設定でコードページを指定できるようになるかもしれないね
654:デフォルトの名無しさん
19/11/26 11:55:01.45 sOexhNbU.net
コマンドプロンプトは怪しいな
655:デフォルトの名無しさん
19/11/26 11:55:11.67 dbvsSdaZ.net
いまだにファイルパスがユニコード対応してないアプリあるからな。氏ねと言いたくなる
656:デフォルトの名無しさん
19/11/26 11:57:13.82 fVihpbt7.net
>>643
コマンドプロンプトはUnicode対応だよ
cp932の状態でもdirでUnicodeのファイル名表示できてるじゃん
657:デフォルトの名無しさん
19/11/26 12:05:13.97 sOexhNbU.net
chcp 65001
でバグバグになるのいつ治るの
658:デフォルトの名無しさん
19/11/26 12:08:00.36 fVihpbt7.net
>>646
表示が崩れる問題なら直ってる。
動作自体なら以前から問題なく動いている。
659:デフォルトの名無しさん
19/11/26 12:30:13.72 4pvDP8OD.net
>>641
こういう流れになってますが
URLリンク(twitter.com)
動かなくなるんじゃなくて、破壊されて動かなくなるのが正解なのでは?
(deleted an unsolicited ad)
660:デフォルトの名無しさん
19/11/26 12:31:57.39 Yz+apKYY.net
>>648
破壊されて動かなくなるとは、一体どこにそんな証拠があるのでしょうか?
661:デフォルトの名無しさん
19/11/26 12:39:10.74 Yz+apKYY.net
実際に試した人たち
URLリンク(qiita.com)
URLリンク(adatarag3.blogspot.com)
URLリンク(chiyosuke.blogspot.com)
「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」から
「日本語(日本)」に戻して文字化けが直った人
URLリンク(kuronyankotan.com)
662:デフォルトの名無しさん
19/11/26 12:50:39.23 4pvDP8OD.net
全てのA系APIがUTF-8をI/Oするんじゃろ?
非対応アプリがテキスト系ファイルI/Oしたら死ぬのでは?
663:デフォルトの名無しさん
19/11/26 13:01:13.64 Yz+apKYY.net
>>651
WindowsはUnicode対応なので関係ない話
非対応アプリが動かなくなるだけ
664:デフォルトの名無しさん
19/11/26 13:03:50.25 Yz+apKYY.net
だいたい全てのA系APIがUTF-8をI/Oしたからって
何の問題があるんだ?
今までだってそれは、全てのA系APIがSJISとかASCIIとか
韓国や中国のなにかに変更するスイッチだっただろうと
そこにUTF-8が増えただけに過ぎない。
665:デフォルトの名無しさん
19/11/26 13:06:07.48 VJ34cQn0.net
Windows自体は昔からUTF16だと思ってたんだけど、
いつのまにかUTF8になってたの?
666:デフォルトの名無しさん
19/11/26 13:08:57.76 njyF587z.net
A系
667:デフォルトの名無しさん
19/11/26 13:12:06.34 Yz+apKYY.net
>>654
Windows NTはUTF-16だよ?
この設定はUnicodeに対応してない古いWindows 9xアプリのための
互換モード設定だから
将来的に互換モードとして使っていたこの機能をUTF-8アプリの
移植用に利用しようとか考えてるんでしょ? Linuxアプリのこともあるし。
WindowsネイティブのUnicode(UTF-16)モードとは別に
UTF-8モードが追加されたってだけの話
668:デフォルトの名無しさん
19/11/26 13:29:27 4pvDP8OD.net
>>652-653
>>651
A系アプリの問題の話なのに、なんでWindows自体の話になるの?
てか、>651のみならずリンク元の流れすら読んでない感じ?
まあ実際俺も試したわけじゃないけど、書いてることが事実だとすると
設定戻してもファイルは戻らんからA系アプリは死んだままになるぞ
669:デフォルトの名無しさん
19/11/26 13:35:05 Yz+apKYY.net
> A系アプリの問題の話なのに、なんでWindows自体の話になるの?
A系アプリってなんだ? A系っていうのはWindows APIのAPIの末尾のAだろ
Windows APIの話なんだからWindowsの話だろ?
Windows自体はWindows APIのW系(Unicode)を原則として使用してるが
古いアプリのためにA系のAPIも提供してる。Windows はW系を使ってるので
「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」に
したところで何の影響もない。影響があるのは古いアプリのみ
> 設定戻してもファイルは戻らんからA系アプリは死んだままになるぞ
それならデータ消せばいいだけだろ。アプリの都合なんか知るか
670:デフォルトの名無しさん
19/11/26 13:46:31 dAEqoOXB.net
朝鮮人は息を吐くように嘘を吐く
671:デフォルトの名無しさん
19/11/26 13:47:38 4pvDP8OD.net
>>658
>それならデータ消せばいいだけだろ。アプリの都合なんか知るか
だからそのアプリの話を一貫してしてるんだけど?
アプリのデータを消す?
大事な既存データでも消したらOK? 馬鹿? 仕事したことない?
システムプロファイルも全て戻らないということなので、戻したら動く保証はどこにもない
何度も言うけど、A系アプリの話だからな?
例えばCの話をしてるのにJaveや.NETが今は主流だからCなんて知らん
って的外れなこと言ってるだけだお前は
672:デフォルトの名無しさん
19/11/26 13:55:16 Yz+apKYY.net
>>660
何が言いたいのかわからん。
アプリが動かなくてなってもWindowsは問題なく動くだろ
SJISにしか対応してないアプリのコードページを変えてデータが壊れたって
それはアプリの動作保証外の使い方をしたからってだけで
OSのせいでもアプリのせいでもない。
データ消えたら困るなら保証外の使い方をするなよ。
バックアップぐらい取れ。
673:デフォルトの名無しさん
19/11/26 13:58:46 dAEqoOXB.net
役に立つ人柱はここか
URLリンク(chiyosuke.blogspot.com)
URLリンク(srad.jp)
674:デフォルトの名無しさん
19/11/26 14:08:16 dbvsSdaZ.net
英語圏の人間向けであって、日本人が使うオプションじゃないからな
大手のソフト含めて対応してない(設定変えるとおかしくなる)のは山ほどあるよ
675:デフォルトの名無しさん
19/11/26 14:13:24 JyI6kWkc.net
>>660
君はちょっと落ち着け
>>648の内容はシステムの設定を元に戻せないという話であって
アプリの話じゃないだろ
そして
>大事な既存データでも消したらOK? 馬鹿? 仕事したことない?
だったらβの機能なんか使うなよ、で終わりだよ
βじゃなくなるときに、キレイに全部戻せるようになってるか、
SJISアプリは切り捨てますって発表があるかのどっちかだろ