[過去ログ] Win32API質問箱 Build125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
442
(1): ◆QZaw55cn4c 2019/10/09(水)21:21 ID:ggd9iNPq(1/4) AAS
質問です。
SetFilePointer()
外部リンク:docs.microsoft.com
を FILE_END で使ったことのある方はおられますか?

第3引数 PLONG lpDistanceToMoveHigh を 0 (そして第 2 引数 LONG lDistanceToMove も 0 )で使うと、FILE_END であっても当のファイルが 4GB 以上の場合にはポインタがファイルの最後に設定されない現象があるようです
この場合ダミー変数(毎回 0 を投入している)を設けて lpDistanceToMoveHigh にそのアドレスを設定すると FILE_END がその本来の意味を示すようにみえます。
推量形で記述しているのは、私の環境(mingw64-gcc)ではコンパイラのオプティマイザが過剰に効いている可能性があり -O0 でコンパイルしてはじめて、ある程度この現象が確認できたという事情のためです。

これは一般的な話なのでしょうか?
443
(1): ◆QZaw55cn4c 2019/10/09(水)21:24 ID:ggd9iNPq(2/4) AAS
>>442
ソースを晒します
外部リンク:ideone.com
444
(2): 2019/10/09(水)21:49 ID:75Pp/Qaq(1) AAS
longの場所になぜintを使う
445
(2): ◆QZaw55cn4c 2019/10/09(水)22:06 ID:ggd9iNPq(3/4) AAS
>>444
printf("sizeof(int):%d, sizeof(LONG):%d\n", sizeof(int), sizeof(LONG));
$ ./a.exe
sizeof(int):4, sizeof(LONG):4
446
(1): 2019/10/09(水)22:12 ID:wmrCsqX1(1) AAS
lpDistanceToMoveHighがNULLの時のFILE_ENDは単純にファイルサイズも下位32bitだけ見て処理してそう
でかいファイル扱うなら素直にSetFilePointerEx使った方がよさげ
447
(1): ◆QZaw55cn4c 2019/10/09(水)22:39 ID:ggd9iNPq(4/4) AAS
>>446
*Ex には気がつきませんでした

昔書いたものをみると
s1 = GetFileSize(f, &s2);
SetFilePointer(f, s1, (PLONG)&s2, FILE_BEGIN);
WriteFile(f, p, strlen(p), &n, 0);
ってやっていましたから、どうも、昔も同じところで嵌ったらしく、お茶を濁す方法まで昔と同じのまま、しかもその記憶が今はない…
もうなにもかも忘れてしまった…

コメントありがとうございました
448: 2019/10/15(火)14:52 ID:iJLx9DXs(1) AAS
書き込むなよクソコテの分際で
449: 2019/10/15(火)19:34 ID:6pml1OhP(1) AAS
みんなクソだと思ってたけど
450: 2019/10/15(火)20:02 ID:M5SL5EtX(1) AAS
そうなんだ
病気だね
451: 2019/10/15(火)20:59 ID:H14rNUWV(1) AAS
こんな場所でこんなクソ書き込みしてるくせに自身のクソさ加減に気付かないなんて病気だぞ☆
452: 2019/10/15(火)22:41 ID:72mqelru(1) AAS
そうなんだ
病気だね
453: 2019/10/17(木)09:57 ID:z4eLhP/Z(1) AAS
PCが複数のネットワークにつながっています。
IUPnPDeviceFinderで検索するネットワークを指定するのはどうしたらいいのでしょう?
454: 2019/10/21(月)22:12 ID:EXgPOVjA(1) AAS
CSPのハンドルであるHCRYPTPROVなんだけど、
これってスレッドセーフ?
具体的には、同じハンドル使って別スレッドで同時にCryptGenRandom()呼んでも大丈夫なものなの?

Goのcrypt/randが排他せずに同じハンドルで呼んでいて気になったんで
455
(5): 2019/10/21(月)23:03 ID:xGMxn7s7(1) AAS
7から10にしたらこんな感じで画面外の領域が描画されなくなってしまいました 画像リンク[png]:i.imgur.com
Windows10で画面外の領域を描画させるような関数か方法はありますか?
InvalidateRect、UpdateWindow、RedrawWindow、PrintWindow、DwmGetDxSharedSurfaceは試しましたが無理そうです
ソースです 外部リンク[html]:dotup.org
456
(1): 蟻人間 ◆T6xkBnTXz7B0 2019/10/21(月)23:12 ID:LVq8IpRv(1) AAS
>>455
CreateDC("DISPLAY", ...)
CAPTUREBLT
457: 2019/10/22(火)00:53 ID:VVF85bpK(1/6) AAS
>>456
CreateDCではディスプレイに表示されてる領域のデバイスコンテキストしか取得できませんでした
ウィンドウの外ではなく、ディスプレイの外に出ている領域を取得したいのです
CAPTUREBLTは単体だと真っ黒、SRCCOPYと一緒に指定してもSRCCOPY単体と変化はありませんでした
458
(1): 2019/10/22(火)01:13 ID:tgq7+oc3(1/3) AAS
455に貼ってるスクショでは単に5chのページが途中までしか描画されないように
見えるだけで、"画面外の領域"の意味がよく分からんが・・・・

それはともかく、実は管理者権限で実行するといけちゃうとか?
459: 2019/10/22(火)02:01 ID:VVF85bpK(2/6) AAS
>>458
別アプリ(画像ではブラウザ)をSetWindowPosでウィンドウの一部がディスプレイの外に出る位置に移動して
そのウィンドウの内容をBitBltで取得して自分のウィンドウに表示してるんですが
ディスプレイに表示されてないディスプレイの外に出た部分が真っ白になってしまいます
すいません、説明下手なのでソースを見てもらえると助かります
460: 2019/10/22(火)02:29 ID:rKj5dIYC(1) AAS
まともに説明もできないソースだとそもそも何したいのかわからないほどのバグな気がする
461
(1): 2019/10/22(火)02:57 ID:tgq7+oc3(2/3) AAS
対象となるアプリのスクショを取るようなアプリでOK?

面倒なので試さないけど、単に画面外に描画しても無駄なので描画してない
だけのような気がするが、その理屈なら画面外ではなくその上に別ウィンドウを
表示させるとどうなるんだろうなってことと、対象アプリがブラウザ以外だと
どうなるんだろうなってことなど突き詰めたい項目が(面倒くさくなり以下略
462
(1): 2019/10/22(火)09:19 ID:cLGxu2gX(1/4) AAS
Windows7でaero有効なら画面に見えていないウィンドウからbitbltできるが、10でaero廃止されたのが
関係しているのかな。
10でもタスクバーのウィンドウプレビューは表示されるから7と同じようにできてもいいとは思うが。
463: 2019/10/22(火)09:22 ID:swuil85R(1) AAS
10でも取れるぞ。これは確実
ソース見てないから原因はしらね
464
(2): 2019/10/22(火)12:27 ID:VVF85bpK(3/6) AAS
>>461
OKです
デスクトップのデバイスコンテキストから転送すると上にある別ウィンドウの画像込みになりますが
対象アプリのデバイスコンテキストから転送すると対象アプリの画像だけを取得できます
対象はブラウザ以外でも描画されない部分が白か黒かの違いだけです 画像リンク[png]:i.imgur.com

>>462
プレビューでも描画されないです 外部リンク:imgur.com
465
(1): 2019/10/22(火)13:41 ID:fxbuxtP/(1/2) AAS
画面コピー貼る前にソース貼れ
466
(1): ◆QZaw55cn4c 2019/10/22(火)13:44 ID:afWm6mlf(1) AAS
>>464
早く解決したいのだったらソースを貼らないと
467
(1): 2019/10/22(火)13:47 ID:PRXTlxOV(1/4) AAS
そのコードだとキャプチャできないのは確認したけどプレビューまではそんな風にならんな
なんとなくOS自体の省力設定に連動して
OSがクリップしてる or アプリ自身のクリップを引き起こしてる臭いけど

新しめのキャプチャAPIだと↓

外部リンク:docs.microsoft.com
468: 2019/10/22(火)13:55 ID:PRXTlxOV(2/4) AAS
補足、そっからじゃC++のデスクトップアプリからの使い方がわかんねえな

外部リンク:github.com
469: 2019/10/22(火)14:05 ID:VVF85bpK(4/6) AAS
>>465
>>466
>>455 で張ってますが落とせないとかありますか?
別のろだで用意したほうがいいですか?

>>467
うちだと実機でも仮想PCでもプレビュー欠けてるんですよね
仮想PCに新規でWin10入れて確かめてみます
C++のソースありがたいです。試してきます
470: 2019/10/22(火)14:09 ID:fxbuxtP/(2/2) AAS
一度memdcにコピーする手間があったような
471
(1): 2019/10/22(火)14:32 ID:cLGxu2gX(2/4) AAS
俺も>>455と同じようなキャプチャソフトを自作してたんで今win10で試してみたが
ウィンドウが画面外にはみ出しているからといってキャプチャできないことはないな。
プレビューが欠けるということもなかったが。

>>464
プレビューが欠けるのが特定のアプリだけならそのアプリの問題だろうから
あきらめるしかないだろうねえ。
どのアプリでも欠けるとしたらwindowsの設定かGPUの問題かなにかかな。
472: 2019/10/22(火)15:53 ID:VVF85bpK(5/6) AAS
クリーンインストールWin10でも症状変わらず
ScreenCaptureforHWNDも変わりませんでした

>>471
画面内で表示してから画面外に移動してキャプチャしてませんか?
キャプチャはできても更新がされない感じなので
移動してから内容更新するとキャプチャ画像とプレビューがこうなります 外部リンク:imgur.com
473
(1): 2019/10/22(火)16:05 ID:cLGxu2gX(3/4) AAS
それをedgeとかでやっても同じなん?
動画を表示していもプレビューは随時更新されるが、ふつう。
474
(1): 2019/10/22(火)16:09 ID:tgq7+oc3(3/3) AAS
他のキャプチャソフトではどうなるの?っと
475
(1): 2019/10/22(火)17:18 ID:An+rmEaC(1/3) AAS
コンパイラ設定がxp互換だと撮れないってのもあるな
476
(1): 49 2019/10/22(火)17:33 ID:8AVeU+tz(1) AAS
そもそも何がしたいのか分からない。
477
(1): 2019/10/22(火)18:06 ID:PRXTlxOV(3/4) AAS
こっちで試してる限りでもいまいち挙動に一貫性がなくて確証は無いんだが
そのWaterfoxってのだけ更新時に画面外のレンダリングを省いてるのはプレビューで確認できたんで
検証するのにそれは外した方がいいな

画面外に出たアプリのWM_PAINTでrcPaintが差分を返すのは正常な挙動なので
アプリ自体の画面更新と内容の取得のタイミングによってはプレビューがそうなる理屈は説明できる
キャプチャに用いているBitBltとも内容が異なるのはGDIとDWMでは見てるバッファが違うのかもしれない

ただ全部のアプリがそうなるとなるとこっちじゃ現象自体が確認できないのでなんとも
478
(1): 455 2019/10/22(火)21:17 ID:VVF85bpK(6/6) AAS
>>473
>>477
Firefox、Waterfox、Chrome、VisualStudio2019、MPCBE、ペイント、メモ帳
画面外に出た部分はプレビュー更新されないし、BitBltも更新されてない画像しか取れない

Edge、フォト
画面外に出た部分もプレビュー更新される、BitBltでは画面内でも画像が取れない

IE
画面外に出た部分もプレビュー更新される、BitBltでは画像が取れたり取れなかったり不安定

動画です 外部リンク[html]:dotup.org

>>474
省5
479: 2019/10/22(火)21:59 ID:JI3aTgMm(1) AAS
ディスプレイ外にはみ出した窓があってそのはみ出したリージョン内で表示更新かかってて
そいつを ALT+PrtScr でキャプチャしてもうまく取れてないなら厳しいんでないかな
480: 2019/10/22(火)22:11 ID:An+rmEaC(2/3) AAS
俺自作のソフトはキャプチャできるが、ALT+PrtScrはキャプチャできん@win10
481: 2019/10/22(火)22:35 ID:YGRhwcPr(1) AAS
グラボに依存とか?
482: 2019/10/22(火)22:54 ID:cLGxu2gX(4/4) AAS
>>478
なるほど、ペイントで現象確認した。
GPUリソースを食わないよう改善した結果とかかねえ。
483: 2019/10/22(火)22:56 ID:HSQTG8Jj(1) AAS
どうなんだろう。BitBlt(,,,SRCCOPY | CAPTUREBLT) しか方法ないのかね。
484
(1): 2019/10/22(火)23:00 ID:GE3t6WX1(1) AAS
2段階のアクセラレータはどのようにやるのがいいの?
Visual Studio のCtrl+K Bみたいな・・・
485: 蟻人間 ◆T6xkBnTXz7B0 2019/10/22(火)23:03 ID:QN5InCe0(1) AAS
>>484
アクセスキーテーブル切り替えか、
状態遷移だろうよ。
486: 2019/10/22(火)23:10 ID:PRXTlxOV(4/4) AAS
なんかだんだんワケがわからなくなってきたが再度確認したら
基本的にUWPアプリ以外は画面外の再描画しないっぽいな(Chromium系はやっぱり描画されてるけど)
ほとんどのアプリが律義にrcPaint見てるとも思えんし描画先がGDIだと強制的にOSでクリップされてんのかしら?

おそらくWindows Compositionが噛んでてBitBltで取れないUWPアプリはWindows.Graphics.Captureで取れるけど
UWPアプリ以外でクリップ済みのイメージしか取れないのはまあ当然っちゃ当然
487: 2019/10/22(火)23:28 ID:An+rmEaC(3/3) AAS
win10でUWPでない従来のアプリの画面外キャプチャできるよ
win7がaeroオフだと撮れなかったみたいに何らかの条件があるのかもしれないが
488: 2019/10/23(水)00:49 ID:/s0IRa9G(1/4) AAS
Mozilla Firefoxなどサードパーティ大手は今もWin32APIをネイティブに使っており.NETは使ってない。
489
(1): 2019/10/23(水)01:17 ID:VREi5cKF(1/3) AAS
エクスプローラのアドレスバーで「デスクトップ」とか「ダウンロード」って入れたら
そこのパスに移動しますが、「デスクトップ」(という日本語)からパスに変換するAPIはありますか?
490: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)01:29 ID:DFr4VJRt(1/6) AAS
>>489
SHGetLocalizedNameの逆写像っぽい。CSIDLからテーブルを作るのが楽かと。
491: 2019/10/23(水)01:33 ID:VREi5cKF(2/3) AAS
あれ?なんか上の方に同じような質問がw
492: 2019/10/23(水)01:52 ID:VREi5cKF(3/3) AAS
なんかめちゃくちゃめんどくさそうw
493: 2019/10/23(水)02:38 ID:/s0IRa9G(2/4) AAS
SHGetFolderPath() でCSIDLコンプリートをめざすとか
494
(1): 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)03:33 ID:bxABcYeD(1/3) AAS
外部リンク:github.com
作ったぞ。自由に使え。
495: 2019/10/23(水)04:05 ID:/s0IRa9G(3/4) AAS
>>494
早いですね。
とはいえ、実在するパスからの逆引きだと、「コントロール パネル」とか「プリンター」みたいな仮想フォルダ名は取れない。
496: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)04:20 ID:DFr4VJRt(2/6) AAS
仮想フォルダならPIDLを使うのではないか?
497: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)04:23 ID:DFr4VJRt(3/6) AAS
PIDLとGUIDをどうやれば結び付けられるか? え〜と
498: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)04:25 ID:DFr4VJRt(4/6) AAS
外部リンク:stackoverflow.com
ここにヒントが。
499: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)04:32 ID:DFr4VJRt(5/6) AAS
落ちます。
500: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)04:40 ID:DFr4VJRt(6/6) AAS
仮想フォルダならレジストリを見る方法があるが、KnownFolderの方が正しい方法に思える。
501: 2019/10/23(水)04:47 ID:/s0IRa9G(4/4) AAS
WTL公式gitレポジトリにあるエクスプローラもどきアプリのサンプルが参考になるかも。
外部リンク:sourceforge.net
502
(1): 2019/10/23(水)12:55 ID:hZZQZDty(1) AAS
画面外のスクショが取れない件、1809からの挙動のようだねえ

外部リンク:stackoverflow.com
503: 2019/10/23(水)12:59 ID:ou8vQa3g(1) AAS
>>502
日本語で
504: 2019/10/23(水)15:31 ID:J1BMEu9t(1) AAS
いや判るだろ

1809 update 入れた後に可笑しくなったんだろω
505: 455 2019/10/23(水)21:03 ID:i0lmBL5A(1) AAS
1809以降の挙動ならプログラムじゃなくてWindows側の問題みたいですね
BitBltだけじゃなくプレビューにも問題出てるからバグっぽいですし
そのうちアップデートで治ることを期待しつつプログラムでの対応は諦めます
いろいろ答えてくれた皆様ありがとうございました
506: 蟻人間 ◆T6xkBnTXz7B0 2019/10/23(水)22:21 ID:bxABcYeD(2/3) AAS
やっぱりKnownFolderから取得できた。
外部リンク[cpp]:github.com
自由に使え。
507: 蟻人間 ◆T6xkBnTXz7B0 [age] 2019/10/23(水)23:01 ID:bxABcYeD(3/3) AAS
揚げ物
508: 2019/10/24(木)00:20 ID:ywNA7G1O(1) AAS
ありがとう。だがしかし別のアプローチで
俺が解決したい(本当の)問題は解決できていたのだよ

まあ誰かの役に立つだろうから放っておいたけどな
すまんなwww
509: 2019/10/24(木)00:41 ID:Fw8n9fLr(1) AAS
アップデートで直るかっちゅーても挙動自体は描画の最適化とも言えるので仕様としてこのままいきそうだけどなあ

自作ので試してみたけどやはり一部でも画面外に出てると無効領域をクライアント全体と指定しても
強制的にクリップされたHDCが返ってくるね
BeginPaintだけじゃなくてWM_PAINT外でのGetDCでも同様
DXGI swap chainが出力先ならクリップされない

普段窓を画面外に追い出したままにするってことがないから気付かなかったなコレ
510
(1): 2019/11/04(月)15:23 ID:/C5zJSxn(1) AAS
SetForegroundWindowでフォーカスを奪えない、
入力中にフォーカスが奪われるとウザいからWindowsが
奪えないようにしてるって話はよく聞くと思うけど

逆にエクスプローラが起動すると(バックグラウンドなのに)
フォーカスを奪ってくれて困ってるんだけど対応策ない?
ウザいんだがw
511: ◆QZaw55cn4c 2019/11/04(月)15:58 ID:fwURXfb5(1/3) AAS
>>447
さらに追試を重ねていました
悪いときは 10G, うまくいっても 5000G 程度(日によってばらばらです)で
FILE_END ができなくなる現象は、
FILE_END が悪いのではなく、システムで圧縮するように指定するとそういうことがおきることがわかってきました。

Windows もいろいろとあてにならない、もう linux に軸足を移そうか、と思案しています
512: 2019/11/04(月)16:19 ID:1IiqNDSP(1) AAS
>>510
SetFocus()を使うと好きなコントロールにフォーカスを与えることが出来る。
SetForegroundWindow()は余り効果が無い。
513
(1): 2019/11/04(月)16:52 ID:KwYoxUXo(1/2) AAS
longポインタ引数にintポインタ渡して>>445みたいなトンチンカンな返答する人が何か言ってる
514
(1): ◆QZaw55cn4c 2019/11/04(月)18:29 ID:fwURXfb5(2/3) AAS
>>513
>>445 を日本語に翻訳してみました。
外部リンク: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) だからなおさら問題ないのです。
省3
515
(1): 2019/11/04(月)18:55 ID:KwYoxUXo(2/2) AAS
>>514
445のどこがWindows環境?
516: 2019/11/04(月)19:29 ID:ex697rOI(1) AAS
DOS窓でprintf出力しながらWin32APIだって使えるからWin環境
517: 2019/11/04(月)20:03 ID:xxqq9QlV(1) AAS
LONGは、WPARAMやLPARAMと型変換する危険コードが多い気が。もちろん古いコードだけど。
518: ◆QZaw55cn4c 2019/11/04(月)20:32 ID:fwURXfb5(3/3) AAS
>>515
だから、あなたは 10 年 ROM ってなさい、ってさっき言ったでしょう?
519
(2): 2019/11/04(月)23:46 ID:hiiCgg8I(1) AAS
ここはWin32スレなんだからWin64や総称であるWindows APIはスレ違い
32ビットの話だけしてろ
520: ◆QZaw55cn4c 2019/11/05(火)00:15 ID:SbnLKNM3(1) AAS
>>519
残念ながらその意見に賛同する人は少数派だと思いますよ
521: 2019/11/05(火)01:54 ID:RTdVMJgD(1) AAS
Win64APIなんてどっから出てきたの?
522: 2019/11/05(火)11:28 ID:f5fZl2jz(1) AAS
> 昔は DWORD (Double WORD) と定義されていましたが
LPARAMは 16bit,32bit共に LONG (符号付整数)
523: 2019/11/05(火)11:48 ID:McETm4vA(1) AAS
>>519
64bitプログラミングであっても使用するAPIは実体としてはWin32APIだぞ
Win64APIなんて実体はなく、論理的に実装区分として呼び分ける程度
つまりスレチでも何でもない
524
(1): 2019/11/05(火)19:37 ID:wVD+ILW8(1) AAS
double wordが32bitだなんて本来word幅が16bitという前提の話でインテルなら80286までのはずが386でパスされathlon64で再びパスされるという異常事態が今も続いているわけなんだが
525
(3): 2019/11/05(火)20:20 ID:Rmlz0hln(1/2) AAS
>>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)になったんだが
526: 2019/11/05(火)20:52 ID:mHpC8FDb(1/2) AAS
>>525
釈迦に説法ご苦労
527: 2019/11/05(火)21:08 ID:Rmlz0hln(2/2) AAS
釈迦は俺やしw
528: 2019/11/05(火)21:43 ID:mHpC8FDb(2/2) AAS
俺メインフレームでdiagnose命令とかいじくってて
別な案件でhdlでcpu書いたりしてるけど
529
(1): 2019/11/06(水)01:32 ID:k1IDaN6Q(1) AAS
メインフレームw
何歳になってもイキリ小僧してるんだな
サルのパパとママはご存命かい?
530: 2019/11/06(水)02:20 ID:71FJFoA8(1) AAS
>>529
何イキっとんねん
531: 2019/11/06(水)04:07 ID:Z1mcKm+J(1/2) AAS
イキなりえなり
532
(1): 2019/11/06(水)07:21 ID:cnDla3Ge(1) AAS
>>525
ソフト的なAPIの話に物理アドレス空間で語るバカ乙w
533: 2019/11/06(水)12:01 ID:o3tEvZiY(1/2) AAS
釈迦がどうかはともかく
>>525 が全くトンチンカンなレスであることは事実
いつものあいつだろ
534: 2019/11/06(水)15:05 ID:Z1mcKm+J(2/2) AAS
>>532
APIの話だというのなら、OSが16bitだろうが32bitだろうが
APIの仕様が代わるわけないんやで
異常事態でもなんでもなく、それが高い互換性の理由だ
535: 蟻人間 ◆T6xkBnTXz7B0 2019/11/06(水)15:13 ID:Z1hQUtYe(1) AAS
64ビット対応で
Get/SetWindowLongよりもGet/SetWindowLongPtrを使え。とか、
DialogProcの戻り値をINT_PTRにしろ。
とかの若干の変更点があるようだ。
536: 2019/11/06(水)15:19 ID:o3tEvZiY(2/2) AAS
HANDLEもこっそりtypedefに_PTR変えたんだっけ
537: 2019/11/07(木)01:18 ID:7K0XtVuo(1/2) AAS
ダイアログプロシージャの戻り値がめんどうなことになる
x86じゃBOOLだけどx64だとINT_PTR
でもVC6だとBOOLはintだという
538: 2019/11/07(木)01:32 ID:sEmiRyTj(1/15) AAS
歴史的理由で仕方のない面もあるが、
単一のソースで16bitと32bit、32bitと64bitでコンパイルできるようにしてきたから
型の実態は結局なんなんだ?って悩むことになってる。

もうそろそろネイティブ型だけを使えるようになってほしいが
そのために言語を変えるほうが楽だろうな
539: 2019/11/07(木)01:44 ID:ubAK6fog(1) AAS
intとlongのサイズ違うこともあるしな
c#みたいにint32みたいなの最初から用意しとけよ
540: 2019/11/07(木)01:48 ID:cfOynPV2(1) AAS
stdint.h使おう
541: 2019/11/07(木)02:23 ID:+N3PsKU8(1/16) AAS
前に聞いた話だと、大型機が64BIT化した後も、intは、32BITの事が多いらしい。
1-
あと 461 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.050s