[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/23 21:00 / Filesize : 266 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build127



1 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:32:56.60 ID:sYLpmj89.net]
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build126
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/

■関連スレ
Visual Studio 2020 Part1 https://mevius.5ch.net/test/read.cgi/tech/1634166667/
Visual Studio 2019 Part7 https://mevius.5ch.net/test/read.cgi/tech/1634178709/
Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/
【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/

2 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:37:16.98 ID:sYLpmj89.net]
■番外編
WindowsDDK各種についてのスレ
https://mevius.5ch.net/test/read.cgi/tech/1049116134/
D言語 Part35
https://mevius.5ch.net/test/read.cgi/tech/1571979866/
Cygwin + MinGW + GCC 相談室 Part 8
https://mevius.5ch.net/test/read.cgi/tech/1411399211/

3 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:37:38.93 ID:sYLpmj89.net]
■ネイティブなやつとか
【GUI】wxWidgets(旧wxWindows) その5【サイザー】
https://mevius.5ch.net/test/read.cgi/tech/1270793556/
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 19
https://mevius.5ch.net/test/read.cgi/tech/1571891527/
●●●●TCL/TKなら俺に聞け 4●●●●
https://mevius.5ch.net/test/read.cgi/tech/1375678740/

4 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:38:24.02 ID:sYLpmj89.net]
■需要あるかしらん
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】
https://mevius.5ch.net/test/read.cgi/tech/1478142101/
Open

5 名前:GL 2.0 専用スレ
https://mevius.5ch.net/test/read.cgi/tech/1126268759/
【boot】nasm【loader】
https://mevius.5ch.net/test/read.cgi/tech/1377053129/
nim
https://mevius.5ch.net/test/read.cgi/tech/1519896738/
Gtkプログラミング on Windows!!!
https://mevius.5ch.net/test/read.cgi/tech/1147024203/
Borland C++ Compiler オ ワ タ
https://mevius.5ch.net/test/read.cgi/tech/1206951221/
[]
[ここ壊れてます]

6 名前:デフォルトの名無しさん [2021/12/09(木) 21:41:40.87 ID:sYLpmj89.net]
>2以降の各リンクDAT落ちチェックしてたら、どのスレも停滞してて生きてた
化石過ぎるやろ
というかこいつら要らんやろ


Win32API 永遠なり

7 名前:デフォルトの名無しさん [2021/12/10(金) 00:50:20.82 ID:eLt0CNh3.net]
>>5
>Win32API 永遠なり

その通り
とどのつまりdllエクスポート関数の使い方が変わるだけ

8 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 00:02:17.29 ID:+x6DQ55C.net]
結局C#とか使っててもWindowsである限りP/Invokeで使わざるをえない
.NETで全然置き換えできねえ

9 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:17:54.11 ID:3r8QLyb+.net]
>>7
C++/CLIとかいやなの?

10 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:36:26.05 ID:ciUW3N8E.net]
C++/CLIでも同じでは?



11 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:45:53.81 ID:E/VsNyVn.net]
まあC++のライブラリ呼ぶならC++/CLIの方がいいだろうけどWin32 API呼ぶだけならP/Invokeでいいな。

12 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 17:11:58.59 ID:HKU5LyBA.net]
IsWindowVisibleは、上位のウィンドウのWS_VISIBLEも再帰的に調べてくれるのに対して、
IsWindowEnabledは、上位のウィンドウが無効でも自身が有効だとTRUEになってしまいます。
上位のウィンドウのどこかが無効なら自身も操作できないのだから、
一発で状態を返してくれる関数があってもよさそうなんですが、
自分で再帰的に調べないといけないものなんでしょうか。

13 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 18:47:23.36 ID:U8G2rajF.net]
そうでござる

14 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 15:12:53.73 ID:K4RksYnA.net]
親となるメインウィンドウからCreateWindowの8番目のパラメータで親(オーナー)ウィンドウハンドルを指定して作成した
別ウィンドウ(WS_CHILDWINDOWを付けず一般的なWS_OVERLAPED属性等を付けたもの)はGetParentで
親(オーナー)を取得できず、GetWindowでGW_OWNERを指定すればオーナーウィンドウが取得できます

このことから、これらのウィンドウは親子関係みたいですが親子とは言わないと思います
どう言えばいいのでしょう?

オーナーウィンドウと派生ウィンドウ?

今までは漠然と親子呼びしていたのですが、上記例ではGetParentで親ハンドルが取れないのに気付いたことと
EnumChildWindowでもWS_CHILDWINDOWが付いたものしか列挙されないことから疑問に思いました
CreateWindowの8番パラメータ説明でも parent window って書いてますし

15 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 21:14:02.07 ID:MsBf3e8R.net]
オーナーと親は別もの

16 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 22:10:59.06 ID:+CwUc5NJ.net]
SetParentで養子に

17 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 08:28:16.99 ID:/vmqk8la.net]
https://docs.microsoft.com/ja-jp/windows/win32/learnwin32/what-is-a-window-

18 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 14:04:12.64 ID:YXB4LcTi.net]
>>16
そこは見ていたのですが、「オーナー」と「所有」という直訳っぽいとうか特に「所有」
ウィンドウという言い方は聞かないので、そこは置いておいてみんなどう呼んでるのかと思った次第で

皆さん特に呼び分けてない感じなんですかね?
オーナーウィンドウはまだ呼ぶと思いますが

19 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 02:10:36.86 ID:gHIFazbo.net]
全く理解してないな
所有はそのままの意味。金魚のフンみたいなもの
親ってのはツリーデータ構造においての子に対しての親って意味だから全く別の概念

20 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 02:45:29.60 ID:wk5RL8qz.net]
みんなどう呼んでるのって話を理解してください



21 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 10:00:44.65 ID:lsirm1I0.net]
ふと疑問に思ったのですが、Win32GUIってWndProcを利用せずメッセージループ内で全て処理をするって可能なんでしょうか?
実験してみろって話かもしれませんが知ってる方いらしたら教えてください

そもそもなぜWndProcを一々呼び出す仕組みなんでしょう?
DispatchMessageとか呼ぶくらいならその場でメッセージSwitchしたり自前の関数呼ぶなりした方がよさそうなものですが

22 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 10:16:30.88 ID:YP7dkfo9.net]
全メッセージをループで処理する必要が出てくる
ウィンドウAもBもCもダイアログAもBも
それでもやる?

23 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 10:17:20.81 ID:656VzGPj.net]
複数のウインドウを開いていると
メッセージループに複数のHWNDが入ってくる
そうなるとHWNDで鬼のようにelse ifしまくって
さらにそれぞれメッセージIDでswitchだ
想像を絶する巨大WinMainになるぞ

24 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 10:37:37.73 ID:zHsDBG/s.net]
>>20
その場合、すべてのメッセージに対応する動作を自前で把握し処理しないといけない
しかもウインドウごとに微妙に違う部分もすべて適切に自前で処理する必要が出てくる
デフォルト動作でいい部分はデフォルト処理に任せる、それがWndProc
開発者は変更部分のみ追加するだけで済む

25 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 11:55:56.08 ID:lsirm1I0.net]
>>21-23
完全に納得しました、有難うございます
WinMainスタック上のオブジェクトをそのまま利用出来たら、思ってそう考えましたが明らかに割に合いませんね
素直にWndProcとDispatchMessageに任せる事にします

26 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 18:48:39.58 ID:qq3JZERH.net]
>>13
うーん「手前ウィンドウ」?
最初のウィンドウズではPOPUPウィンドウがないからはみ出さないウィンドウを子供と呼んでいたが
後からオーバーラップが自由にできるようになって用語がごちゃごちゃになってしまったんじゃないかな
知らんけど

27 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:54:16.02 ID:Oty3ol47.net]
>>25
公式が特に何かしらの呼称を設けてないみたいだし誰も分からん気はする
親子じゃねえよ分かってねえなあ〜って知識マウント?しか湧いてないのが証明してる
知らんけど

28 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 20:52:33.67 ID:D0B/DSqq.net]
Zオーダーにまつわる 親子関係と
キーボード入力やらの取り分の範囲にまるわるオーナー関係

29 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 01:38:56.57 ID:Ht7d5qM4.net]
>>17
>>16の英語原文で斜体になっている「parent」「child」「owner」「owned」の4つがマイクロソフトの公式用語

owner windowの日本語訳は普通に「オーナーウィンドウ」が定訳だと思うよ
一方、owned windowは定訳が存在しないね

マイクロソフトの日本語機械翻訳では
owner window = 所有者ウィンドウ/オーナーウィンドウ
owned window = 所有ウィンドウ
となってるけど、この後者はあまり良い訳ではないと思う

30 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 01:58:58.45 ID:7KWgwZvx.net]
>>20
なんかわかります
中で何やってるのか理解していないと気持ち悪い、みたいな
私は最初の頃、MFCとか触れなかったし(今も)、WinMain?mainじゃだめなの?とか
cランタイムのstrcpyがあるのに、Win32APIのlstrcpyがあったり、摩訶不思議でした



31 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 02:52:14.64 ID:ogM6Neon.net]
え?MFCのソース読んでないの?

32 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 08:46:41.12 ID:30ABCQu6.net]
昔のwin16はfar版とかnear版とかあってめんどくさいからlstrcpyを用意したんじゃなかった

33 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:58:46.51 ID:rp3Y3leG.net]
ニヤは無視すればいいだけじゃん?
どっちかというとlstrcpyW()の必要性からだと思う

34 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 08:56:43.21 ID:58wYEt3v.net]
タスクトレイのアイコンの上でマウスホイールを上下させて音量調整できるフリーソフト見つけたんだけど、
あれ、どうやっているんでしょうか?
タスクトレイの表示座標を取得して、フックすればいいんだけど、座標を取得する方法がわからない。
それともタスクトレイのアイコンでもホイールのイベント取得できる?

35 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 10:41:52.03 ID:qiN456rw.net]
Shell_NotifyIconだよね?
WM_MOUSEWHEELはこないね

36 名前:デフォルトの名無しさん [2022/01/04(火) 10:52:18.23 ID:4cEZtgLZ.net]
SetWindowsHookEx(WH_MOUSE_LL) じゃないかな
dumpbin.exeとか使ってそのソフトが呼び出してるAPIを調べてみるといい

37 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 17:36:23.31 ID:mpSUdZEa.net]
Shell_NotifyIconのuCallbackMessageにメッセージID登録するとでLPARAMからMOVEとかのマウスイベントがやってくる
マウスがアイコン上をホバー中かどうかはこれで判定する
タスクトレイの長方形はFindWindow("Shell_TrayWnd",NULL)で取得したHWNDからGetWindowRectで取れる
その中の自分のアイコン長方形の取得の方法は昔調べた限りでは見つからなかった
従って、上のイベントが初めて起きた時にGetCursorPosで座標を取得しておき、
タイマーでマウスがその座標周辺にいるかどうかを大雑把に監視しつつ、
フック側のホイールイベントでトリガするという処理になると思う

38 名前:デフォルトの名無しさん [2022/01/04(火) 18:17:52.10 ID:a2P6Hn/H.net]
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」

「富士通年収3500万!」日本のIT企業の年収も、高額化してきました

ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由

「エース人材だって起業OK」、NECは挑戦者が集う場をつくる

NECなど「出向起業」 大企業人材、起業しやすく

パナソニックの社内ベンチャー「ゲームチェンジャー・カタパルト」で
事業化されるかもしれない注目の新規ビジネス

ゼネコン鹿島、DX化で狙う建設業界の地殻変動

NTTドコモ、建設業向けDXの新会社 コマツ、野村総合研究所などと共同で

39 名前:デフォルトの名無しさん mailto:sage [2022/01/04(火) 19:22:36.99 ID:iCrtIo/s.net]
>>33
> タスクトレイの表示座標を取得
面白そうなネタなんで探してみたら、こんなのあった。
ttps://www.petitmonte.com/bbs/answers?question_id=25298

40 名前:33 mailto:sage [2022/01/04(火) 20:21:23.69 ID:58wYEt3v.net]
>>34,35,36,38
レス、ありがとうございます。
昔、自作の音量調整ソフトで実装断念した機能でした。
久しぶりにプログラミングやってみます。



41 名前:デフォルトの名無しさん [2022/01/05(水) 10:12:14.60 ID:60pDLcUB.net]
CHM(HTMLヘルプ)って今でも現役だよね?

42 名前:デフォルトの名無しさん mailto:sage [2022/01/05(水) 13:52:02.98 ID:ga42ykuy.net]
10標準じゃもう使えないよ
分解するツールでばらした記憶がある

43 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 02:22:47.54 ID:NntPX0Am.net]
ヘルプファイルの仕様をコロコロ変えるの迷惑
HLPだって制限付きならともかく全面廃止は横暴すぎ

44 名前:デフォルトの名無しさん [2022/01/06(木) 02:35:26.27 ID:4VMA3TxB.net]
CHMの後継になるはずだった「Microsoft Help Viewer」だけど、Visual Studio 2015のヘルプファイルがリリースされてからまったく更新がない。
「Microsoft Help Viewer」はCHMよりも先にオワコン化しそうな気がするんだけど。

45 名前:デフォルトの名無しさん [2022/01/06(木) 02:39:48.25 ID:4VMA3TxB.net]
CHMはWindows用Python3.xのヘルプファイルに採用されているのでまだまだ現役だと思いたい

46 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 04:41:52.18 ID:RZuWQS3v.net]
今時ヘルプは全てWEBで見ろオフラインなんか知らんスタイル感
WEBに飛ぶと404でトップページにリダイレクト感
ユーザーはヘルプ読む労力が辛い感と開発もヘルプ更新するのに疲れ切ってる感

47 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 09:40:06.04 ID:mqPTm+Ey.net]
>>42
HLPは全面廃止と言うよりある意味制限付きでは?
うちはWindows10だけどHLP現役よ

48 名前:デフォルトの名無しさん [2022/01/06(木) 11:47:58.14 ID:4VMA3TxB.net]
hlp拡張子のファイルあるかなと思って探したら、以下のように最新のVisual Studio 2022にバンドルされてて
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\errlook.hlp

hlpアイコンまでちゃんとあるから動くもんだと思ってダブルクリックしたら、Edgeブラウザで以下Webページが開く予定調和
https://support.microsoft.com/ja-jp/topic/windows-%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A7%E3%83%98%E3%83%AB%E3%83%97%E3%82%92%E9%96%8B%E3%81%93%E3%81%86%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8-%E6%A9%9F%E8%83%BD%E3%81%AF%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93-%E3%81%BE%E3%81%9F%E3%81%AF-%E3%83%98%E3%83%AB%E3%83%97%E3%81%AF%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93-%E3%81%A8%E3%81%84%E3%81%86%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B-3c841463-d67c-6062-0ee7-1a149da3973b

49 名前:デフォルトの名無しさん [2022/01/06(木) 16:46:11.83 ID:flMntYS9.net]
*.hlpを分解できるツールとかないの?
hlpファイルの詳細な仕様書でもいいけど

50 名前:デフォルトの名無しさん mailto:sage [2022/01/06(木) 19:46:36.73 ID:MHUcKt/l.net]
>>48
> hlpファイルの詳細な仕様書でもいいけど
https://www.oocities.org/mwinterhoff/helpfile.htm



51 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 14:07:50.44 ID:vH8VeFTJ.net]
ならおまいらで独自のもの作って広めれ

52 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 14:26:37.48 ID:vg2SqbXr.net]
HTMLヘルプは、アプリのヘルプとしては使わないというか使えない
要求仕様を満たすための形式的な役割で使うだけ

53 名前:デフォルトの名無しさん [2022/01/07(金) 14:31:02.53 ID:TxBgGQ6X.net]
>>51
「HTMLヘルプ」は何を指すの?
CHMではなく汎用的なHTML文書という意味で言ってると仮定させてもらうけど、
天下の「Git for Windows」のヘルプがhtmlファイルをWebブラウザを開く形式で提供されていることについてどう思うの?

54 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 15:49:05.96 ID:vg2SqbXr.net]
ヘルプとマニュアルの仕切りがどこにあるかわかりませんが
使用中にピンポイントにその使用方法を提示できるんであれば、それでいいんじゃね?

55 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 15:56:16.42 ID:TxBgGQ6X.net]
一例を挙げると、git log --help とコマンドプロンプト上で入力したらWebブラウザが起動して以下のHTMLページが表示される変態仕様、それがGit for Windows
file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-log.html

56 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 16:14:05.22 ID:780pf0Q/.net]
>>48
hh.exe -decompile folder chm

instany.seesaa.net/article/157173789.html

57 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 16:32:56.59 ID:3+0nIzbY.net]
>>50
素人受けするものがいいでしょうね

┌────────┐
│何を調べますか?│
│| ̄ ̄ ̄ ̄ ̄ ̄ ̄|│
│|お前を消す方法|│
│|_______|│
│[オプション][ 検索 ]│
└─────v──┘

   __/|_
 _/    \
〈―― ●   \
  ̄\___   ヽ
   />―|ヽ―-、|
      \| ̄\|_
        (人_)

58 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 16:41:31.88 ID:vg2SqbXr.net]
>>54
それをGUI操作の提示方法としてどう実装するかですね
操作仕様を考える時点で考慮してたかどうかでだいぶ変わる

59 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 18:07:52.60 ID:33WVySKZ.net]
chmは表示にIEのコンポーネント使ってると思うんだけどサポート期間終了したらどうなるんだろう
あとUnicode対応じゃないんだよね
本文UTF8で書くと検索できないしインデックスもUnicode系統は使えない

60 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 18:11:08.09 ID:toxoOshM.net]
コマンドプロンプトで、start a.html
とすれば、ブラウザが開く

相対パスで、start ./x/y.htm
とか



61 名前:デフォルトの名無しさん mailto:sage [2022/01/07(金) 20:50:54.17 ID:YhEtWwe9.net]
CHMって検索が不便だった気がする
分解してHTMLをGREP掛けた方がいいとかそんな感じ

62 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 16:59:43.13 ID:IoztRjy4.net]
検索用インデックスが手入力だったかと

63 名前:デフォルトの名無しさん [2022/01/09(日) 08:21:52.72 ID:FkRbo6qA.net]
WM_NOTIFYメッセージで以下のように lParam を LPNMHDR と LPNMTBCUSTOMDRAW の2つにキャスト可能です。継承などもしていないのになぜキャストできるのか理解できません。どいう仕組みでキャストできているのでしょうか?

LPNMHDR pnmh = (LPNMHDR)lParam;
switch (pnmh->code) {
case NM_CUSTOMDRAW:
{
LPNMTBCUSTOMDRAW lpNMCustomDraw = (LPNMTBCUSTOMDRAW)lParam;

64 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 08:30:42.36 ID:VQrKDYa7.net]
そもそもC言語のポインターキャスト自体は通常どんな構造体や型でもエラーなしでできる
ただし正しく動く保証はない(プログラマの責任)
でその2つの構造体は包括関係になっててNMHDRのメンバーの部分が共通ってこと
NMHDRの後ろにNMTBCUSTOMDRAW固有のメンバーが並んでる構造のはず

65 名前:デフォルトの名無しさん [2022/01/09(日) 08:35:06.13 ID:FkRbo6qA.net]
>>63
ありがとうございます。理解できました。

66 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 16:25:03.32 ID:+efdTYZ0.net]
ShellExecuteを使うと、拡張子に関連付けられたアプリで開けるけど、
「このファイルを開く方法を選んでください」の画面を出す方法はありますか?

メールアプリなどは、添付ファイルを右クリックすると、
「開く」の他に「アプリケーションから開く」のようなメニューもあって、
それを選ぶと上記の画面が出てくるので、なにか方法はあると思うのですが

67 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 16:32:06.52 ID:F2PdGvXs.net]
一時的に関連付け削除してるのでは?
知らんけど

68 名前:デフォルトの名無しさん mailto:sage [2022/01/12(水) 18:23:17.98 ID:JKAG73tm.net]
>>65
動詞"openas"かな?
試したことないけど

69 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 13:39:03.68 ID:MYQMTdwJ.net]
>>67
ShellExecuteの第2引数に_T("openas")を入れてみましたが、
戻り値が0x0000001F(SE_ERR_NOASSOC)になってしまいました

70 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 20:02:30.01 ID:gOiUT2XU.net]
>>65
コマンドプロンプトからこれで表示は確認できた
%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL ファイルのフルパス名
これをプログラムから実行するのは適当な方法でいけると思う



71 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 20:43:33.40 ID:kn1ls6LS.net]
コマンド呼び出し文字列を変更する手段を用意しとかないと、使えなくなった時に積むでしょ

72 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 20:56:49.79 ID:gOiUT2XU.net]
>>70
俺に言ってるのかな?
何言ってんのか判らんけどpowershell上からpinvoke経由でも普通に呼べるけど

73 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:06:10.72 ID:kn1ls6LS.net]
他人に提供する場合は気にしたほうがいいってだけ

74 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:15:59.19 ID:zlr4Kbw5.net]
>>69
このヒントを元に探してみたところ、WinMergeのソースが見つかりました。
GetSystemDirectoryやShellExecuteを使って、全く同じことをやっていました。
ありがとうございます。

75 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:16:09.21 ID:gOiUT2XU.net]
どうも話が通じない人みたいだから俺は去るね
>>65に伝わればそれでいいので

76 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:18:23.56 ID:H+18Uz0q.net]
懐かしのWinMerge

77 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:22:03.15 ID:kn1ls6LS.net]
>>74
Win32APIスレなのにUndocumentedな話してるからだが

78 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:27:35.21 ID:b+qvLzV0.net]
原理的にこれ相当でできるって話だからスレチではない
意味が伝わってないどころか会話も通じていないコイツのスレチを超える常軌を逸した脳味噌に驚愕する

79 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 21:36:13.59 ID:kn1ls6LS.net]
公式な仕様として公開されてない機能を使う時は要注意だし、
サポート打ち切りを想定してコマンド呼び出し文字列を変更する手段を用意しておくのは当然だろ。

80 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 13:34:07.42 ID:yD3j1Fg+.net]
公式サイトに乗ってないからここで質問してるんでしょうが
多少のリスクは自己責任だ



81 名前:デフォルトの名無しさん [2022/01/14(金) 13:45:56.78 ID:/3p7Tbub.net]
行きはよいよい 帰りはこわい
こわいながらも
通りゃんせ 通りゃんせ

関東で生まれた童謡ってのが意外だよな

82 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 13:56:06.62 ID:A/cS6S7f.net]
サポート打ち切りや仕様変更によって開発したソフトやユーザーがどのような影響受けようが、
このスレ的には大きなお世話としか言いようがない
エラー処理は自己責任でやるだけだ
問題の糾弾は元凶であるMSに言え

83 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 14:03:27.75 ID:/3p7Tbub.net]
Win32API質問箱 Build127

84 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 14:16:06.92 ID:o4SvXBFp.net]
>>ID:/3p7Tbub

スレチ

85 名前:デフォルトの名無しさん mailto:sage [2022/01/14(金) 21:54:45.73 ID:J37qhhdP.net]
代替案を示すでもなく大昔から変わってない方法にケチつける時点でノイズ

86 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 13:52:02.54 ID:5C47L32n.net]
_beginthreadで作成したスレッドが、後で親プロセスから見て生きているかどうかを調べる方法はありますか?
基本的にずっとループして生きていることを期待しているスレッドですが、何らかの不具合でスレッドが異常終了した
ことを親プロセスで検知したいのです

スレッド側でシグナルオンオフしたりグローバル変数で動作してることを常に書き込むなどの工夫は思い付きましたが、
そもそもスレッドハンドルを使って有効か無効かを知る方法があれば簡単なのですが、そのような方法はありますか?

87 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:31:29.07 ID:UFDwubQ6.net]
GetExitCodeThreadかのう

88 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:37:16.67 ID:xRXRc1mt.net]
>>85
_beginthread でなく CreateThread でスレッド作成し、スレッドハンドルを受け取る
スレッドハンドルはスレッド停止でシグナル状態になる
スレッドハンドルの状態を WaitForSingleObject で監視する

89 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 15:27:31.83 ID:5C47L32n.net]
>>86-87
頂いた情報を元に色々テストしてみます
どうもありがとうございました

90 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 17:07:19.13 ID:mJD5+zFk.net]
_beginthreadexで作成して
GetExitCodeThreadは?



91 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 18:12:57.50 ID:5C47L32n.net]
_beginthreadはCランタイムを使うために必要なメモリ処理を追加したCreateThreadのラッパーらしいのと、
WaitForSingleObjectでの監視はこれまでも問題なく動作していたので、_beginthreadのままタイマー監視で
WaitForSingleObjectのテストしてみました

スレッドの異常終了に対応できるのかはテストできません(異常終了の再現はどうすれば?)のでスレッド途中で
特定条件で_endthreadを実行しただけですが、これは当然でしょうが問題なくWAIT_TIMEOUTの判定でスレッド状態を検知できました

同じく、WaitForSingleObjectの代わりにGetExitCodeThreadに置き換えた場合、スレッド動作中は
STILL_ACTIVEの判定、スレッド停止中はGetExitCodeThread自体がエラーで返ってくることでスレッド状態の検知ができました
(スレッドは永久ループで戻り値を返しませんから、threadex系を使っていません)

_endthreadを使ってのスレッド途中終了ではなく、異常終了時も同じように動作するのかが不安材料ですが、
とりあえずこれでOKということにしておきます(スレッドが動いていないんだったら各APIも同じ動作では?という判断)

どうもありがとうございました

92 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:46:12.90 ID:Ibae9TV2.net]
_beginthreadexはCreateThreadと同じハンドル返すやつやぞ
スレッド内でCランタイム使う場合こっち呼ばないとダメとか教わったりしてないのか
技術の断絶が起きてるのか

93 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:54:27.58 ID:PY3Mro/S.net]
誰に言ってるんだ

94 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 20:58:50.89 ID:kUGZMDvk.net]
>>90
スレッドの生死判定にGetExitCodeThreadを使うのは万が一スレッドが終了コードとしてSTILL_ACTIVEを返すと誤判定するからWaitForSingleObject使えって書いてあるよ
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getexitcodethread

95 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 02:20:25.63 ID:Fsu/5xwq.net]
>親プロセスから見て

子プロセスのスレッドのハンドルって親プロセスから見えるの?

96 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 02:37:12.98 ID:rP34XQ0N.net]
文脈的にスレッドから見て起動元を親プロセスと呼んでるだけかと

97 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:00:15.39 ID:vhiSf69I.net]
1秒おきのタイマーでtmDraw()を呼んで右に伸びる四角を描くプログラムです。VSCでMFC未使用。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
OnPaint(hWnd);
break;
case WM_CREATE:
SetTimer(hWnd,1,1000,(TIMERPROC)NULL); //タイマー定義
break;
case WM_TIMER: //タイマー
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
tmDraw(hdc); //これを呼んで描画
EndPaint(hWnd, &ps);
}
break;
return 0;
}
static VOID tmDraw(HDC hDC)
{
SetDCPenColor(hDC, RGB(0x99, 0x66, 0x00)); //ここが呼ばれてるのは確認
SetDCBrushColor(hDC, RGB(0xFF, 0xCC, 0x00));
Rectangle(hDC, SIZE16(0, 0, cx++, 6)); //伸びる描画
}
最初の1回の描画はされます。タイマーでtmDraw()が呼ばれてるのは確認しています。
呼ばれて描画されてるはずなのですが、実際の画面は更新されず四角は伸びません。
windowサイズを手動で変えていくと四角は右に伸びていき更新されます。
タイマーでtmDraw()が呼ばれた時に描画だけでなく画面の更新もされるようにするにはどうすればよいですか?

98 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:09:13.12 ID:TX0OTodc.net]
WM_TIMERでメモリDCに対してtmDrawの内容で描画、更新が必要な長方形に対してInvalidateRectを呼ぶ
WM_PAINTでBeginPaintの処理するが、ここではBitBltで更新が必要な長方形に対しメモリDCから画像転送だけするのがセオリー
WM_PAINTで直接描画してもよいが、WM_PAINTはイベント発生タイミングがOS依存のためタイマー以外でも必要時毎回tmDrawが呼び出されることになり時間が掛かる描画をここでやってると糞アプリ認定が俺からされる

99 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:17:10.02 ID:TX0OTodc.net]
それと下みたいな描画処理内に状態を更新する処理を入れるのはタブー俺からど突かれる
>Rectangle(hDC, SIZE16(0, 0, cx++, 6)); //伸びる描画
tmDraw(); // 描画
tmUpdate(); // 状態の更新
に分けて、tmUpdate()内でcx++;を記述するべき

100 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:20:11.61 ID:vhiSf69I.net]
WM_TIMER:でInvalidateRect(hWnd, NULL, NULL);で更新されるようになりました
ありがとうございます



101 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 15:28:34.78 ID:CkvbqakA.net]
>>65
SHOpenWithDialog

102 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 15:56:05.88 ID:CkvbqakA.net]
>>33
Shell_NotifyIconGetRect

103 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 21:16:14.65 ID:XaFwU4s3.net]
CreateFileで返ってきたファイルハンドルを使って、CreateFileでGENERIC_READ/GENERIC_WRITEの
どちら(もしくは両方)のアクセスモードが指定されていたかを調べる方法はないでしょうか?

104 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 22:43:56.49 ID:XaFwU4s3.net]
質問を撤回変更します
特定のファイルへの書き込みの際、同タイミングで別プロセスから同じファイルへの書き込みを防ぐため
ファイルのロックを行なおうとしましたが、下記のようなコードは間違っていますでしょうか?
実際にはWriteFileでエラーになります

HANDLE file;
BOOL ret;
DWORD wrote;
OVERLAPPED ov = {0};
file = CreateFile("test.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);
ret = WriteFile(file, "aaa", 3, &wrote, 0);
ret = UnlockFileEx(file, 0, 0xffffffff, 0xffffffff, &ov);
CloseHandle(file);

よろしくお願いします

105 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 22:47:06.25 ID:XaFwU4s3.net]
補足します
>>103は複数プロセスで実行しての結果ではなく、単一プロセスで実行した結果です

自プロセスでファイルに書き込むけど、その間は他プロセスで書き込んで欲しくない
ということをしたいですですが、競合しているわけでもないの人>>103ではエラーになってしまいます

106 名前:蟻人間 mailto:sage [2022/02/19(土) 22:51:38.16 ID:okjLjEAk.net]
このページのACCESS_MASKのところに書いてある。
https://note.com/lacnote/n/n214c53e98cc4

107 名前:蟻人間 mailto:sage [2022/02/19(土) 22:53:20.09 ID:okjLjEAk.net]
>>104
FILE_SHARE_*を見てみるといいよ。

108 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:52:43.84 ID:CO1siO2a.net]
やりたいことが伝わっていないようですが、要するにWEBサーバーでよくある
アクセスカウンターや掲示板でファイルの読み書きをするにあたって衝突を防ぎたいということです
ファイルオープン時にエラーにしてしまうのは本意ではなく、あくまでファイルのロックで制御したいのです

ということで、書き込み時はこのようにすれば解決できました。
ret = LockFileEx(file, LOCKFILE_EXCLUSIVE_LOCK, 0, 0xffffffff, 0xffffffff, &ov);

読み込み時は元の
ret = LockFileEx(file, 0, 0, 0xffffffff, 0xffffffff, &ov);

このようにすれば、複数プロセスで読み込みが競合しても同時アクセスが可能で、書き込みプロセスが発生したときは
意図した通りに排他処理され、後から実行されたプロセスはLockFileExで待機されるようになりました

109 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 19:05:58.76 ID:9HPBNdt5.net]
Webサーバの排他処理を、このような実装で提案してくるレベルの会社に仕事を頼むのは危険、とは思った

110 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 20:03:47.36 ID:M4xRQQqb.net]
CreateFileが先だとどのみちエラーになる可能性が残るから
ミューテックスやイベントオブジェクトで排他制御するなあ
Lock



111 名前:なんちゃらは使ったことないわ []
[ここ壊れてます]

112 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 21:30:44.11 ID:uUEkIMOM.net]
俺なら迷わずDBMS使うわ
SQLite3 とかならサーバーもいらんし

113 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 03:06:22.69 ID:duSmRXnB.net]
>>109
shareが付いてるからエラーにはならないのでは?

114 名前:デフォルトの名無しさん [2022/03/07(月) 02:42:31.87 ID:TXt6EOws.net]
WritePrivateProfileString で ini ファイルに書き込むと、たまに「他のプロセスが使用中です。」という例外が発生します。
防止するにはどすればいいでしょうか?

115 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 02:44:48.03 ID:qb65CxmV.net]
他のプロセスが使用しないようにする

116 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 09:16:25.25 ID:cTvXM31Y.net]
大体にして開いてるのエクスプローラー、アンチウイルス、常駐系だったりするしな
MS-DOSでも使うしか

117 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 10:39:51.12 ID:Xc0f0iGk.net]
他のプロセスでiniファイルを使っていたとしてもWritePrivateProfileStringで例外なんか出るか?

118 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 10:52:53.03 ID:2N5B8miS.net]
ぐぐった感じ APIそのものは例外を発行しないものの C#のプラットフォーム側がだしてるくさい

119 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 23:41:31.01 ID:oHAGc ]
[ここ壊れてます]

120 名前:JuV.net mailto: C#のランタイムはこのスレの範疇じゃないなあ []
[ここ壊れてます]



121 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 17:52:46.46 ID:f1RrvjSh.net]
リストビューを範囲選択しているときの四角形、7や10などでは青い半透明で描画されますが、
APIでこれと同じものを描画することはできるのでしょうか?

122 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 18:26:38.59 ID:ZpoSJ5Ls.net]
一方、ワイは自前で描画した

123 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 18:33:19.49 ID:iHDsiIkr.net]
だから自前で同じものを描画できるかって質問だろ
俺か?俺は知らん!

124 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 18:36:57.44 ID:f1RrvjSh.net]
>>119
自分で色などを調べて、直値で半透明の四角形を描いたということですか。

XP以降のエクスプローラーに載っている描画のようなので、
UxThemeのテーマ描画関数にでも含まれているのかと思ったのですが、
外からは呼べないものなのですかね。

125 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 19:03:07.84 ID:ZpoSJ5Ls.net]
>>120
自前じゃなくてAPIでって書いてるやん

>>121
正攻法は分からないので、それっぽい色で直接描画した
参考にならなくてスマン
ワイもいい方法知りたい

DrawThemeBackgroundでリストビュー関係のパーツで描画をすればかなり近そうなんだけど、
本当にそれでいいのか分からなくて面倒でスルーした
https://docs.microsoft.com/en-us/windows/win32/controls/parts-and-states

こちらのツールも参考にさせてもらってた
ttp://dev.onionsoft.net/seed/info.ax?id=1201

で、結局描画そのものは自前になるわなということでやめた

126 名前:デフォルトの名無しさん mailto:sage [2022/03/09(水) 09:25:42.26 ID:DJwI/bmR.net]
>>122
詳しい情報ありがとうございます。
テーマに沿った範囲選択の描画は、提供されていないものなんですかね。
DrawDragRectのような名前のAPIが用意されてよかったのですが。

127 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 11:37:08.28 ID:SxsSQH3/.net]
NamedPipeにおけるPIPE_TYPE_BYTEとPIPE_TYPE_MESSAGEの違いは何なのでしょうか?
PIPE_TYPE_BYTEでは書き込み側がWriteFileを何回行ったとしても読み手側はReadFile1度で済み、
PIPE_TYPE_MESSAGEでは書き込み側が行ったWriteFile回数分、読み手側もReadFileがヒットするという理解であってますか?

128 名前:デフォルトの名無しさん [2022/03/20(日) 18:08:07.29 ID:XF1vAqW3.net]
参考書を一冊読み終わった程度のガチガチの初心者です。
初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。
VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。
どなたかwinndowの大きさの指定の仕方を教えていただければ幸いです。
そもそもどこからプログラムが始まるのかもよくわかっていません。

・・・質問する場所が間違ってたらすみません。

129 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:18:13.42 ID:km0F04pf.net]
Win32APIなら MoveWindow あたりかな。

UWPのことは↓の方がいいかもね。
https://mevius.5ch.net/test/read.cgi/tech/1627556967/

なお蛇足だけど 「UWP 将来性」 でGoogle検索してみると、UWPに関しては微妙な評価も少なくなく。
初心者が、あえてUWPを選んで、これから勉強していく・・・というのはどうなんだろう? という気はしないでもない

130 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:48:42.24 ID:pl7vy6ae.net]
CreateWindow(Ex)のwidth,height引数だろ



131 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:44:52.47 ID:KeTIMbSf.net]
ウィンドウのサイズの指定の仕方すら載ってない参考書って何なの

132 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:55:49.41 ID:+2LwwNeE.net]
UWPはフルスクリーン専用ですから!

133 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:57:26.05 ID:DiBIkIVz.net]
ウィンドウのサイズはWindowsのプログラムじゃないんだよ
うまく言えないけど、それは違うんだよ

134 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 22:29:38.63 ID:KeTIMbSf.net]
自分で制御できてこそプログラミングなのでは
ちなUWP ウィンドウサイズでぐぐったら出てくるでしょ

135 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 22:59:19.18 ID:O6cWnna8.net]
UWPなんて儲からないのが決定づいたからMSの投資対象じゃないでしょ
将来性とかじゃないんだよ
終わったの

136 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:32:49.71 ID:n/9ce90/.net]
ケンシロウ「おわた」

137 名前:デフォルトの名無しさん [2022/03/21(月) 13:53:10.22 ID:ROKj/vns.net]
>>126
ありがとうございます。
なんか記事めっちゃ少ないなって思ったんですよ。
c++始めたてで「よし、c++でサーバー作るぞ!!」って思って探したとき以上に
記事がないんですよ。
そもそも将来性が危ぶまれていたのですね。
本当にありがとうございます。
テンプレート何使うのかから考え直します。

138 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 17:01:31.15 ID:2zy4bB2k.net]
Visual studio のテンプレート選びのことなら、最初だけね。
慣れてくると、テンプレートはかえって邪魔だったりするので、空のソリューションから始めるようになるよ。

C++でいくなら(初心者なら、最初はC++よりもCの方がいいかもしれないかな、覚えることが少ないので・・・とは思うけど)
(MFC等のクラスライブラリを使わずに)Win32APIだけでゴリゴリ動かすプログラム作成からトライするのがよろしいかと。
いずれにせよWindowsアプリの場合、Win32APIは避けて通れないので、勉強するなら順番的に最初で。
それで不満があったり、学校や仕事なら必要に応じて、趣味なら好みで、他の手法に手を出していくような順番で考えるといいと思われます。

困ったら Google 先生に聞いてみてね、いくらでもサンプルが入手できるから、理解も早まるはず

139 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 17:46:41.29 ID:UrcF9Qp5.net]
結局テンプレートは自分で作ったな

140 名前:デフォルトの名無しさん [2022/03/21(月) 18:08:25.99 ID:ROKj/vns.net]
承知しました。
templateの作成から始めます。
ありがとうございます。



141 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 21:19:01.53 ID:pAID/0z9.net]
いやー、普通にc#から入っていいとおもうがねぇ。
まっさらな人がこれからcharとwcharとutf8とutf16を
ちゃんとデフォルトで言語の標準ライブラリで変換出来ない世界から入るのは遠回り過ぎて、
結局は目的にまったく近づけず挫折するかと。

142 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 01:06:06.87 ID:TibwPpTv.net]
何でrustの悪口言うの?
Microsoftがいつかライブラリを作って提供してくれるはずだよ?

143 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:47:17.13 ID:qjij/RpP.net]
今使えないと…

144 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 22:09:30.99 ID:XUVyJctM.net]
>>140
もう使えますよ
tps://store.steampowered.com/app/252490/Rust/

145 名前:デフォルトの名無しさん [2022/03/24(木) 17:58:28.49 ID:EzbC8tGw.net]
>>138
どうも、134です。
インターネットとc++は相性悪いからやめとけって言う話は自分でも
どことなくわかっているはずなのになぜかc++に執着してしまっています。
はじめて3か月くらいでしょうか・・・。
boostのサーバーのサンプルコードの一つの中身を片っ端から読んでみようかと思いましたが、
なんかOSどれか調べてるなぁとか、c++のバージョンチェックしてるなぁとか、
このヘッダインクルードしてたらこっちはインクルードしないよーとか、
この関数ちゃんと動くの?とか
実際に知りたかったことにたどり着く前にboostには挫折してしまいましたが、
c++には”まだ”挫折してないです。

・・・”まだ”なんだよなぁ

146 名前:デフォルトの名無しさん [2022/03/24(木) 18:01:49.40 ID:EzbC8tGw.net]
そんなわけで、

147 名前:DialogBoxの引数なんですが、LRESULTだったり、INT_PTRだったりします。
long以上の整数ポインタだったら何でもよいのでしょうか?
[]
[ここ壊れてます]

148 名前:デフォルトの名無しさん [2022/03/24(木) 18:10:21.95 ID:EzbC8tGw.net]
ごめんなさい、全然違いました。
DialogBoxの第四引数につかうウィンドウプロシージャの
DialogProcの型はlong以上の整数型ポインタなのでしょうか?
また、ウィンドウプロシージャって関数であってますよね?
実はクラスでしたとか言わないですよね?

149 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 19:01:41.84 ID:bNSOayig.net]
DialogBox の第4引数はダイアログプロシージャー(関数)のアドレス値(ポインタ)だね。

Type: DLGPROC
A pointer to the dialog box procedure.

なお、ダイアログボックスの場合は「ダイアログボックスプロシージャー」といって。
ウィンドウプロシージャーとの共通点は多いけど、同じものではないから、区別して理解する必要があるよ。
DLGPROC と WNDPROC の違いについて調べてみてね

150 名前:デフォルトの名無しさん [2022/03/24(木) 19:14:59.99 ID:EzbC8tGw.net]
>>145
補足含めて有難うございます。
WNDPROCも調べます。



151 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 01:06:11.70 ID:1GxlrlpP.net]
20年以上前まではWin32APIに関する本は山ほどあったけどもうそういう時代じゃないから今すぐ辞めたほうがいいよ
一応20年以上前の知識が今でも通用はするけど知ってたらちょっと得する程度で今は他にもっといい手段があるからね
生まれてくる時代が遅すぎたね

152 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 01:37:15.09 ID:4RHKXjgo.net]
日本語ではね
英語ならPavel Yosifovich氏のWindows 10 System Programming, Part 1 と 2 が有る
Pavel Yosifovich氏はインサイドWindowsやWindowsカーネルドライバプログラミングの原著の人だ
誰か翻訳してくれればいいけど、今更Win32本を翻訳したいと思う酔狂な人は居ないだろう…

153 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 01:37:29.01 ID:5XdEy59o.net]
バカ言うなよ
Win32APIはずっとこの先生きのこる

154 名前:デフォルトの名無しさん [2022/03/25(金) 01:40:27.96 ID:F8nkIqx9.net]
>>148
おまえは英語を読めないのか?読めたとしてもマイクロソフトは解釈が難しい表現ばかりだから、日本マイクロソフトでもわからないことばかり。

155 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 06:30:11.55 ID:0hAphrOl.net]
WIN32APIの本なんか読んだ覚えがない
Win32.hlpとグーグル検索だけでマスターした
もう20年も使ってるが一番長生きでコスパ最強の言語だわ

156 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 07:15:38.67 ID:yedPBFGG.net]
Advanced Windowsだけは読んでたな
15年くらい前から1に書いてあるよね
思えば遠くに来たな…

157 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:13:48.45 ID:EjQkOY3c.net]
>>150
英語を読めないなんて一言も書いてないだろ

158 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 10:10:19.86 ID:mOX1pyWB.net]
>>1 > ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
これ古いよな
APIフックもネット上の情報を組み合わせるだけでできる

159 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 11:28:00.83 ID:7tuvarTq.net]
Advancedと言いつつペゾルト本よりよほどプリミティブな部分を網羅してくれてる書籍よね
邦訳版はもはや入手性悪いけど

160 名前:デフォルトの名無しさん [2022/03/25(金) 13:43:49.12 ID:o7CXkIQI.net]
c++やるんだったら英語は必須なのでしょうか。
マイクロソフトのサイトに載っている説明もほぼほぼ英語ですし・・・、
自分は英語読めないんですけど、なんかもう、最近少しなら読めるようになってきました。
頭痛くなりますけど・・・。



161 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 13:50:30.58 ID:6oNwnU1m.net]
>>156
うん、必須
IEEE14882の規格票が英語だから
JIS X3014はバージョンがもはや化石レベルだし

162 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 13:51:07.06 ID:6oNwnU1m.net]
アホミスしちまったw
- IEEE
+ ISO/IEC

163 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:29:22.91 ID:04aIfOpD.net]
>>155
そもそも原題はAdvancedじゃないしな

164 名前:デフォルトの名無しさん [2022/03/26(土) 08:24:31.76 ID:PxCGY5CH.net]
>>157
やっぱ必須ですかぁ
すらすら読めないときついレベルですか?
辞書使ったり、グーグル翻訳使わないときついです。

165 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 08:47:33.85 ID:rc4mKLfq.net]
>>160
俺もそんなもんだよ
決して英語が得意なわけではないので
自分が誤訳してないかのチェックにグーグル翻訳使ってる
グーグル翻訳のほうがおかしいこともあるので相互補完だ

166 名前:デフォルトの名無しさん [2022/03/26(土) 09:48:41.10 ID:PxCGY5CH.net]
>>161
ありがとうございます。

167 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 10:06:36.44 ID:AckD8zcc.net]
DeepL翻訳お勧め

168 名前:デフォルトの名無しさん [2022/03/26(土) 10:21:19.75 ID:PxCGY5CH.net]
エディットボックスの中のテキストをGetDlgItemTextでもらってきたのですが(TCHAR*)、
PCSTRに変換する方法がわかりません、便利な関数は用意されていなくて、自分で作ったほうが良いのでしょうか?
char*をwchar_t*に変換するのは見つかったのですが、その逆が出来ません。

169 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 11:13:01.22 ID:53jeva53.net]
>>164
GetDlgItemTextA?
GetDlgItemTextW?

A ならそのまま使えるのでは?W なら https://mevius.5ch.net/test/read.cgi/tech/1434079972/53 ::WideCharToMultiByte

170 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 11:27:14.11 ID:v+3Jhngl.net]
>>163
d



171 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:03:42.82 ID:ZxvtMkkN.net]
DeepL の方が、Google 翻訳よりも高品質

でも最近、Googleも向上した。
DeepLを真似たのかも

172 名前:デフォルトの名無しさん [2022/03/26(土) 12:19:49.39 ID:PxCGY5CH.net]
>>163
DEEPLは翻訳できる回数に制限があると思って使ってなかったです・・・。
使うだけなら制限なかったのですね。

173 名前:デフォルトの名無しさん [2022/03/26(土) 12:27:23.77 ID:PxCGY5CH.net]
>>165
ありがとうございます。
Aの方使ったら出きるっぽいです。
なんですけど・・・今それを確認しようとしてmbstowcs_sを使ってみたけれど
文字化けが・・・どっかがミスッてるはずなんですけど、しばらくかかりそう。
とりあえずローカルウィンドウで見たらchar変数の中にバッチしがいってたので
当初の目的を解決できました。
こんなことで3時間くらい使ってしまいました。
頭痛い・・・。

174 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:57:20.76 ID:9jtFEqJp.net]
文字コードについてはMSがもっとも時間かけて多言語対応してるからMSのルールを守るのが吉。

175 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 13:14:01.93 ID:rk/dILHG.net]
DeepLをMSが買収して、ドキュメントを全部高品質な日本語で提供してくれ

176 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 13:15:53.49 ID:9jtFEqJp.net]
いらんことはせずに昔のMSDNライブラリのように人に翻訳させろ。

177 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 14:22:58.08 ID:u+BPDoH4.net]
文字列を入出力するAPIは末尾Wを使うよう心掛けよ

178 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 14:25:53.60 ID:ZxvtMkkN.net]
情報通信研究機構(NICT)も翻訳バンクを運用して、
「みんなの自動翻訳」を、Linux に技術提供している

みんなの自動翻訳@TexTra®
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/

漏れは使った事ないけど

179 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 14:27:04.89 ID:LcghdYUH.net]
みかん星人事件で止めたんじゃなかったっけ

180 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 14:28:59.19 ID:9jtFEqJp.net]
>>173
だからMSのルールを守りなさい。



181 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 18:35:55.11 ID:39VlCDpx.net]
文字や文字列の記述は TCHAR(_TCHAR) 系統のマクロで統一するのが旧来からの作法だわね。
最近の Visual Studio の C/C++ はデフォルトで UNICODE,_UNICODE が定義されているので。
APIの末尾にWを付けるというルールは忘れていい気もする。
必要時のみA(やW)を付けて、あとは WideCharToMultiByte、MultiByteToWideChar を使う程度かな

182 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 18:41:49.01 ID:G8hldp18.net]
TCHARなんかもう10年近く見かけてない。
普通にLとだけ書く。
マルチバイトにする意味ないんだし。

183 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 19:14:13.28 ID:BLvFEtLU.net]
マクロの結果で分岐させるコードだと
インテリセンスとかに負荷かかる印象しかないから
気づくとW系のコードで埋まっている

184 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 19:22:58.17 ID:Zkd3VYsw.net]
UTF8になったら、またマルチバイトに戻るわけではいの?

185 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 19:41:02.41 ID:39VlCDpx.net]
サロゲートペア対応とかで、特定のWin32APIの仕様が混乱してたりして、メリットが無くなってきてるからね。
将来的に ANSI/UTF8 がデフォルトになる可能性も完全には否定できず

186 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 20:07:18.83 ID:tpQ7cDA8.net]
>>181
1バイト配列だった場合どっちで処理されるかの部分がチーム環境や実行環境に左右されたのて
十数年前から wchar_t で持つようにした

187 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 20:14:40.35 ID:39VlCDpx.net]
そうね、今は基本W系だよね。
ただそうねえ、念のためA系についても忘れないでおいた方がいいかも、とは少しだけ思う。
https://docs.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page

188 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 20:57:55.95 ID:tpQ7cDA8.net]
忘れてはいないからこそ忘れてる(OR 分かっていない)人が混ざった時の問題が怖いのよ

189 名前:デフォルトの名無しさん [2022/03/26(土) 21:11:34.30 ID:9k2FRpJr.net]
プラットフォームによってはワイド版のPOSIX関数がなかったりするから微妙だなあ

190 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 21:22:26.00 ID:xinKsQI1.net]
>>172
その「人」が確保出来ないから、放置されてんだよな
MSは金は余ってるが、翻訳に関しては全く予算を割くことは無くなった
日本のMSが、無能だらけになったのと関連してるのは間違いない



191 名前:デフォルトの名無しさん [2022/03/26(土) 21:22:54.54 ID:PxCGY5CH.net]
ダイヤルボックスで指定したIPアドレスとポートで作ったソケットからちょっとした文字列を
送ろうとしたんですけどLNK2019エラーが出てしまいます。
VisualStudio2022、c++14、サブシステムはWindows (/SUBSYSTEM:WINDOWS)です。
エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。

192 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 21:32:36.07 ID:9JnLg/Xm.net]
>>187
> エラー2019は何となくサブシステムが違うようなイメージで間違っていないでしょうか。
何故ググらないの?
https://docs.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-error-lnk2019

193 名前:デフォルトの名無しさん [2022/03/26(土) 21:37:24.88 ID:PxCGY5CH.net]
>>188
すみません、前回別の事で同じエラーが出たときに読んだんですけどよくわからなくて
マイクロソフト見てもわからないと思ったのですけど、もう一度読み直してみると、
何か忘れてるのかなぁって思ったので、もう少し頑張ってみます。

194 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 21:39:46.78 ID:wvtz3UMM.net]
クリティカルセクションで質問です
EnterCriticalSectionでスレッドの排他制御を行うとき、
作成したスレッド間では排他制御できています

これを、作成したスレッドではなく呼び出し元のプロセス側で
EnterCriticalSectionを実行しても、その間はスレッドの動作は
排他制御されて停止する(待つ)という認識で間違いないでしょうか?

195 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:55:33.42 ID:39VlCDpx.net]
質問の意図が正しく理解できてない可能性がありますが。

A critical section object provides synchronization similar to that provided by a mutex object,
except that a critical section can be used only by the threads of a single process.
Critical section objects cannot be shared across processes.

要約:
「クリティカル セクション」 オブジェクトはミューテックス オブジェクトと同様な同期を実現しますが、
クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
クリティカルセクションオブジェクトは、プロセス間で共有できません。

196 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:03:19.27 ID:tpQ7cDA8.net]
>>189
"何故" LNK2019が起きているかをぐぐったり他人に投げる前に確認しないと遠回りになりそう

197 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:16:32.24 ID:iKQRZLPO.net]
>>177
自分で勝手に W つけちゃだめだと思うよ…
ちゃんと「windows.h をインクルードする前に」 #define UNICODE しているか確認してね
C++11 or later になってからずいぶんと楽になりました…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53

198 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:17:11.29 ID:iKQRZLPO.net]
>>190
つソース出せ、話はそれからだ

199 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:25:46.00 ID:wvtz3UMM.net]
>>191
ありがとうございます

> クリティカル セクション オブジェクトは1つのプロセス内のスレッド間でだけ使えます。
> クリティカルセクションオブジェクトは、プロセス間で共有できません。

これは認識しているのですが、この文面を借りれば

「クリティカル セクション オブジェクトは1つのプロセス(メインプロセス・スレッド呼び出し側)と
スレッド(メインプロセスから呼び出されたスレッド)間で使えるのかどうか」

ということです
よろしくお願いします

200 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:48:22.49 ID:5YtPDb7J.net]
>>195
複数のスレッドで使えると思いますよ、というか、そのためのクリティカルセクションでしょう?
ただ、私もクリティカルセクションの使い方がまずいのか、スタベーションに悩まされたまま放置しているので、断言はできないけど

なおちゃんとハンドルを static かヒープに置いていますか?スタック上にハンドルを置いていたら無意味ですよ…



201 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:54:48.59 ID:39VlCDpx.net]
>>195
使えます(正しくコーディングされていれば

念のため補足すると、プロセスというのはスレッドの集合であり。
プロセス生成と同時にスタートするスレッドのことを「メインスレッド」と言います。

なので、より正しい言い方としては以下のようになると思われます。
・メインスレッド
・(メインスレッドと同じプロセスに属する、メインスレッド等で生成された)メインスレッド以外のスレッド

これらのスレッド間でクリティカルセクションオブジェクトを共有することができます(排他制御可能です)

202 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:59:25.14 ID:wvtz3UMM.net]
>>196
ありがとうございます

何か不具合が起きていると言うことではなくて、クリティカルセクションの
仕様について確認しようと思って質問しました

結局、そういうコードを書いて確認しましたが、メインプロセスではEnterCriticalSection
が効きませんでした

メインプロセスでEnterCriticalSectionを実行すれば、その間スレッドが止まる(その逆もある)
ということがもしかして可能なのかなと思った訳です

どうも失礼しました

203 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:06:26.31 ID:AVpqtd2i.net]
>>197
入れ違いになってすみません
使えるとレス頂いたのでプログラムを確認しましたが、これは書き方が
悪かったようで確認になってませんでした

レス頂いた内容でとても分かりやすく理解できました
どうもありがとうございました

204 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:02:38.66 ID:nCDHmZcB.net]
>>197
>念のため補足すると、プロセスというのはスレッドの集合であり。

全然説明になってませんよ…
次の質問にちゃんと答えられますか?
「プロレスごとに固有に持つ値はなにでしょうか、最重要な二つ答えなさい」

205 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:03:29.30 ID:nCDHmZcB.net]
>>198
>そういうコードを書いて確認しましたが、メインプロセスではEnterCriticalSection
>が効きませんでした

コードを張ってください https://ideone.com

206 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:10:29.42 ID:gW6L7jQM.net]
>>201
>>199で書き方が悪かったと言ってるから解決済みだぞ

207 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:12:55.86 ID:yS8KpDml.net]
>>200
スタン・ハンセンとハルク・ホーガンかなあ。
プロレスについては詳しくないので、プロレススレで

208 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 04:28:08.59 ID:yA+QVyZU.net]
1プロセス内に、複数のスレッドを起動できる。
1対多の関係

それら同一プロセス内の複数のスレッドを調停するのが、critical section じゃないの?

209 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 04:33:51.34 ID:aGS6McBI.net]
>>204
まちがってはいないがアバウトすぎる…
スレッド固有のデータは何?
スレッドで共有するデータは何?

210 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 06:46:03.90 ID:hynzgwek.net]
馬場アンドレ



211 名前:デフォルトの名無しさん [2022/03/27(日) 06:51:08.16 ID:nbMAc3Vl.net]
実は「ウィー!」と言ってなかった スタン・ハンセン雄たけびの真相: J-CAST ニュース
https://www.j-cast.com/2015/10/08247400.html?p=all
2015年10月08日18時42分


🤘ウィー!

212 名前:sage [2022/03/27(日) 07:55:58.79 ID:wX3DpwsS.net]
ちと出遅れたが
WinMainの第3引数は LPSTR
UNICODE版はスレチ

213 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:41:58.12 ID:uW5IEa4H.net]
LPWSTR GetCommandLineW();

214 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:16:20.60 ID:mfendAKw.net]
wWinMain(int, wchar_t**)
はい論破

215 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 14:13:00.54 ID:uW5IEa4H.net]
キーワード同士でカードゲームみたいに対戦している気分になってくるな…

216 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 14:19:54.35 ID:LVDZu36U.net]
wWinMainは長いことmingwでサポートされてこなかったので

217 名前:sage [2022/03/27(日) 23:11:37.78 ID:wX3DpwsS.net]
WinMain function (winbase.h)
https://docs.microsoft.com/ja-jp/windows/win32/api/winbase/nf-winbase-winmain

Some programming frameworks might provide an alternative entry point that provides a Unicode command line. For example, the Microsoft Visual Studio C++ complier uses the name wWinMain for the Unicode entry point.

218 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 10:57:12.74 ID:PKvr+8WT.net]
現在プリンタ選択ダイアログを自作していて、質問があります。
印刷コモンダイアログに表示されているプリンタ名はEnumPrintersで取得できたのですが、アイコンを取得する方法がわかりません。
どうすればアイコンを取得できますか?

219 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 19:37:38.68 ID:X0VysTPG.net]
それ俺も知りたいわ
どっかのプリンタ関連のdllにあるだろうけど

220 名前:蟻人間 mailto:sage [2022/04/05(火) 19:59:11.48 ID:8xa3kqbX.net]
https://stackoverflow.com/questions/59685889/how-to-get-printer-icons



221 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 22:36:38.88 ID:X0VysTPG.net]
あーCOMオブジェクトか
C#でもサクっと書けないやつだな

222 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 19:20:29.72 ID:yz+LtdIo.net]
>>216
ありがとうございます
参考にします

223 名前:デフォルトの名無しさん [2022/04/07(木) 19:12:44.04 ID:mVtcUlDy.net]
ウィンドウのリサイズイベント(WM_SIZE、WM_SIZING等)が来た時、ユーザーが直接そのウィンドウに対してリサイズを行ったのか、
ディスプレイ解像度等が変わり、システムの都合で結果的に変わったのかを判定したいと考えています。
ディスプレイ設定が変わった場合はWM_DISPLAYCHANGE等で判るので、
ユーザーが能動的にウィンドウをリサイズしたかどうかの判定ができればよいと思うのですが、
何か良い判定方法はあるでしょうか。

224 名前:蟻人間 mailto:sage [2022/04/07(木) 19:39:54.47 ID:R7ASnwbf.net]
>>219
WM_ENTERSIZEMOVE
WM_EXITSIZEMOVE

225 名前:デフォルトの名無しさん [2022/04/07(木) 22:02:00.24 ID:mVtcUlDy.net]
>>220
よさげなメッセージがあったんですね!
ありがとうございます!

226 名前:デフォルトの名無しさん [2022/04/07(木) 22:34:26.91 ID:mVtcUlDy.net]
https://stackoverflow.com/questions/1826165/wm-entersizemove-wm-exitsizemove-when-using-menu-not-always-paired
ここによると、WM_ENTERSIZEMOVEが来てもリサイズや移動がキャンセルされるとWM_EXITSIZEMOVEが来ない場合があるようで、
その場合でもWM_ENTERSIZEMOVE中のWM_CAPTURECHANGEDで終了が判定できるとのことです。
たしかにタイトルバーからサイズや移動をキャンセルするとそのような動きでした。
これで解決しそうです。ありがとうございました。

227 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 23:19:33.94 ID:gMbVpyAJ.net]
全ウィンドウを「並べて表示」したりした場合には対応してるのかい

228 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 01:10:43.73 ID:MjaozZ+o.net]
鬼門エアロスナップもよろしく

229 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 15:18:23.25 ID:ZELibu1M.net]
スケーリング変更で実質解像度が変わった場合もWM_ENTERなんちゃらが来るね
WM_DISPLAYCHANGEも来るから区別は付くかな

230 名前:デフォルトの名無しさん [2022/04/09(土) 22:15:49.34 ID:d9RaMPBt.net]
画面端の四隅に独自スナップはやったなあ
吸い付くと気持ちいいのよね



231 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 22:35:18.94 ID:unOoTfDz.net]
osの画面の位置設定が、吸いつくくせにぴったり揃わず微妙にずれる
ふざけた動作だったな

232 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 09:07:01.55 ID:67K4hItk.net]
windows10になってから
座標を0,0にしても少し隙間が空くようになったのもふざけてる

233 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:51:01.29 ID:ZzvqID4a.net]
10は枠が透明になったふざけた仕様
何の意味あんのあれ

234 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 12:00:36.82 ID:qE10hPc2.net]
最低限必要な処理性能を引き上げることで
グラフィックボードやPCの買い替えを促進することができました。

235 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 13:17:17.03 ID:wqaUV7TG.net]
実際AVX2未満だと256bit命令でまともな事ほとんどできないからHaswell未満切り捨てたくなる気持ちは分かる

236 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 16:03:53.83 ID:Asxcv1id.net]
MSゴシックなどのフォントで、DrawTextで右寄せ(DT_RIGHT)の文字列を描くと、
イタリック体のときに右が欠けてしまうのですが、こんな仕様なのでしょうか?

237 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 16:41:45.60 ID:/q14vola.net]
はい

238 名前:デフォルトの名無しさん [2022/05/12(木) 23:26:02.37 ID:zDTh1Mrl.net]
>>232
日本語のことなど真剣に考えてませんから

239 名前:蟻人間 mailto:sage [2022/05/12(木) 23:36:32.49 ID:M86RRSGr.net]
TEXTMETRIC.tmOverhang

240 名前:蟻人間 mailto:sage [2022/05/12(木) 23:39:10.86 ID:M86RRSGr.net]
https://tutorialmore.com/questions-1814307.htm



241 名前:蟻人間 mailto:sage [2022/05/12(木) 23:41:39.46 ID:M86RRSGr.net]
DT_NOCLIP付ければうまく行くかも。

242 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:10:08.96 ID:RjF2gA5W.net]
>>232
最後にスペース足しとけ

243 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:33:38.71 ID:ezCooE+T.net]
そもそもMSゴシックを斜体にするのがダサいので、DrawTextとしても想定外という説

244 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 17:05:13.85 ID:rgkAeD2H.net]
どのフォントでもそうなるんでは?

245 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 17:38:27.24 ID:9J+8i6yQ.net]
自力で右端を広げないといけないんですかね。
ただ、DT_WORDBREAKやDT_EDITCONTROLを付けて自動折り返しを設定していると、
どこで折り返されるかは事前に想定できないので、行末にスペースというのも難しそうです。

246 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 17:45:14.82 ID:vDWzHeJO.net]
斜体だけ個別対応する
俺は気にしない

247 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 06:40:29.02 ID:QdnN/13A.net]
テンポラリのビットマップに描画して実測する関数作っとけば以後は気にせずに済む

248 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:17:42.44 ID:px60Na0a.net]
うわぁ…

249 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 12:03:14.21 ID:ke+jmrJb.net]
>>243
オラも対応するならその方法ダナ!

250 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 14:53:55.20 ID:w68O57ui.net]
使ったことないから知らないけどGDI+,DrawStringならどうなんだろうね



251 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 13:41:20.24 ID:IY5aTV4U.net]
アスペクト比を固定したいため、ウィンドウの最大化を完全に無効にしたいのですが、フレームをダブルクリックしたり、Windowsキー + ↑での最大化を塞ぐにはどのように処理すればいいでしょうか?

252 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 14:34:51.30 ID:ADYYsKfQ.net]
WM_GETMINMAXINFO

253 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/06/07(火) 14:38:53 ID:ET6AjTpg.net]
ウィンドウスタイル

254 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 14:39:30 ID:IY5aTV4U.net]
>>248
ありがとうございます!
一度やってみたのですが、うまくいかなかったので、やり方がよくなかったのかもしれません
Unityという特殊な環境が影響してるのかもしれないですが、、、

255 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 14:41:36 ID:IY5aTV4U.net]
>>249
後出しですみません
ドラッグでのサイズ変更は許可したいので、ウィンドウスタイルでは無理なのかなーと思ってます
今のところWM_SIZINGはうまく機能してるようです

256 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 14:54:06 ID:VnjxmjN7.net]
ムリだと思いますゥ~じゃねえよいいからWS_MAXIMIZEBOX抜けや

257 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 15:01:19 ID:IY5aTV4U.net]
>>252
そんなのは一番最初に抜いてる

258 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 15:31:44.87 ID:OnF3qCRP.net]
ちゃんと抜いてんならそれだけで自動的にシステムメニューも含めて
タイトルバーダブクリやWin+↑も無効化されるはずだがな

259 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 15:35:08.03 ID:HZXBW/m6.net]
メッセージループの入り口で
WM_NCLBUTTONDBLCLK 等のメッセージを捨てればOK

260 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 16:05:01.49 ID:IY5aTV4U.net]
>>255
ありがとうございます
ダブルクリックの方はこれで回避できるんですけど、Windowsキーの方がどうやっても防げなくて、、、
WM_WINDOWPOSCHANGING を拾えばいけるかなー



261 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 16:09:54.86 ID:IY5aTV4U.net]
>>254
Windowsキーの方は正確には、Windowsキー + SHIFT + ↑ ですね

262 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 16:55:24.79 ID:LNP3bNny.net]
正確には、ってかそれじゃ最初からスナップによるリサイズを防ぎたいって全然違う質問じゃん
SYSCOMMAND監視して無理矢理引っぺがしたりはできるけど行儀悪すぎだから
任意のウィンドウサイズになってもボックスでレンダリングのアスペクト比維持した方がマシだな

263 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 17:24:17.68 ID:HZXBW/m6.net]
>>256
SPYでその時にどのメッセージ(多分複数)が来てるか調べて
どれを捨てる or 改変すれば望みの動作になるかを考えろ

264 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 21:10:34.66 ID:TZU+Jbyx.net]
最大化はダイアログのスタイルにして抑止するのが定石だけど誰も書かないので一応
C#のFormBorderStyle = FixedDialog の時のウィンドウスタイル=0x16c80000 拡張ウィンドウスタイル=0x00050101
これでスナップの影響も受けないし、その上でサイズ変更もやりたければできる。
許容しつつアス比を維持するのもいい。ゲームのフルスクリーンモードとかそんな感じだろうし

265 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:22:44.87 ID:K2/9xttr.net]
HINSTANCEかHWNDから、そのプロセスが貰っているコマンドラインオプションを知る方法ってある?

266 名前:蟻人間 mailto:sage [2022/07/03(日) 16:43:25.38 ID:wwKaul6r.net]
>>261
WMIか、NTAPIのNtQueryInformationProcessを使う。

https://stackoverflow.com/questions/71237606/get-full-command-line-from-process

https://github.com/reactos/reactos/blob/b671b1cf8f7c3dce718d81f9067e07c66f878498/base/applications/taskmgr/perfdata.c#L585

267 名前:蟻人間 mailto:sage [2022/07/03(日) 16:44:52.75 ID:wwKaul6r.net]
GetWindowThreadProcessId使えばHWNDからプロセスID (pid)が得られるはずだ。

268 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 17:40:46.92 ID:K2/9xttr.net]
>>262
thx
もう晩酌始めちまったんで
素面に戻ってからやってみるわ

お、飯が炊けた
酢飯と酢の物作んなきゃ

269 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 14:56:13.92 ID:6WIGt+Xj.net]
SetWindowPlacement, GetWindowPlacement を使ってウィンドウ位置の保存と復元をしています
マルチモニター環境でも当該モニターで表示されていたウィンドウ情報の保存と復元が Windows10 以前では行えていましたが、
Windows11 になってからは、マウス操作しているモニターで全てウィンドウが表示されてしまいます

これはプログラム側で何か修正が必要なのか、Windows11 上の設定(アプリのプロパティ?)が必要なのでしょうか?
Windows11 でマルチモニターの仕様が変わったというのは分かりますが、具体的にどのように対応すればいいのか分かりません

よろしくお願いします

270 名前:蟻人間 mailto:sage [2022/07/13(水) 15:03:09.79 ID:H8j4+v2o.net]
"); //]]>-->
271 名前:ply_link">>>265
lengthメンバーはセットしているかな?
[]
[ここ壊れてます]

272 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 15:53:47 ID:LawUXVQN.net]
標準の仮想デスクトップとかも追加されてるのでちゃんと動くのかよくわからんよな

273 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 17:22:23.86 ID:6WIGt+Xj.net]
>>266
構造体のゼロクリア、length メンバへの sizeof 設定は行っています
使用しているメンバは rcNormalPosition と showCmd のみです

>>267
Windows11 では、モニターのオンオフで狂ってしまったウィンドウ位置の復元を
するようになったという程度の知識しかありません(正しいかどうかも分かりません)が、
実機で色々テストするしかないかもですね(Windows11 にしたくない)

274 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:38:26.85 ID:ztzbKaJ8.net]
ベータ以前の11のことだからバグかもしれないのがな
11.1で完成するOSなんだろうな

275 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:19:01.63 ID:je7st1fi.net]
手元の開発環境を Windows11 & マルチモニターで揃えてテストしてみると問題は再現しませんでした
これは問題が発生した環境依存によるものの可能性が非常に高くなりました

お騒がせしましてすみませんでした

276 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 09:23:12.50 ID:nl1lv8Ha.net]
名前付きパイプで質問です。
Windows10(x64)で64ビットアプリ(サーバー)と32/64ビットアプリ(クライアント)でパイプ通信するのですが、クライアントが64ビットの場合は問題なし、32ビットの場合は動作したりしなかったっりで、サーバーのCreateNamedPipe関数のnMaxInstancesを1から255にしたら解消しました。
クライアントは1つだけなので1で良いと思ったのですが、何なんだろう?

277 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 10:36:39.51 ID:nl1lv8Ha.net]
>>271
再現性なかったわ。
すまん、忘れてくれ。

278 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 18:26:55.94 ID:fMGzaZG1.net]
プログラ厶の最低限の文法わかってる人間が、WindowsAPIを使用したGUIプログラムを作りたい場合に、おすすめの本ってありませんか?

正直WindowsAPIのハンドルとかハンガリー記法とかで面食らってぶつかってます。

279 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 18:51:12.11 ID:od2hcCSg.net]
> WindowsAPIを使用したGUIプログラムを作りたい

そもそも止めとけ楽な道を進めと思うんだけど、なんで?

> おすすめの本

今時そんな本あるのか分からないけど、猫でもわかるシリーズのWEBサイトでいいんじゃないの

280 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:38:38.71 ID:qDGm82dw.net]
NT4.0や95の頃の書籍はメッセージやハンドル等丁寧な解説がされていたと思う



281 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 19:54:38.78 ID:BV8Vz3Ix.net]
>>273
その程度でなんで面食らうのか面食らってるが
その都度ググっていけば充分じゃないかな

282 名前:アリ人間 mailto:sage [2022/07/26(火) 20:46:20.96 ID:SFGiBpCo.net]
Win32でGUIつくるならMsgCrackとRisohEditorを使うといいよ。

283 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 21:47:08.84 ID:K/AxbL6V.net]
>>274
今まで他の言語で楽をさせてもらってたのは、他の方のおかげだと気付いて、実際に自分も勉強したいという思いです。

>>275
まさにおっしゃる通りで、先日なんとか相馬 俊治さんという方の本を見つけました、古い本のほうがわかりやすいです。

284 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 10:07:57.73 ID:utvRDsk1.net]
C#でもWndProcとかに手を付けると結局Win32APIレベルのメッセージループの仕組みの知識が必要だし
C/C++でWin32APIだけ使ったメッセージループ検証用GUIアプリを用意しとくと捗るよ

285 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 02:15:20.39 ID:pJ1A3nc7.net]
C++でクラス化ラップ化する前のピュアなメッセージループをなら猫かな
そこから先は ラップしてるライブラリの方言が出てくるだろうし

286 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 12:31:23.06 ID:YQlRXD6d.net]
>>277
ありがとうございます!ツールももちろんですがこの作者のHP自体が非常に貴重ですね!

>>279
ありがとうございます!ラップしてしまうとWin32APIの挙動が見えなくなるので、生で見える環境を用意しておいたほうが良いようなイメージでしょうか?

287 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 14:57:50.07 ID:ei01gCPD.net]
>>277
RisohEditor良さそうやね
見た目レトロで良いからネイティブWin32で超軽量GUI作りたいってシーン結構あるから重宝しそうやわ

288 名前:蟻人間 mailto:sage [2022/08/01(月) 16:08:58.49 ID:eMiJU5As.net]
MsgCrackにWM_DESTROYを入力すると
void OnDestroy(void)
って出てくる。
これを#include <windowsx.h>のHANDLE_MSGマクロと一緒に使うと吉。

289 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 16:24:30.82 ID:n7o9xXsd.net]
自前で巨大なswitch文を並べるんや

290 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 16:46:02.44 ID:lS5VDU2q.net]
MFCを勧める人はいないんかい・・・



291 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 17:30:54.15 ID:EZlLH+eW.net]
統合環境の力技でマクロ埋め込んだりするしねぇ 癖や方言が強い

292 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 19:48:54.56 ID:kaXTkJ9F.net]
いまさら MFC を使いたいんですけど、まずどうすればいいですか?

293 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 20:38:09.58 ID:Z+HQWfkn.net]
>>284

windowsx.hで定義されてるHANDLE_MSG()マクロを使えば
いちいちcase文を書く必要がない

switch (uMsg)
{
HANDLE_MSG(hw

294 名前:nd, WM_CREATE, OnCreate);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
...
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

使わないメッセージはスルーしていい
OnCreate()やOnCommand()のプロトタイプもwindowsx.hで定義されてるので引数を間違ったらエラーで教えてくれる
[]
[ここ壊れてます]

295 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 17:15:54.00 ID:64Iv6nA4.net]
#define BEGIN {
#define END }
に近い感じなので マクロにお任せってあまり好きではない(個人的感想)

296 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 21:12:37.20 ID:NatehBYU.net]
false、False、FALSE色々あるなあ

297 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 22:59:22.62 ID:clR4IgPX.net]
こういうシステム的な部分を作るとき厄介なのが細かい引数間違えたりすることなのですべて定義されてるのは助かるよ
windowsx.hに入ってるってことはMS推奨なんだろうし

298 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 08:49:02.53 ID:HRex91Fl.net]
そのヘッダか忘れたけどコモンコントロール系はマクロが無いとやってられん
それ前提でMSDNにリファレンスがあるし

299 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 12:38:08.58 ID:t9tQNkon.net]
そこでWTLですよ

300 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 23:45:13.40 ID:+fTvsC8V.net]
感動した
https://github.com/CobaltFusion/DebugViewPP



301 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 23:07:37.30 ID:iuI8tOa1.net]
そういえばバイナリエディター「Binary Editor BZ」はWTL使ってたはず

302 名前:デフォルトの名無しさん [2022/08/05(金) 02:46:33.66 ID:RasK5Hhu.net]
大きな文字や小さな文字をコマンドプロンプトに同じ行で表示したいのですが可能でしょうか?
設定で変えるのではなくプログラムで結果によって変えたいのですが
よろしくお願いします。

303 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 03:00:58.31 ID:CLX9KL3y.net]
「あ」と「ぁ」みたいに?

304 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 13:41:02.21 ID:w8qsceV0.net]
8pt
   ■                 
   ■  ■     ■ ■■■■■  
 ■■■■       ■    ■   
   ■ ■     ■  ■■■■■■ 
  ■■■■■■   ■     ■   
 ■■■■   ■  ■     ■   
■  ■■   ■  ■■ ■■■■   
■ ■■   ■■  ■■ ■  ■■■ 
■■■■  ■■    ■ ■■■■   

16pt
      ■                ■               
      ■     ■         ■■   ■      ■■■  
     ■■■■■■■■         ■■   ■■■■■■■     
 ■■■■■■■■■            ■■        ■■     
     ■■               ■■        ■■     
     ■■   ■■          ■■        ■■■■■  
     ■■■■■■■■■        ■    ■■■■■■■■■■  
     ■■■ ■■ ■■■       ■         ■■     
   ■■■■  ■■   ■■     ■■         ■■     
  ■■ ■■ ■■     ■■    ■■         ■■     
 ■■  ■■ ■■     ■■    ■■ ■       ■■     
 ■■  ■■■■      ■■     ■■■   ■■■■■■     
■■   ■■■       ■■     ■■■  ■■   ■■■■   
■■   ■■       ■■      ■■   ■    ■■ ■■■ 
■■  ■■■     ■■■       ■■   ■■   ■■  ■■ 
 ■■■  ■   ■■■■        ■■    ■■■■■      
          ■■                           

305 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 18:10:13.24 ID:uan7vRb+.net]
色なら変えられるが
https://nodachisoft.com/common/jp/article/jp000152/

306 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 22:00:13.48 ID:x2QrbwhX.net]
>>296
不可能ッス!!

307 名前:デフォルトの名無しさん [2022/08/05(金) 23:51:13.34 ID:2v49rt6J.net]
NFT市場が2年で300億円→2兆円に急拡大したワケ
「保有する」だけではない、アート作品につけられた「価値」

市場規模ですね。これは少し古いデータになりますが、直近では、だいたい
2兆円ぐらいの市場規模になります。去年の3月ぐらいから盛り上がってきて、
2019年は300億円ぐらいと言われていたものが急拡大して、今や2兆円と
なっています。
一番大きいのが「コレクティブル」というものです。実際のNFTでいうと、
「CryptoPunks(クリフトパンクス)」とか「Meebits(ミービッツ)」など、
デジタルアートで、これが76パーセントを占めています。
他にはゲーム、スポーツの会員権のようなもの、メタバース上での利用、
アートなどに使われています。

308 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 00:56:36.07 ID:c+phwPql.net]
>>301
どうせビットコと同じ運命…

309 名前:デフォルトの名無しさん [2022/08/06(土) 01:06:28.07 ID:A+9lJBuH.net]
>>297
いえ、フォントのサイズです。
>>299
色も変えたいので見てみます。ありがとうございます。
>>300
そうですか。ありがとうございました。

310 名前:デフォルトの名無しさん [2022/08/06(土) 09:37:57.13 ID:Cm9is4wi.net]
>>291
>windowsx.hに入ってるってことはMS推奨なんだろうし

20年くらい前なら同意するが
今はもう非推奨



311 名前:デフォルトの名無しさん [2022/08/06(土) 09:38:29.30 ID:Cm9is4wi.net]
>>285
ダメ、絶対。

312 名前:デフォルトの名無しさん [2022/08/06(土) 09:39:01.65 ID:Cm9is4wi.net]
>>287
やめとけ

313 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 10:58:35.84 ID:gIOgTSvM.net]
じゃあどれならいいんだよw

314 名前:デフォルトの名無しさん [2022/08/06(土) 15:56:25.30 ID:eSBCWCwI.net]
Win32API

315 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 16:07:28.86 ID:LLV93bqs.net]
知識としては必要だが、最初から最後までフレームワーク使わずにWin32だけでやるのは時間の無駄だろう。

316 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:02:31.04 ID:E+U3mr6/.net]
そうでもない

317 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:03:10.71 ID:f4eIJ5Mn.net]
>>309
フレームワークの学習コストはどのように評価しますか?

318 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 19:07:52.04 ID:LLV93bqs.net]
この先そのコストを回収できるくらいプログラミングする見込みがあるかどうか次第だな。

319 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 20:41:33.14 ID:mK2UhqOX.net]
そのWin32APIのラッパーとなるべきフレームワークがことごとくゴミなんだもんよ
MS金余ってんだからQtでも買っときゃよかったのに

320 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 20:42:57.75 ID:A61GDKit.net]
>>312
学習した結果フレームワークがうんこだったと自覚したときの絶望感を、学習前にどのように織り込めばいいですか?



321 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 20:58:55.11 ID:LLV93bqs.net]
素のwin32と既存のフレームワークと自前のオレオレフレームワークのどれが一番うんこか次第だな。

322 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:37:39.73 ID:A61GDKit.net]
>>315
あなた自身はどう思っていますか?

323 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:39:07.40 ID:nAr30yJy.net]
win95時代にCで作ったハンドルメモリリーク検知付きのフレームワーク()があるけどいまだに世話になってる
新規でならC#で適当に作るがアプリの寿命を考えるといまだに上記フレームワーク()になるだろう

324 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 21:54:12.10 ID:S1WP3eVH.net]
男なら誰しも自分だけの車輪再発明・・・じゃなかったフレームワークを心に持つよな

325 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 22:13:31.50 ID:mZ1/a9El.net]
wxWidgets、DelphiのVLC、それの模倣のLazarus Component Library (LCL)位が今でも活発に開発されてるWin32フレームワークか。
wxWidgetsとC++Builder(VCL)には散々世話になった。

326 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 22:14:29.50 ID:mZ1/a9El.net]
×DelphiのVLC
○DelphiのVCL

327 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 21:24:24.65 ID:WV/2UEsV.net]
>>317
メモリーリークは
https://mevius.5ch.net/test/read.cgi/tech/1652160275/365
に一晩でちょいちょい、て書いたやつを貼ったら沈黙されてしまった…
普通誰でもそうすると思うのに、rust! rust! と連呼されてもねえ

でもハンドルリークは考えたことなかったなあ…

328 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 22:03:11.08 ID:fAQAAmLc.net]
>>321
> 沈黙されてしまった…
相手されてないだけかと...

329 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 22:19:05.28 ID:PKSgBlrY.net]
>>322
なる

330 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 22:21:12.86 ID:c43tg8Rc.net]
ならんだろ。



331 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 01:28:22.61 ID:6wLu/xJX.net]
オレオレライブラリ作って悦に入るのは初心者レベル2のやること

332 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 16:24:46.11 ID:rOh0RBr3.net]
経験しておくとライブラリの手抜きがわかってシステムのバグを予想しやすくなるけどな

333 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 17:46:08.17 ID:qUOj9dBB.net]
>>318
「車輪の再発明だから駄目」という理念は、先に進んでいるアメリカに有利な言葉。
後発者が上に上がって来ささないため、メンタルからくじく。
アメリカはそういう国。

334 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 18:48:02.83 ID:W71axh2R.net]
Googleは車輪の再発明しかしてないけどな
検索だって最初じゃない
その代わり頭の良い奴らが本気でやるから良いものになる
日本が得意としてた事だったがな

335 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 10:36:30.31 ID:LrEHeo01.net]
頭の悪い人が足引っ張る法律作って海外に先を越されるパティーン

336 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 10:47:36.26 ID:VNnB4sci.net]
>>287
普通に使えばいい。
俺も使ってる。

337 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 14:36:52.56 ID:+9oi41Wm.net]
>>327
GNUも再発明なんか?w

338 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 15:43:33.22 ID:AOxAYYNB.net]
>>331
彼らは、自分達が造ったものを遣わせてやりたいから「これ以上の再発明はするな」
と言ってくるが、自分達も実は再発明した結果であることは棚に上げている。

339 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 16:18:07.18 ID:Z5BB7x+B.net]
ここで車輪の再発明の指摘は的外れ
発明なんて一切してない
他人の成果物をソース読んでないからといって横取りする傲慢野郎

340 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:10:35.77 ID:YGdpIuz3.net]
いまさらソフトウェア開発競争を国家間の諍いの次元でしか捉えてないやつは
一行もプログラム組んでないのがアリアリだねw



341 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:25:51.34 ID:AOxAYYNB.net]
国家間というより、先に作ってしまった人が他人に別のものを作ってもらいたくない
心理が働くと、「車輪の再発明禁止」という如何にもまっとうなことらしき標語
となる。

342 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
車輪の再発明禁止は高機能なソフトウェアをオープンソースにするということで囲い込み、再発明させる気を起こさせなくしてる
オープンソース文化が強いものを更に強くしてしまってる

343 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 23:02:24.27 ID:dK5hO1Lx.net]
作って楽しそうなものなもものの内、芸術性を伴わず技術だけで
作れるようなものはほぼ全てオープンソースで無料になってしまっている
(フォトショップみたいな高機能なものは除く)。

344 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 23:10:53.60 ID:AwPJsiC0.net]
再発明をしないまでもその部品と構成や仕組みを知っていると高機能なアプリ開発などへの機転や応用が利きやすいと思う

345 名前:デフォルトの名無しさん [2022/08/16(火) 01:19:06.38 ID:agNT7bMr.net]
以下のコードが動かなくて困ってます。

pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);
AVIStreamGetFrameClose(pgfFrame); ←これを実行したら落ちる

AVIStreamGetFrameCloseを実行しなくても動くのですが、再度Openした時に少しずつメモリを食いつぶして行くので困ってます。
止まった時にVC++の実行ボタンを再度押すと、内部で使ってるDLLがアンロードされてその後は動くようになります。
そうなると何回でもOpen→Close出来る様になり、メモリも食いつぶしません。
どうしたらいいんでしょうか?

346 名前:デフォルトの名無しさん [2022/08/16(火) 11:35:45.33 ID:2x3mrzZQ.net]
>>329
ほんそれ

347 名前:デフォルトの名無しさん [2022/08/16(火) 11:41:24.43 ID:2x3mrzZQ.net]
>>339
AVIStreamRelease
(こっちは自動 Close してくれるとのこと)

348 名前:デフォルトの名無しさん [2022/08/16(火) 14:36:20.03 ID:agNT7bMr.net]
>>341
詳しく書くとこうなってるんです。
AVIStreamGetFrameCloseだけ落ちるんで困ってます。
これを実行しなくても動くのですが、複数回Openするとどんどんメモリを食いつぶすので困ってます…

AVIFileOpen(&paviFile, FileName, OF_READ | OF_SHARE_DENY_NONE, NULL);
AVIFileGetStream(paviFile, &paviStream, streamtypeVIDEO, 0);
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);

if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる
if(paviStream != NULL){ AVIStreamRelease(paviStream); }
if(paviFile != NULL){ AVIFileRelease(paviFile); }

349 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 14:45:35.08 ID:ySPaUmMI.net]
そういう不具合が出るけど是正が困難な処理は別プロセスとして動かして終わったらそのプロセスを終わらすといいよ
解決したら統合すればいい

350 名前:デフォルトの名無しさん [2022/08/16(火) 15:02:38.50 ID:2x3mrzZQ.net]
プロセス別けて落とすのも同じ効果だと思うけど
DLLを自前でアンロードするコードを入れても良いんじゃないかな

そもそも
pgfFrame = AVIStreamGetFrameOpen(paviStream, (LPBITMAPINFOHEADER)AVIGETFRAMEF_BESTDISPLAYFMT);

この間の処理に問題があるんじゃないかな

if(pgfFrame != NULL){ AVIStreamGetFrameClose(pgfFrame); } ←これだけ落ちる



351 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 15:28:13.38 ID:agNT7bMr.net]
>>343-344
ありがとうございます。

>この間の処理に問題があるんじゃないかな
この間は何にもしてなくても落ちちゃうんですよね… なんでだろう?

DLLを自前でアンロードする事も視野に入れてもう少し試行錯誤してみます

352 名前:デフォルトの名無しさん [2022/08/16(火) 15:45:44.34 ID:2x3mrzZQ.net]
AVIFileExit();
してないというオチ?

353 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 15:59:37.24 ID:agNT7bMr.net]
>>346
AVIFileInit()とAVIFileExit()
前に両方入れてみたんですが、入れても入れなくても何も変わらなかったんですよね…
あとでまた試してみます。

354 名前:デフォルトの名無しさん [2022/08/16(火) 16:18:58.86 ID:2x3mrzZQ.net]
本気で解決したいなら再現する全ソースコードを晒すのと
実際に読もうとしてるファイルのURLを晒して逝け

355 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 17:58:27.74 ID:agNT7bMr.net]
>>348
あとでその部分だけまとめて再現できるか確かめてみます

356 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 20:04:29.51 ID:xodQRDI1.net]
必要最小限で描いて観たが全然問題無いぞ

357 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:22:52.88 ID:agNT7bMr.net]
>>350
原因がわかりました。
普通にやると問題なくて、ここにあるコーデックの.dllをリンクすると
AVIStreamGetFrameCloseが上手くいかないようでした。
https://sourceforge.net/projects/x264vfw/files/
このコーデックを使う必要があるのでどうにかならないでしょうかね。

358 名前:351 mailto:sage [2022/08/16(火) 21:27:27.79 ID:agNT7bMr.net]
正確にはコーデックの.dllをリンクして
そのコーデックを使っているファイルを読み込むと
AVIStreamGetFrameCloseが失敗するということです。
.dllをリンクしててもそのコーデックを使ってないファイルであれば
AVIStreamGetFrameCloseが失敗する事はなかったです。

359 名前:351 mailto:sage [2022/08/16(火) 23:11:48.85 ID:agNT7bMr.net]
古いバージョンにしてみたら直りました!
これで普通に動いてるのでこのまま動かしてみます。
みなさんありがとうございました。

360 名前:デフォルトの名無しさん [2022/08/17(水) 09:12:41.44 ID:17qdbn+g.net]
バカの三大特徴

情報を小出しにする&後出しする
自分は間違ってないと思い込む&言い張る
正しい解決策に進まずすぐに別の山に登ろうとする



361 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 10:05:31.13 ID:75soL8XV.net]
FFmpeg 使った方が良くね?

362 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 11:59:16.72 ID:75soL8XV.net]
ああ
それを言うなら ffdshow の方だったかな
しかしまだ使えるんかなこれ

363 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:29:05.82 ID:9oKj6z2J.net]
xvideos

364 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 16:22:19.61 ID:ChTfYzF8.net]
日本語キーボード日本語Windowsで英数キー(CapsLockキー)のアップを捕捉する事って不可能?
レジストリでキーマップを変えて英数キーを違うキーに割り当てた後なら一般的なキー同様に捕捉出来ることは確認できたけどそういう迂回方法無しで出来る方法があれば教えてもらいたい

365 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 17:26:47.15 ID:Zp58Sca6.net]
GetKeyState( vk_code )
 VK_CAPITAL CapsLockのトグル状態 のほうじゃなく
 VK_OEM_ATTN 仮想キーコード 240 (0xF0) で今の押下状態は取得できそうではあるな

IMEはちゃんと shift 無し Caps lock キーを受け取って反応できてるんだし

366 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 18:22:10.86 ID:9oiM0iks.net]
ないです

367 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 18:27:49.15 ID:x6NjRtAl.net]
ノートパソコンなどの省スペースキーボードについてるFnキーも拾えないんだよなあ、GetKeyState&GetAsyncKeyState

368 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 21:05:07.73 ID:pMMCnUP8.net]
fnはosの預かり知らないキーなので同列にすんなハゲハゲハゲハゲハゲ!!!!!!!!!!!

369 名前:デフォルトの名無しさん mailto:sage [2022/08/22(月) 21:25:09.66 ID:6BQsurqE.net]
キーボードのコントローラーが勝手に処理してるでしょう
CPUまで線がつながってない感じ

370 名前:デフォルトの名無しさん mailto:sage [2022/08/23(火) 07:39:49.30 ID:W/9/eWQQ.net]
>>359
SetTimerとかで定期監視するしか無さそうか



371 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
今はarduinoとかで自分好みのキーボード作れる時代なんだぜ
知らんけど

372 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 10:40:49.53 ID:lf60l9vY.net]
虫歯が痛いなら総入れ歯にしましょう!レベルの解決策w

373 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 12:29:39.93 ID:NrrxL3kr.net]
禿げてきたら丸坊主にしましょう!

374 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 12:48:26.23 ID:im0ZYKIt.net]
なんて日だ!

375 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 12:36:32.64 ID:twZsJrmt.net]
>>355
ライセンスはどうしてるの?
GPLやLGPLだから、リンクすれば最低でも自作プログラムのオブジェクト
ファイルの公開が必要になるだろう。
別コマンドで実行する場合は、*.exe が自作アプリと合わせて二つ必要になるし、
データの受け渡しの効率も落ちる。

376 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 22:59:42.92 ID:L2uZLmEf.net]
質問です。

GetCharABCWidths()を用いて、TextOut()で描いた文字のABC構造体を取得しています。

Arialフォントのような欧文フォントを用いてTextOut()で"あ"を描いた場合、そのフォント内には"あ"という日本語文字は入っていないため、適当な代替フォントに置き換えられて"あ"が描かれるようです(たぶん「フォントリンク」という機能だと思います)。

この時にGetCharABCWidths()で得られるABC構造体には、描かれた"あ"の寸法が入っておらず、ダミーの寸法が入ってきてしまいます。

msdnのGetCharABCWidths()APIの項には、
The ABC widths of the default character are used for characters outside the range of the currently selected font.
とあるので、APIとしては仕様どおりの動作なのですが、では、描かれた"あ"のABC寸法を得るにはどうすればよいのでしょうか?

以上、よろしくお願いします。

377 名前:デフォルトの名無しさん [2022/09/04(日) 10:57:34.63 ID:RQxkFcRF.net]
GetTextExtentPoint32()
SetTextJustification()
DrawText()

378 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 16:57:14.39 ID:aZX/9mcR.net]
>>371
ありがとうございます。

GetTextExtentPoint32()だと、文字の左余白(A), 文字自体の幅(B), 文字の右余白(C)の
和の値(A+B+C)しか得ることができません。

そうではなくて、各文字について、A,B,Cそれぞれの値が知りたいのです。
それを返してくれるのがGetCharABCWidths()なのですが、>>370に書いたように
正しい値が返ってこない場合があります。

一応、自分で考えた対処方法として、
1. GetTextExtentPoint32()で、文字のA+B+Cの値を取得
2. その幅を持つ白色の描画領域を確保し、その原点位置から黒色でその文字を描画
3. 領域に描画された結果(白・黒)を左端から走査して、左余白(A)を得る
4. 同様に右端から走査して、右余白(C)を得る
5. 手順1で取得したA+B+Cの値からAとCを減じてBを得る
という風にすれば、(どんくさいですが)知りたい値を得ることはできると思います。

ちなみに、実際には、上のやり方そのままではうまくいかないことがありそうです。
というのも、イタリック体にしたりすると、AやCの値がマイナスになることがあるからです。
その場合、上のやり方だと、文字の左右が領域からはみ出て描画されてしまいます。

なので、左右にある程度の余裕を持った領域、例えば幅「100+A+B+C+100」の領域を確保し、
(x,y)=(100,0)の位置に文字を描画する。
そうするとはみ出さずに描画できるので、100の余分な余白があることを考慮に入れて計算すれば、
A,B,Cを得られるだろうと考えています。

でも、こんなやり方は面倒くさい。もっとマシなやり方はないのだろうか・・・。

例えば、フォントリンク?で描画されたときに、どのフォントが使われたのかがわかれば、
そのフォントを明示的にデバイスコンテキストに指定してGetCharABCWidths()呼べば
A,B,Cの幅を得られるはずですが、フォントを知る方法はわかりませんでした。

379 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 17:09:08.67 ID:A8KVTWK8.net]
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-gettextmetrics
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-textmetrica

>日本語文字は入っていない
結局この問題は残るんじゃないかな
確実に日本語グリフが入ってるフォントを指定

380 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 19:32:04.85 ID:aZX/9mcR.net]
ありがとうございます。

作っているアプリの仕様は、
・アプリのユーザは、フォントと文字列を自由に指定できる
・画面上には、指定したフォントで、指定した文字列が描画される

やりたいことは、
・ユーザが上記の操作で描画させた文字列中の各文字について、A,B,Cの幅を知りたい

ということなのです。

本来NGな組み合わせ(例:欧文フォントと、全角まじり文字列との組み合わせ)をユーザーが指定した時、
存在しない文字がいわゆる豆腐(□)にでも化けてくれれば、そこでユーザは別のフォントを
選びなおすはずです。

しかし、文字化けせずに一見正しく表示されてしまうため、困っています。



381 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:44:22.53 ID:047Xbk5t.net]
>>374
ABCなんて何に使うんだろうと思ったら、フォント情報を表示するツールなのか。
GetCharacterPlacement + ExtTextOut / ETO_GLYPH_INDEX あたりで、グリフを直接描画すれば
フォントリンクは効かないはずなので無い文字は豆腐になるはず...

382 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 20:04:11.68 ID:lEq1EKXB.net]
ありがとうございます。
参考にさせていただきます。

可能ならば、無理やり豆腐にするんじゃなくて、フォントリンクで表示されたとおりの文字の情報を取得できるのが理想ですが、難しそうですね・・・

383 名前:375 mailto:sage [2022/09/05(月) 23:27:10.40 ID:ViUtFxr1.net]
>>376
GetCharABCWidthsで取得しても1文字単位でしか取得できないので、筆記体やアラビア文字のように前後の文字や位置によって大きさが変わるような場合には対応できないので、ABCの値は参考程度にしか使えないと思います。

フォントリンク先のフォント情報(LOG

384 名前:FONT)は、メタファイルに出力後そのメタファイルを解析するというちょっとトリッキーな方法で可能です。
https://stackoverflow.com/questions/54050095/how-to-tell-if-a-surrogate-pair-unicode-character-is-supported-by-the-font
[]
[ここ壊れてます]

385 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 20:18:06.15 ID:H7QyPUx+.net]
大変有用な情報、ありがとうございます。

確かに、筆記体のような手を繋ぐフォントの場合、うまくいきませんね。
これは気づきませんでした。
実際にはそういったフォントが使われることはまれなので、大きな問題にはならないかな、と思います。

386 名前:デフォルトの名無しさん [2022/09/10(土) 21:08:59.03 ID:eGqDTe4p.net]
HBITMAP hBitmap; に既に bitmap image が load されているとき
BITMAP bm = {0};
GetObject(hBitmap, sizeof(BITMAP), &bm);
で bm.bmBits の指す場所に pixles data があることは確認出来るのですが
bm.bmBits は何時 GlobalFree(bm.bmBits); すれば良いのでしょうか?
放置しても memory leak の心配はありませんか?

387 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 13:04:53.74 ID:4ex9Us8K.net]
DeleteObject(hBitmap);

388 名前:デフォルトの名無しさん [2022/09/13(火) 22:06:19.57 ID:V8hEwwJT.net]
ウインドウのキャプションを SetWindowText で変更したいのですが

そのウインドウはブラウザ(クローム系)でして
SPY++が使えなくなっているので自作のウインドウ一覧で調べると
ブラウザのトップレベル・ウインドウは、アクティブなタブのキャプションが
ウインドウのキャプションになっており、クラス名は"Chrome_WidgetWin_1"でした

これで取得したウインドウ・ハンドルを使って、ブラウザの位置を操作したり
最小化したりできるので、このハンドルで間違いないはずですが

SetWindowText でキャプションを変更することはできません
ブラウザには使えないということでしょうか
御存じの方、教えて下さると幸いです

389 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 01:18:29.10 ID:LQT6KG16.net]
ウインドウというよりタブなんじゃね?

390 名前:デフォルトの名無しさん [2022/09/14(水) 09:06:44.89 ID:bpmiLen5.net]
そうです
ウインドウのキャプションを変更したいけど
それはブラウザでは、タブのキャプションを変更したいということですね

ブラウザのトップレベルのウインドウハンドルで、GetWindowTextを使って
そのタブのキャプションが取得できるのに
逆に、そのハンドルでタブのキャプションはSetWindowTextでは変更できない
ということのようです

タブが子ウインドウになっていてアクセスできればいいのですが
そこらへんブラウザは色々と特殊な作りなので無理っぽい気はしてます



391 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 09:46:31.10 ID:mWSu9Hj1.net]
ふーんGetはできるんだタスクバー用かな?
どう見てもオーナードローだし
htmlのtitle変える方が早そうだね

392 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 12:31:23.77 ID:NjIHRu5t.net]
SetWindowText実行後にGetWindowTextしたら変更後のキャプション取得できてるんじゃない?
表示処理が別なだけで

393 名前:デフォルトの名無しさん [2022/09/14(水) 15:26:33.97 ID:bpmiLen5.net]
>>385
その通り、内部的には変更されてました!!
ありがとうございました
聞いて良かった、自分だけで考えていたら堂々巡りで違う発想は出てこないものですね

見た目のキャプションはどうでも良くて
ブラウザを複数起動して、全て同じサイトを開かせるので
それをUWSCで操作しようとすると、どれが処理済なのか区別つかないので
処理済のやつのキャプションを変えてやろうということだったのです

394 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
処理未済のテーブルのキーは
windowハンドルつこたらあかんの?

395 名前:デフォルトの名無しさん [2022/09/14(水) 21:36:59.23 ID:bpmiLen5.net]
386の話?
そんなことないですよ
ウインドウキャプションと、クラス名が同じウインドウがいくつもあるので
UWSCはそれのどのウインドウが処理対象か分からないってこと

396 名前:ナす

YouTubeから動画をDLするサイトを自動で開いて
新着の動画アドレスを自動入力してDLさせるんですが
一つがDL処理中に、別の新着動画が来ることがあるので
[]
[ここ壊れてます]

397 名前:デフォルトの名無しさん [2022/09/14(水) 21:56:53.98 ID:RXLSqQDl.net]
入力されたキーコードをキーボードの文字に変換してくれるAPIとかありますか?
それかC/C++の関数とかで。
SHIFTのコードを渡すと、"SHIFT"みたいに文字が返ってくるみたいな。

398 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 10:19:13.76 ID:HISUe1p2.net]
どとねとにはあるけどお
スレ違いかな
大した手間でもないしご自分で用意すれば
そもそもC/C++ならマクロを糞すればリテラルを文字列に変換できるんだし
ちょっとは頭使え?
o.5ch.net/1zdtx.png

399 名前:デフォルトの名無しさん [2022/09/15(木) 11:00:05.62 ID:cizFucC9.net]
>>388
>>354

400 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 18:28:39.47 ID:gUiebKpt.net]
>>389
GetKeyNameText



401 名前:デフォルトの名無しさん [2022/09/16(金) 10:16:25.50 ID:4htE7L2M.net]
385さんと相談に乗ってくれた方にお礼の動画を持ってまいりました
https://www.youtube.com/watch?v=uJxOP1s4Xo4

402 名前:デフォルトの名無しさん [2022/09/18(日) 13:46:05.81 ID:KpBP36NG.net]
>>393
グロ
fishing

403 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 18:20:24.44 ID:JcdidFMx.net]
こんな釣りじゃあ誰も見んわなw

404 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
可愛いよね
名前知らない?

405 名前:デフォルトの名無しさん [2022/09/23(金) 02:06:12.74 ID:gD4It3Ab.net]
STUのがかわいい

406 名前:デフォルトの名無しさん [2022/10/31(月) 14:20:10.23 ID:un31Hzpa.net]
VisualStudio2022で
C++でGdiplusを利用して、メタファイルとして描画した図形を保存するプログラムを作成しました。
(描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しました。)
保存した図形ファイルをエクセルで開いて、Ctrl+Cでクリップボードにコピーしました。
この状態で、EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得しました。
予想だと、WinUser.hで定義されている
#define CF_ENHMETAFILE 14
になるのかと思っていたら、実際は49161が取得されました。

質問ですが、この時取得された49161は何のフォーマットを意味しているのでしょうか?

407 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 14:25:56.86 ID:cPgJ75vw.net]
汎用データオブジェクト

408 名前:デフォルトの名無しさん [2022/10/31(月) 15:48:17.35 ID:un31Hzpa.net]
>>399
ありがとうございます。
すいません、質問なのですが
Gdiplusを利用して作成したメタファイルをAPIを使用して汎用データオブジェクトとしてクリップボードに設定したいのですが、
参考になる書籍、ホームページ等ありましたらお教えいただけないでしょうか?

409 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 21:10:12.34 ID:Y7EKu9E5.net]
EnumClipboardFormats()使ってるんだからOpenClipboard(),SetClipboardData()はわかるよね
何を聞きたいんだろう?

410 名前:デフォルトの名無しさん [2022/11/01(火) 00:53:41.11 ID:8bbAESJs.net]
>>401
昔からあるGdiで拡張メタファイルを作成して
OpenClipboard()
SetClipboardData(CF_ENHMETAFILE, handle_enhanced_metafile)
CloseClipboard()
で問題なく、拡張メタファイルがクリップボードに設定されていました。
それをGdiplusを使用してメタファイルを作成して
OpenClipboard()
SetClipboardData(CF_ENHMETAFILE, handle_enhanced_metafile)
CloseClipboard()
に改造したら問題が発生しました。

問題というのはエクセルにクリップボードからペーストすると、「図の書式設定」で「高さの倍率」「幅の倍率」が100%以下の数字になり
意図していたサイズより小さく表示されるようになってしまいました。

クリップボードに設定したメタファイルを、ファイル出力して、エクセルからファイルを開いて描画した図形を表示すると問題なく意図したサイズで表示されていました。

以上の事により、問題が発生する原因はクリップボードへの設定に問題があるのではと考えました。

エクセルにペーストしたGdiplusメタファイル図形を、さらに、エクセルでコピーすると、クリップボードには、なんのフォーマットとして扱われているのか調べてみました。
EnumClipboardFormatsを使用して、クリップボードのフォーマットを取得するとCF_ENHMETAFILEではなく、49161でした。

以上のことによりSetClipboardDataの第一引数はCF_ENHMETAFILE:14ではなく汎用データオブジェクト:49161を設定すべきかと考えました。
しかし、単純にCF_ENHMETAFILEを49161に変えただけでは、クリップボードにGdiplusメタファイル図形は設定されず、エクセルに何もペーストされませんでした。

希望は、Gdiplusメタファイル図形を汎用データオブジェクトとしてクリップボードに設定する方法を知りたいということです。

何かご存じの事がありましたら、お教えお願いします。



411 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 02:33:36.53 ID:F5k3ZiCa.net]
CF_ENHMETAFILEがあるのに49161をセットするなんておかしいよ
倍率以外はうまくいってるんだし
同じ図形でGDIのとGDI+のでENHMETAHEADERのメンバの値で違うのはない?

「DataObject 49161」でググったら以下のページが出た
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/5a85a9a6-88a3-4cba-8b19-31c979eea7fa/clipboard-unable-to-enum-registered-clipboard-formats-as-local-system?forum=vcgeneral
49161はこれなのか?

412 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 09:43:25.52 ID:23hVAbRk.net]
スレ立てるまでもない質問スレで詳しいこと言ってたら教えてやったんだがな
流したやつに教えてやる気にはならんわ

413 名前:デフォルトの名無しさん [2022/11/01(火) 10:48:01.32 ID:8bbAESJs.net]
>>404
すいませんでした。
こちらで聞いた方が良いとレス頂いたので
こちらに移って質問していました。
もし、何かご存じならご教授頂けないでしょうか
よろしくお願いします。

414 名前:デフォルトの名無しさん [2022/11/01(火) 11:42:30.98 ID:8bbAESJs.net]
>>403
レスありがとうございます。
ENHMETAHEADERについてですが精査してみます。
(出力先をクリップボードでなくファイルにした場合、エクセルで開いても問題が発生していないのでメタファイルには問題ないかと、あたりをつけていました)

CF_ENHMETAFILEについてですが、メタファイルは以下の3種類があるようです
・Windows メタファイル形式 (WMF)
・拡張メタファイル (EMF)
・EMF+

描画時メタファイルのパラメータはGdiplus::EmfTypeEmfPlusDualを使用して作成しましたので
EMF+として作成されているのかとも思っています。
そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています

リンクありがとうございます。検討してみます。

415 名前:デフォルトの名無しさん [2022/11/01(火) 11:53:24.91 ID:8bbAESJs.net]
>>406
すいません、一部訂正です。
【誤】そうするとENHMETAHEADER←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています
【正】そうするとCF_ENHMETAFILE←拡張メタファイル (EMF) を使用しても良いものか疑問に思っています

416 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 03:29:06.05 ID:lhbjAvOX.net]
マルチするアホは原則スルー
ネットマナーおじさんとの約束だぞ

417 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 10:41:37.80 ID:tn2ZhR3p.net]

他スレを勧められて続きはそっちでやることを宣言したのに、マルチ警察はこの上何を望むんだろう。

418 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 10:49:58.97 ID:dhtr0mvL.net]
前スレで詳しいやつが回答してるのにアスペから自分にはわからんから移動しろと言われてここに来てるだけのアホだから

419 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:18:16.59 ID:tn2ZhR3p.net]
マルチがどうこうより、せっかく回答したのに無視されたのが気に入らないってことね。

420 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:28:13.59 ID:irjlHMAb.net]
回答があるのに他で聞くのはマルチだろ
マルチがなぜ嫌われるのか理由までは知らないのか



421 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:47:59.65 ID:tn2ZhR3p.net]
マルチをしないからといって回答が無視されなくなるわけではないからそこは的外れだと思うぞ。

422 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:57:08.08 ID:irjlHMAb.net]
アスペかな?

423 名前:デフォルトの名無しさん [2022/11/03(木) 14:53:14.39 ID:XfULePpa.net]
>>408
スレ立てるまでもない質問はここで 162匹目 に質問を出しました。

 253 で49161は何のフォーマットか質問しました。
 254 で汎用DataObjectだとレスを頂きました。
 256 で254に対するお礼のレスをしました。
 257 でWin32API質問箱 Build127の方が良いのでは?とレスを頂きました。
 258 で そちらで聞いてみます と257にレスしました。

その後Win32API質問箱 Build127 に移って 398 で質問を始めました。

以上が今までの経緯なのですが、何か問題があるのでしょうか?

424 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:08:57.81 ID:SIQRCQUk.net]
面倒くさいから追いかけないけど、別に問題あるようには見えない

>>410が正解書いてるような空気醸しだしてるから、その回答レス番書いてくれたら話が変わるかもしれんけど
実は正解ではない別のレスを書いててスルーされた恨みで警察に転職した可能性も感じる

425 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:26:38.66 ID:76hysst1.net]
恨みとか知らんし警察は俺じゃないけど雑な質問だからそれなりの回答しかしてない
詳しく聞けば教えてやったけど
こっちの方が詳しい人がいると聞いてすぐ移ったから回答しなかっただけだが回答しなきゃいけない理由もないだろ
こっちの詳しい人()に聞けばいいだけ
それで何か問題あるか?

426 名前:デフォルトの名無しさん [2022/11/03(木) 15:43:26.06 ID:/zL/TWh/.net]
向こうのスレみて来たけど、マルチ嫌いの俺ですら全く問題ないなw
なにを拗ねてるんだこやつは

427 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:46:54.91 ID:76hysst1.net]
知ってることを回答しないだけで非難される言われはないぞw
お前が教えてやればいいだけ
本人でないならな

428 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:47:33.06 ID:76hysst1.net]
俺より詳しいやつがいるスレだからそれで問題ないはずだが何を怒ってるのか

429 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:48:42.41 ID:SIQRCQUk.net]
>>417
その通り
マルチの話題でも何でもない無関係なことで話を拡げず、すっこんでろとしか

元スレで回答出てるならそれで終了
スレ移して質問続くなら普通にやってくれ

430 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:06:19.20 ID:GeJ34bDq.net]
49161は何のフォーマットか?なんてのは枝葉で
本質は同じフォーマットになるような方法はないのか?なんだよな
わからん



431 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:13:11.60 ID:GeJ34bDq.net]
枝葉への回答は前もココにも付いてる通り 汎用データオブジェクト
これで最初の質問は完了してるん

432 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 00:59:05.47 ID:TddW6oN3.net]
この手のマニアックなのはstackoverflow漁るか英語で聞いた方が早いよ

433 名前:デフォルトの名無しさん [2022/11/05(土) 00:48:25.93 ID:mvfmSa9B.net]
EMFは糞
GDI+も糞

434 名前:デフォルトの名無しさん [2022/11/06(日) 21:20:50.65 ID:ZfA7UEIS.net]
特定のウィンドウがFlashWindowしてるかどうか知りたいのですが、何か方法はありませんか?
画像取得して色確認するとかしかないですか?

435 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 05:59:08.49 ID:SWCRxCfW.net]
SetWindowsHookEx() を使用して、シェル フック HSHELL_FLASH (0x8006) をコールバックに登録します。
https://stackoverflow.com/questions/69806213/is-there-a-way-to-detect-when-a-specific-process-is-flashing-its-window-taskbar

436 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 17:30:23.05 ID:4qt4VSUI.net]
ありがとうございます

437 名前:デフォルトの名無しさん mailto:sage [2022/11/16(水) 18:14:29.04 ID:wmtCAqUs.net]
OEM製品だな

438 名前:デフォルトの名無しさん mailto:sage [2022/11/18(金) 21:22:52.50 ID:zsUVThtH.net]
セッションID=0のタスクスケジューラーのプロセスから他のセッションID=1以上のGUI持ってるプロセスの操作したいんだけど
同じセッションIDのプロセスを作ってやらないと無理だったかな

439 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:39:49.01 ID:63yxghiR.net]
スレッドが自身のスタック領域の開始アドレスを知る方法はありますか?
サイズならTEB構造体から取得できるようなんですが

参考
https://ja.stackoverflow.com/questions/47840/windows-visual-studio-2015-c-%E3%81%A7%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%AE%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%

440 名前:95 []
[ここ壊れてます]



441 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:52:16.04 ID:uLZynctc.net]
>>431
サンプルソースは見たの?

>サイズならTEB構造体から取得できるようなんですが
正確にはStackBase, StackLimit を取得できるので、その差分からサイズを求めている。
teb->Reserved1[1] を使えばよいはず。

442 名前:デフォルトの名無しさん mailto:sage [2022/12/08(木) 05:02:17.43 ID:7N/fyoNc.net]
>>432
あー確かに減算してますね。
気がつかなかった私がどうかしてました。
ご指摘ありがとうございます。

443 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 11:12:22.75 ID:aTW+qgB5.net]
ディスクへの書き込みを別の場所へ書き込むようにインターセプトすることってドライバじゃないと不可能?
ReadDirectoryChangesやFindFirstChangeNotificationって通知だけでディスク変更操作に手を加える事は出来ないよね
パスが常に一定の物であればジャンクションやシンボリックで対応可能なんだけど

444 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 08:27:23.13 ID:z6jdEPeL.net]
その程度の知識の素人が手を出せるレベルの処理じゃないだろ
仮想デバイスとかどうすんの

445 名前:デフォルトの名無しさん [2023/01/19(木) 12:53:53.04 ID:RyyxmaOy.net]
古い32bitプログラムをVS(ツールセット2010)でx64でビルドしてるんですが
「外部シンボル "sprintf" は未解決です」などのリンクエラーが大量に出て困ってます。
「legacy_stdio_definitions.lib」を使えという情報もあったんですが
2010ベースだと恐らくない?為か見つからないと怒られます。
色々事情があって最新版には移行出来ません。64bit化は諦めるしかないでしょうか?

446 名前:436 mailto:sage [2023/01/19(木) 14:01:27.21 ID:RyyxmaOy.net]
>436
チマチマと自分で設定弄ったりしてたら解決出来そうでした。

447 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 00:30:28.27 ID:a17vtIUU.net]
ちゃんと無いなら自分で作るのもあり

448 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 10:35:53.94 ID:JlW1CBNq.net]
Windows Explorerではファイルに由来する属性、例えば画像のサイズとか、
MP3のタイトル、プログラムの説明とか表示できるけど、
それを取得するAPIは用意されててつかえたりしますか?
それともあれはExplorerで頑張って色んなフォーマットに対応してるの?

449 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 12:15:09.84 ID:6SRGa8RT.net]
>>439
このあたり↓ではないか?

MP3ファイルからタイトルやアーティスト名などを取得するには?[C#、VB] - @IT
https://atmarkit.itmedia.co.jp/fdotnet/dotnettips/591mp3tags/mp3tags.html

Shell Interface (Shell32) | Microsoft Learn
https://learn.microsoft.com/en-us/dotnet/api/shell32.shell

間違ってたらごめんね

450 名前:439 mailto:sage [2023/01/22(日) 13:35:39.24 ID:JlW1CBNq.net]
>>440 Shell32.dllのGetDetailsOfを使うのずばりでした。
ありがとう!自前で全部揃えるのは嫌だとおもってたから。



451 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 18:45:34.11 ID:6SRGa8RT.net]
>>440
2つ目のURLは違ったね。多分こっち↓だ

Shell object (Shldisp.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/en-us/windows/win32/shell/shell

訂正します

452 名前:デフォルトの名無しさん [2023/01/27(金) 14:29:22.14 ID:BWAW0Di3.net]
>436-437
もう解決したみたいだけど
文字通り legacy_stdio_definitions.lib をリンクすれば良い
あるいは sprintf をやめて安全な snprintf (それ以外の legacy があればそれらも) 等を使うコードに変更する

453 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 15:17:14.74 ID:SSo2rJoB.net]
俺もそろそろANSI32bitアプリをunicode64bit

454 名前:アプリに更改したいなあ
まあ64bitにする意味は全く無いんだけど
せめてunicode化して、流行りの顔文字ぐらい表示できるようにしたい
あれのレンダリングはどうやるんだろうね
TextOutみたいなレベルのAPIじゃ無理だよね?
[]
[ここ壊れてます]

455 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 16:02:05.59 ID:u99kbCnW.net]
>>444
Direct2Dなので描画ハンドラ関数の丸ごと書き換えが必要

456 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 22:31:52.79 ID:xHLhsNzv.net]
正確にはDirect2D+DirectWriteだね

457 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 03:54:55.92 ID:axeNk+I4.net]
QueryPerformanceFrequencyで取得した値が10MHzになってるんですが
何時からこの値になったのか、時期と実装が変わった経緯分かる方いますか??

458 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 07:50:03.36 ID:9aEQ8dCa.net]
もともとハードウェア次第だし、実装を変えたというわけじゃないんじゃね?
https://ja.wikipedia.org/wiki/High_Precision_Event_Timer

459 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:05:16.01 ID:diZedZj+.net]
>>447
最近2台のPCで取得したら10MHzだった。第8世代か第9世代のCoreと第10世代のCore。
ぐぐったらもうちょっと小さい値が出てきた。

460 名前:デフォルトの名無しさん mailto:sage [2023/02/06(月) 00:41:55.57 ID:bCXM4GAa.net]
>>447
Hyper-V上だと10MHzになる模様
https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps



461 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 10:07:22.45 ID:/9PGWL3V.net]
ResEditが無くなってしまったみたいだけど、何があったんや?
単に需要がなくなっただけ?

462 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 11:39:51.87 ID:beRYzW3b.net]
統合環境と一体化した

463 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 02:53:34.52 ID:S9jIVDl5.net]
ウィンドウメッセージキューと socket を WaitForMultipleObjects みたいに同時に待ち受ける方法はある?
現状は通信処理は別スレッドでやってるけど、これを敢えて GetMessage のループでやりたい。
というのも、好奇心上の取り組みでメモリ使用量を極限まで減らしたくて、まずスレッドを減らしてみようと思って。

あとちょっと API の話からは逸れるんだけど、VisualStudio で C++ のデスクトップアプリの雛形をビルドしただけのものでもメモリをコミットサイズで 2MB とか食ってて、スレッドも 4つくらい動いてるんだけど、これって何?
起動してから少し放っておくとスレッドは 3つくらい終了するから、いらないものなら排除したい。
いろいろ削ぎ落とすリンカオプションの設定とかあったら教えてほしい。
スタックサイズやヒープサイズは数十KBに設定してみたけど、あんまり違いは見えない。

464 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 03:36:15.30 ID:X7RxD/JY.net]
>>453
MsgWaitForMultipleObjects を使う

465 名前:453 mailto:sage [2023/02/13(月) 13:19:42.95 ID:l/ezgd5T.net]
>>454
それだ!
ありがとー

466 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 08:25:48.17 ID:WQfmJH2L.net]
ソケットなら WSAAsyncSelect でソケットのイベントを WindowMessage に連動させる案もある

467 名前:453 mailto:sage [2023/02/14(火) 14:53:30.32 ID:BK5WxDX8.net]
>>456
それの方が GetMessage のループに馴染みそう。
そっちも試してみるよ。ありがとー

468 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 11:23:09.93 ID:bSshLO82.net]
シンプルにやるならGetMessageじゃなくPeekMessageでノンブロックループして定点観測するという事も出来る

469 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 12:21:16.78 ID:bwlsc68o.net]
>>458
そのループがノーウェイトのビジーループになっちゃうじゃん
やることあるときだけ GetMessage が返ってくれるんだから、そっちのがシンプルでしょ。

470 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:10:37.60 ID:J40TkLkU.net]
ところで、メッセージループで GetMessage したメッセージを DispatchMessage せずに、そのループ内で処理しちゃってもいい?
ウィンドウプロシージャに書いてる switch やら DefWindowProc をループ内に直接書いちゃうの。



471 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:33:51.32 ID:bSshLO82.net]
>>459
いや何も処理する事がなければSleep(1)でも挟むのが常套手段
GetMessageの内部だってそうなってるはず
GetMessageの場合はカーネル空間でループ回してるだろうからPeekMessageループよりIO回数が減ってパフォーマンス上は有利だろうが

472 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:43:45.82 ID:N1k6+oAn.net]
>> 460
ダメです
DispatchMessageは自プロセスに飛んできたOSとか他プロセスのメッセージも振り分ける

>> 461
待つならSleep(1)よりもWaitForSingleObjectのほうが軽い

473 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 13:48:07.11 ID:S4bShmel.net]
>>461
常套手段ってw
そしたら到着したメッセージを即座に処理できないでしょうよ。
イベントを待つというのは待ちながらもシグナル時は即座に反応できるというのが最大の利点なのに、わざわざそれを殺してどうするの。
そしてカーネル空間でも GetMessage は sleep しながらのループでなんか回してないと思うよ。
アプリケーションが何かを待ってる時には、スケジューラがそのアプリの実行を止めてしまう(タイムスライスをあげない)。
GetMessage で言えば OS がメッセージをキューに入れた段階で GetMessage してるプロセスにタスクスイッチする。
ディスクI/O しかり、socket しかり、タイマーしかり。
本当に CPU が何もしないときなら HALT してハードウェア割り込みを待ってる。

474 名前:デフォルトの名無しさん mailto:sage [2023/02/15(水) 16:44:48.20 ID:STPisL/8.net]
WM_KEYDOWN
Ctrl+0(ゼロ)とかShift+0は来るのに、Ctrl+Shift+0は来ないのはなんでなん?

475 名前:デフォルトの名無しさん [2023/02/17(金) 22:01:39.95 ID:rxib1RET.net]
定番のSleep(1)にこれだけ噛みつけるのも面白いな

476 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 05:24:38.57 ID:c4QxGie2.net]
今時sleep(1)が定番とかw

477 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 11:10:10.06 ID:7GI8GwXH.net]
マルチコア、メニーコアでスレッド単体だけ見てもな

478 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 16:35:58.18 ID:nz9Z1NDi.net]
イベント待ちはSleep(1)のポーリングでもどうでもいいと思うぞ
シングルスレッドで全部処理する場合問題はそこではないし
扱う内容によっては毛局スレッドを分けた方がいいって結論になる

479 名前:デフォルトの名無しさん [2023/02/18(土) 21:28:29.45 ID:CT5am8vz.net]
今時とかじゃない
>>463を読むほど笑えるという話

480 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 23:58:40.40 ID:hE3AXWNH.net]
イベントキャッチは1msほどの間隔の粒度でいいの?



481 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:06:15.57 ID:svaemBcP.net]
タイマーの精度が高くないからSleep(1)でも30msくらいウエイトかかるけどな

482 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:28:55.07 ID:15y14fHP.net]
1つの応答基準の60fpsが16.7ms間隔だからその間に処理が終わってれば常人の目には判らないし
待ち行列にメッセージが溜まってたりイベント処理が発生した場合、処理してる間にコンテキストスイッチが何度も起きて場合によっては1msなんて超えてくる
Sleep(1)はOSに時間を明け渡す気がありますよ程度の意味しかない

483 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:46:44.83 ID:QabSn9vm.net]
マウス、キーボードの処理、ダイアログの更新のメッセージ処理くらいなら事足りる
昔のゲームもOllyDbgやIDAつかって覗いてみるとPeekMessageやGetTickCount等を使って一定時間間隔のメッセージ処理ループをやってた

484 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 08:53:33.42 ID:zBhvMYFK.net]
>>473
それはウィンドウメッセージ以外の処理を並行してやるためでしょ。
均等時間で処理を進めたいとかそういう事情が無ければ大人しくイベント待ちすればいいのに、そうせずわざわざ Sleep するとどんないいことがあるの?

485 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:13:58.24 ID:xSIr/CQB.net]
昔の知識否定されてファビョってるだけだろ
わざわざ昔のゲームとかw

486 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:23:12.36 ID:QabSn9vm.net]
前レスよく読まなかったけど、GetMessage()で済むところをPeekMessage();Sleep(1);でループしてメッセージのポーリングするってことか。
なんでわざわざそんなことを?w

487 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 10:54:48.53 ID:jNkDtxGh.net]
WinFormsのソースもPeekMessageでWindowメッセージがあればそれの処理、無ければタスクキュー処理って流れだったはず

488 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 11:25:42.35 ID:xSIr/CQB.net]
>>477
それと
> PeekMessage();Sleep(1);でループしてメッセージのポーリングする
が同じに見えるのか?

489 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 11:36:42.06 ID:jNkDtxGh.net]
>>478
Sleepは知らんがPeekMessageでブロックせずに他の定期処理挟むのは別に普通って言いたかっただけ

490 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 14:38:47.15 ID:xSIr/CQB.net]
>>479
> Sleepは知らんが
話の流れも読めないのかよ...



491 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 14:39:32.86 ID:svaemBcP.net]
そもそも454-457で解決してるのになんで盛り上がってきたんだw

492 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 14:07:57.59 ID:uAuRZ8t6.net]
質問ですがOpen(Save)Dialog等でOFN_DONTADDTORECENTが無効の場合、この履歴情報はどこに保存されますか?

493 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 14:25:10.37 ID:uAuRZ8t6.net]
すみません
エクスプローラの履歴を消したら消えました
質問を取り下げます

494 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 14:25:14.46 ID:/pFhv1h6.net]
Win32APIはC言語が前提
C++で同様なものはMFCであってます?

495 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 14:47:53.07 ID:i9tFdOEb.net]
>>484
C++でもWin32APIはWin32APIです。
MFCは別物。

元々はC/C++からWin32APIを呼び出す前提だったけど、
今はC#、Python、Rust等いろいろな言語から呼べるらしい。

496 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 15:03:12.75 ID:/pFhv1h6.net]
そうなんだ
サンクス

497 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 17:08:15.41 ID:VP7n/u9I.net]
GDI+ はリファレンスは C++のインターフェースだけど
細かくほぐしたら Cや他言語に対応できるのかな

498 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 22:30:47.93 ID:YUkwGr7D.net]
>>484
C++/WinRTもあるよ

499 名前:デフォルトの名無しさん [2023/03/04(土) 00:35:03.13 ID:cng4hKxr.net]
>>484
MFCを使わせたかったのはVisual C++だった。

WindowsアプリケーションはC言語かC++を使うのが前提の歴史があって、MFCはWindows APIをラッピングしたものだった。

マイクロソフトはライブラリの作り方がよくわからず、MFCはコードが複雑になるだけのもの。

Java SEのライブラリが登場してから、マイクロソフトは失敗に気づいて.NET Frameworkを作ることになる。

500 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 01:13:44.99 ID:poIq8zq5.net]
>>489
MicrosoftのVisual C++のMFC
BorlandのC++ BuilderのVCL
当時のWindowsでのC++用クラスライブラリでのシェア競争の結果Borlandが敗れてMFCが主流になった
.NET FrameworkはもともとWindows DNA構想から産まれてきたものでMFCとは起源が別



501 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 01:56:42.82 ID:fku36Zva.net]
MFCの設計が変なのは出てきた時期も悪かったと思うね
まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし

502 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 04:09:52.49 ID:HiKr/1U9.net]
MFCは最初から死産だったがMS製だからVisualStudioに標準で入ってるからと使わざるを得なかっただけ
設計思想はDelphi(C++Builder)よりも数段劣ってる
当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう

503 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 06:03:41.66 ID:2lfmGWRw.net]
>>490
その頃のBorlandはOWLだぞ

504 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:32:23.94 ID:IGk7eTto.net]
MFCはDocument-Viewアーキテクチャがわかりにくいとかそのパターンに合わないアプリが
作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。

505 名前:デフォルトの名無しさん [2023/03/04(土) 10:38:13.23 ID:RFNVa0Qi.net]
C++じゃなくてCからでもGDI+は使える
面倒だから避けるけど

506 名前:デフォルトの名無しさん [2023/03/04(土) 10:40:00.46 ID:RFNVa0Qi.net]
>>490
Frameworkの出来としてはBorlandの方が完全勝利だったが
マーケティングで負けたな

507 名前:デフォルトの名無しさん [2023/03/04(土) 10:41:24.02 ID:RFNVa0Qi.net]
>>491
いやいやMFCの設計者が馬鹿過ぎただけ

508 名前:デフォルトの名無しさん [2023/03/04(土) 10:43:16.79 ID:RFNVa0Qi.net]
>>492-493
ほんそれ

509 名前:デフォルトの名無しさん [2023/03/04(土) 10:45:47.20 ID:RFNVa0Qi.net]
>>494
どうみても糞は糞

510 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:51:57.61 ID:2lfmGWRw.net]
Document Viewが分かりにくいとか
そんなんで音を上げるやつがセンスとはよく言うよ



511 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:11:54.38 ID:N7rqxwy8.net]
MFCなんてクソ過ぎて当時でも使ってなかったよw

512 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:18:57.88 ID:AKTwgEup.net]
MFCよりSDKというのは当時の合言葉だったろ

513 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:21:50.94 ID:2lfmGWRw.net]
Smalltalkの下手な真似は目が点になったけどね

514 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 08:40:31.04 ID:jJIeXpQ3.net]
使わざるを得なかっただけてw
使うも使わないも使用者の自由だろw

515 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 09:09:43.33 ID:3SgfQ2ps.net]
MFC ATL WTL
用途によって使い分け
ひとつのクラスライブラリに固執する必要性も必然性もない

516 名前:デフォルトの名無しさん [2023/03/06(月) 14:14:58.36 ID:diWxUEyJ.net]
Smalltalkの真似はObjective-C

517 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 14:55:30.78 ID:e9ffSDb7.net]
>>504
途中から参加した案件では選択権がない

518 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 08:46:10.01 ID:nXe+vnmI.net]
それは途中参加した案件が使ってるから使わざるを得ないだけで
VSに入ってるから使わざるを得ないわけではないね

519 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 12:07:50.78 ID:CdvGJ9oA.net]
言うまでも無く地雷案件
参加する前に嗅覚で判断して離脱

520 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 13:22:26.79 ID:YRf34T/Q.net]
上から降ってくる仕事を、雇われの立場の者は断れない



521 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 17:55:18.76 ID:jr89I6Dk.net]
信仰を理由にすればなんでも断れる

522 名前:デフォルトの名無しさん mailto:sage [2023/03/08(水) 06:45:47.34 ID:D4+z1pfo.net]
退職して出家でもすんのか
頼むから犯罪に加担するのはやめろ

523 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 00:18:42.41 ID:ta9TFpTT.net]
Win32というかVC++だけど_itow_s系列って何文字書き込まれたかを返してくれるバージョンなんてないよね?
ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが

524 名前:デフォルトの名無しさん [2023/03/09(木) 04:47:01.50 ID:fmJ24L2G.net]
意味の分からない現象に遭遇したので質問させてくれ。
ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。

さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。
特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。

windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。
同じプロジェクトに新規にダイアログを加えても同じだった。
なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。

当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。

なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。
また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
user32.dll関連で何かあるのかな? 正直訳が分からないよ。

識者の意見を求む。

525 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 14:01:14.32 ID:lc0skjdv.net]
AdjustWindowRect
AdjustWindowRectEx

526 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 15:07:30.71 ID:rNyfncCj.net]
windows10/VS2019 で 新規作成し
 同環境でビルドしたものを windows11 で実行
 windows11 でビルドしたものを windows11 で実行
で差があるんかな?

_WIN32_WINNT
_WIN32_IE
WINVER
あたりの値を固定化しているのかどうか

527 名前:514 mailto:sage [2023/03/09(木) 15:19:13.60 ID:fmJ24L2G.net]
>515
え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。
もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w

528 名前:514 mailto:sage [2023/03/09(木) 15:22:59.99 ID:fmJ24L2G.net]
>516
プロジェクトを作成したのはVC6のようです。
以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、
windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。
バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。
THX。

529 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 15:36:17.03 ID:c9gYitiH.net]
Windows11/2019でビルドしたらどうなんじゃろ

530 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 16:10:10.53 ID:AnxNC5rK.net]
ビルドしたOSのバージョンに合わせてウインドウスタイルを調整する部分があるのでは?
VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ?

windwos10でビルドしたものを windows11で実行すると正しく表示される。
 →OSがWindows10アプリとして実行しているからオプション未指定でも正常

windows11でビルドしたものを windows11 で実行した場合は上記のようになる
 →OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる

が、windows10で実行すると正しく表示される。
 →OS的にもビルド的にもWindows10アプリとして実行しているから問題ない

windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
 →疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる

と言う妄想をしてみた



531 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:01:34.32 ID:rNyfncCj.net]
>>520
その #ifdef の分岐条件 になりえるのが
_WIN32_WINNT WINVER と _WIN32_IE

532 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:11:02.85 ID:AnxNC5rK.net]
>>521
そうだけど「あたりの値を固定化しているのかどうか」って書かれているから
それは「本来条件式に任せるべきところを直書きしているのでは?」と言っているのかと受け取ったけど

逆に俺は条件式に任せているから古い開発環境でうまく行ってないだけでは?と思ってるって話ね
だから自分で条件分岐を追加するか、本人が>>517で言うように力技でねじ伏せるかしかないのでは?ってこと

533 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:11:56.14 ID:rNyfncCj.net]
おっけー了解

534 名前:デフォルトの名無しさん mailto:sage [2023/03/09(木) 17:13:51.29 ID:rNyfncCj.net]
動作環境を固定化するのに
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x○○○
#endif
というのは、俺はやってる これの宣言の後に windows.h 等を読むように
って制限かかるけどね

535 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 08:43:31.77 ID:rc8/VQXS.net]
とりあえず関連するライブラリのビルドを込みで、すべてWINVERと_WIN32_WINNTの定義を0x0A00にしてやってみたが結果は変わらず。

>520
問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。
urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。
Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。

>522
とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。
そもそもダイアログリソースからの作成ですしね。

問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので
問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。
泣けるぜ。

締め切りに間に合いそうになかったら、とりあえず超力ワザで。
こうやってクソソースができていくんだなぁ……

536 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 09:09:30.83 ID:skV/NfUS.net]
Win10/2022でビルドしてみたりWin11/2019でビルドしてみたりはしたんかいな

537 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 12:17:19.97 ID:vz26ACYY.net]
ここまでDwm略のAPIの話が一切出てなくて草

538 名前:デフォルトの名無しさん [2023/03/10(金) 12:34:03.89 ID:rc8/VQXS.net]
ものすごい大変だったけど、最小化コードを作ったら原因が判明したので報告しておく。

おそらく windows2000 の頃まで遡る話だけれど、
ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。
なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる!
そういうもんなのかー。こんなの知らないとわかんないよ……

539 名前:514 mailto:sage [2023/03/10(金) 12:36:58.25 ID:rc8/VQXS.net]
sage忘れすまん。
てか、これ客観的に見てバグとしか思えない挙動だ。
とりあえず解決ということで。ありがとうございました。

540 名前:514 mailto:sage [2023/03/10(金) 13:06:28.99 ID:rc8/VQXS.net]
連投すまん。
確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。
windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。
これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。



541 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 13:20:48.59 ID:vOYF1isR.net]
納得しますじゃなくバグみつけたなら報告しろよ

542 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 15:04:54.29 ID:L3R8V02U.net]
>>531
ここで報告されたやん
俺らMS本社のエリートなんだから頑張ってfixしようぜ

543 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 15:18:22.32 ID:vOYF1isR.net]
ここで報告できると本気で思ってるのか
おめでてーな

544 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 16:23:50.60 ID:hFmnRmK3.net]
どう対処していくかは悩ましいところだろうけど
さしあたり見つかってよかったね

545 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 19:20:08.44 ID:iHPjFzG+.net]
MoveWindowなんて基本的なAPIのバグを報告したら、幾らか貰えそうな気がする
ここ見た他の誰かが、もう報告してるかもねw

546 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 19:29:59.85 ID:M/1mzCJs.net]
それってバグなのか?
LunaやAeroの影響を受けるような前提があるんじゃないか?

547 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 21:41:52.52 ID:ErzT9SJ9.net]
>>513
読み取った後に、wcslen() で文字数を数えると良い。

548 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 21:52:37.44 ID:ErzT9SJ9.net]
>>513
結論から言うと「無い」ハズ。
また、最後の引数が int* 型のものは存在していないように見える。
引数の説明欄も、以下の用に4種類のみで、その中に、該当のものは存在していない。

*Parameters
-value
Number to be converted.
-buffer
Output buffer that holds the result of the conversion.
-size
Size of buffer in characters or wide characters.
-radix
The radix or numeric base to use to convert value, which must be in the range 2-36.

549 名前:デフォルトの名無しさん mailto:sage [2023/03/11(土) 17:44:54.81 ID:zdIWJF7w.net]
ウインドウサイズの現象どこかで見たな
たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで
APIの挙動が変わるんじゃなかったかな

550 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 18:57:18.20 ID:6SOWk3dH.net]
>>537>>538
ありがとう、やっぱりないか
ChatGPTって結構間違った答え出してくるな



551 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 22:11:40.77 ID:6PqX/PSJ.net]
自分では調べずにAIに聞いて、その確認も掲示板で他人に聞くスタイル

552 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 07:50:35.89 ID:M+cw5TbQ.net]
ChatGPTを何だと思ってるのかw

553 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 09:19:48.62 ID:0cpyMYUG.net]
ChatGPTもBingも知らないことを知らないと言わずしれっと嘘ついてくるし回答が人の目に触れてなくて識者からのコメントもないからこれを信用するやつは頭湧いてる
Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル
しかしそのどれも公式ドキュメントとは比べ物にならない糞

554 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 11:17:06.85 ID:bF2IN6wD.net]
答えの無い物を探すのが圧倒的に苦手
今までの「自称AI」と何ら変わらん野田

555 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 12:16:45.84 ID:ap2u+t1x.net]
道具に振り回される人って…w

556 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 14:09:26.73 ID:P3estam5.net]
他のプログラミングを出来るとされるAIでも、小学生でも習う円筒の体積すら、
半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。

557 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 14:38:05.49 ID:tDVvLmFE.net]
今のところは汎用対話AIだからね
対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる
結局人間もそうだけど専門型が出てきてこそだな
AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる

558 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 15:38:27.48 ID:4eztEhWJ.net]
>>546
どのAIにどう質問したの?

559 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 12:02:53.79 ID:5+uIhtUh.net]
プロセス間で同じファイルを読んだり書いたりしたいのですが、
一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。
Linuxとかだとflockという関数があるようですが、
Windowsで同じことをやるにはどういう方法になるのでしょうか?
ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。

560 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 14:53:13.19 ID:tgsDNUzh.net]
>>549
https://learn.microsoft.com/ja-jp/windows/win32/api/fileapi/nf-fileapi-lockfileex



561 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 15:49:06.52 ID:5+uIhtUh.net]
>>550
これって、書き込むときはファイルのサイズは事前にはわからないのですが、
計算してからでないとロックはできないということなのでしょうか。
ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。

562 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 15:55:53.14 ID:+K74J7cv.net]
>ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。

別にそんな必要はないでしょ
ユニーク名+ファイル名でミューテックスを使えばいい
(※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)

563 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 16:03:43.56 ID:+K74J7cv.net]
>>551
指定できる最大値を設定しておけばいい

> ファイルの現在の終了位置を超える領域をロックすることは、エラーではありません。
とあるから事実上ファイルそのものをロックしたのと同じ

564 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 16:27:54.12 ID:gMQMDZBf.net]
>プロセス間で同じファイルを読んだり書いたりしたい

565 名前:
問題を無闇に複雑にしてると思わないか
[]
[ここ壊れてます]

566 名前:蟻人間 mailto:sage [2023/03/14(火) 17:01:38.94 ID:iLShrRcK.net]
クライアント・サーバーモデルで、
サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。

567 名前:549 mailto:sage [2023/03/14(火) 18:23:18.32 ID:5+uIhtUh.net]
アドバイスありがとうございます。
あるアプリから別のアプリを起動する際、
コマンドラインでは収まらないような長い情報を渡す必要があり、
ファイルに必要な情報を書いてやりとりするようにしています。
(コマンドラインにはそのファイルのパス名を渡している)

なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、
多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、
このファイルに対する同時アクセスを制御したいという質問でした。
ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。

568 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 18:25:17.73 ID:xPBygAZk.net]
>>554
コンパイラとリンカで同じファイルを読んだり書いたりするのも
問題を無闇に複雑にしているのか?

569 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:27:43.09 ID:LjCdhfB4.net]
>>556
パイプを使えばええんちゃうかな?

570 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:36:39.98 ID:1SjvDtDO.net]
>>556
それはやり方が違うだろ
GetTempFileNameとか使って一時ファイルを作成すればすむ話



571 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:54:35.88 ID:5+uIhtUh.net]
>>559
それもやってみたのですが、多重起動などのタイミングによっては、
どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。
テンポラリフォルダなんて気にしなければよいといえばよいのですが。

572 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 21:32:45.60 ID:M7rmtaeA.net]
Tempなんか使わずとも末尾PIDの名前でファイルなりを作れば重複起動その時においては名前は被らないし
引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ
書いてる間はどうせ読めても無意味なんだし

573 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 22:38:01.69 ID:rESGMqzG.net]
WM_COPYDATAとかメモリマップドファイルとか

574 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 23:24:45.28 ID:u95pjcpT.net]
>>556
>>558と被るけど名前付きパイプがお勧め。

575 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 00:41:23.71 ID:q5LCzWGQ.net]
>>560
いや、ゴミファイルが出来る事があり得ないけどね…
その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる
ま、これで駄目なら何やっても上手く行かないだろうね

576 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 00:54:04.79 ID:mWvoI7Tn.net]
>>548
twitterで流行ってたものを誰かが試した結果を見て気付いた。

577 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 01:02:47.82 ID:fvrt0a3X.net]
>>565
それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念

578 名前:デフォルトの名無しさん [2023/03/23(木) 01:09:16.30 ID:Ao+X9Xng.net]
>>490
正確にはMFCはMS-DOSの開発ライブラリ

だからGUIのWindowsとうまく噛み合わなかった

579 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 06:12:16.80 ID:5IP8ya+9.net]
Ruby では普通、外部コマンド・子プロセスの終了を待つから、実行順序は書いた順。
Process.#wait

一方、Kernel.#spawn は、終了を待たない。起動しっ放し

IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある

580 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 07:28:24.76 ID:auHr228t.net]
>>567
うそおっしゃい



581 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 08:33:51.91 ID:ffpb/acK.net]
>>567
コマンドベースの開発ライブラリならSDKだろ
MFCはGUIが前提のクラスライブラリとアプリケーション構築のプラットフォームをセットにしてWin32APIをラップしたもの

582 名前:デフォルトの名無しさん [2023/03/23(木) 11:05:08.93 ID:AQHpwrnP.net]
>>567
これはひどい

そんなの関係ねぇ
GUIのWindowsとうまく噛み合わなかったのは
MSVCの開発陣がC++への理解が足りなかったから

583 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 11:15:29.65 ID:jVJKu0vi.net]
>>567
お前MFC知らんだろ

584 名前:デフォルトの名無しさん mailto:sage [2023/03/23(木) 23:45:58.18 ID:9ub38u60.net]
久々に清々しい嘘を見た

585 名前:デフォルトの名無しさん mailto:sage [2023/03/24(金) 01:24:11.23 ID:gu0zjHdj.net]
インストーラーの無い野良EXEのAUMID(Application User Model ID)をOSに登録する方法教えてください

586 名前:デフォルトの名無しさん [2023/04/03(月) 14:17:49.75 ID:ZOqVhNfC.net]
>>570
Microsoft Cがいつからあるのか知らないのか。

MFCにはGUI限定などという定義はない。

そもそもMFCはCUIのライブラリから始まっている。

587 名前:デフォルトの名無しさん [2023/04/03(月) 14:20:45.40 ID:ZOqVhNfC.net]
>>570
SDKの意味すらわかってねえのか?

あんたのいうMFCは、Windows SDKが扱うWin32APIをさらにラッピングしたMFCのことだ。

あんたの言っていることは滅茶苦茶だ。

588 名前:デフォルトの名無しさん [2023/04/03(月) 14:34:38.52 ID:ZOqVhNfC.net]
>>571
どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな

マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの

589 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:01:56.44 ID:amgtJnTb.net]
MS-DOS の頃ってMSのコンパイラは統合環境だった?
C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ

590 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:07:52.75 ID:lsCbs8KW.net]
B:\>msc hello.c



591 名前:デフォルトの名無しさん [2023/04/03(月) 15:10:57.50 ID:ZOqVhNfC.net]
ウィキペディアの説明が、Microsoft C 7.0以前の話がないせいで、Microsoft CとVisual C++の区別がついていないのね。

Windows 95、98の時代は、MS-DOS 6.2とWindows 95・98(内部MS-DOS 7.0・7.1)の併存期間で、MFCはMS-DOS 6.2をターゲットとしたものと、Windows 95をターゲットとしたものがある。

まず俗称「MSVC」と呼ばれるものは、Windows 95アプリケーションの開発を意識したもので、マイクロソフト「VC」と言っているあたりからわかるようにC言語でのWindows 95アプリケーションの開発を主としている。

ここでC言語からC++の移行をマイクロソフトはやろうとして、Windows APIがオブジェクト指向ではないところで無理が生じた。

そこでMFCを大幅に強化することでC++でのアプリケーション開発をしてもらおうとしたが、すでにWindows SDKの開発の知識がある開発者は、Windows SDKでのCでもC++よいというのに慣れていて、MFCを使えというのは、それまでの知識と違っており、無駄なクラスライブラリとしか思えなかった。

MFCはWindows 3.1でも影が薄い。マルチタスクではないと言えてしまうWindowsでは、MFCのメリットなどなく、無駄にサイズが大きくて重いコードが作られるため、性能、スペックの低いパソコンではMFCを使う理由がなかった。

MFCはGUIだけで使われるものではないため、CUI環境の開発でも使われている。

MFCどころかWindows 32APIでも、画面がある前提になっているコードを書かないといけないが、実際には画面がないものを作るのにも使われる。

MFC、Visual C++、Windows SDKの話がごっちゃになって、MFCを使うにはVisual C++でMFCを利用して、MFCがWindows SDKとセットだと認識できない点は理解できる。

まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。

592 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:18:50.66 ID:lsCbs8KW.net]
Win32がオブジェクト指向ではないって?
ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが

もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?

593 名前:デフォルトの名無しさん [2023/04/03(月) 15:19:55.66 ID:ZOqVhNfC.net]
>>578
統合開発環境と何の関係があるのか?

Windows 95アプリケーションでも、統合開発環境は必須ではない。

画面のデザインのときだけ利用するという使い方が多かった。

Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。

594 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:25:54.31 ID:amgtJnTb.net]
>>582
MFC=マクロ出力とセットになった統合環境前提って印象だったものでね
リソース周辺のアレ

595 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:26:39.12 ID:p7oapVPk.net]
>>581
そこで使われるオブジェクトとオブジェクト指向とは関係ない
アセンブラのオブジェクトファイルと同様だ

596 名前:デフォルトの名無しさん [2023/04/03(月) 15:28:25.60 ID:ZOqVhNfC.net]
>>581
オブジェクト指向設計ではなかったんだよ。

C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。

ここはWindows SDKがオブジェクト指向ではないという理由がある。

APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。

たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。 

597 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:37:01.22 ID:lsCbs8KW.net]
>>584
GetObject()なんか多相そのものやん

598 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:39:17.90 ID:lsCbs8KW.net]
すまん関数名間違えた
SelectObject()だ

GetObject()はオブジェクト指向と手続き型の切り替えだね

599 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 15:56:54.48 ID:ORXHufFt.net]
Win32APIの基本構造そのものがイベントドリブンのメッセージ駆動なのでオブジェクト指向を土台にしている
Windowsのマルチタスクはオブジェクト指向で成り立っているだろ

600 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:40:18.30 ID:lsCbs8KW.net]
そうそう
ウインドウプロシージャのcaseなんか典型的だな



601 名前:デフォルトの名無しさん [2023/04/03(月) 16:48:57.33 ID:WoF7SnyS.net]
>>575
>そもそもMFCはCUIのライブラリから始まっている。

doubt

602 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:51:01.36 ID:WoF7SnyS.net]
>>577
でたらめ言うなよ
ボケが始まってるんだな爺さん
ばあさんかも試練が

603 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:53:48.85 ID:WoF7SnyS.net]
>>580
おまいは Windows 3.1 の知識が抜け落ちておるな

604 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:57:17.99 ID:WoF7SnyS.net]
>>584
しね

605 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 16:58:53.51 ID:WoF7SnyS.net]
>>585
むしろ Win(32以前も)API / Win32API がオブジェクト指向で
MFC の方がオブジェクト指向出来ていなかったんだよ
だから判ってる香具師はみんな MFC は使わなかった
使ってたのは馬鹿だけ

606 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 17:23:19.13 ID:aHgelLEB.net]
>>594
APIについてはその通りだが
MFCがOOPでないという主張には
賛成しかねる

下手なところがあるのは俺も認めるが
原理主義者の言いなりである必要はない

607 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 18:20:11.47 ID:6F7Nd+C2.net]
MFCとかけて、C++と解きます
その心は、オブジェクト指向ではあるけど、なりきれていない

これでどうでっしゃろ

608 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 18:32:53.99 ID:hrmFy8ir.net]
MFCには良い思い出が無いのである

609 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:17:54.58 ID:NUuZ0KjY.net]
>>580
すげぇ、「ゲームの歴史」?

610 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:57:09.76 ID:pspdaLIR.net]
GUIの無い単純なアプリならまだしも、それなりのGUIを持つアプリは
MFCを使ったほうが楽にアプリを作れるし、出来たコードも読み易い

確かに最初はMFCは取っ付き難いから、そこで挫折した人が
>>590-594みたいな事を言い出すんだろうなあ



611 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 23:21:42.85 ID:6c3bFFXO.net]
>>599
そんなことは無いと思うが
Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし
MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ
実際当時Windowsアプリの仕事を結構やったけどMFCを採用していた所は少なかった
たまたまそういう場所ばかり行ってた可能性はあるがMFC何て使うなよって当時から思ってたよw

612 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 23:43:57.61 ID:hWVK11qf.net]
でも世の中的に勝利したのはMFCだよね
俺もATL/WTLでいいじゃんとは思ったけど
でかいライブラリも整備されてりゃそれなりに便利だからね仕方ないね

>>578
PersonalWorkBenchってのでFortranやったような気がするんだが
今ググっても全然出てこないな

613 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 00:40:08.89 ID:3PHQjkjE.net]
VB→.NET の流れがGUI開発の勝ち組というなら分からなくもないが
MFCは・・・

614 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 06:32:29.81 ID:sHU2LbpJ.net]
>>600
>Win32APIをちゃんと知っていればMFCなんて使う理由が全く無いし
WindowProcに case WM_… をだらだら書かなくても済むだけでも大きな利点
>MFC関連のDLL何かも入れないといけない
ユーザー層やアプリの配布形態に応じて、必要ならMFCをStaticLibraryでリンクしてしまえば良い

>>602
>VB→.NET の流れ
社内ツールとかならともかく、それこそユーザーにVB入れさせるなんて問題外でしょ
大量のデータ処置を行うようなアプリでは処理速度も遅いし
一般販売されてるアプリでVBで作られてるものなんてある?

615 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 07:27:41.42 ID:w5B314gc.net]
DLL hell, OCX hell とかVB案件の負の遺産なんじゃなかろうか

616 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 07:35:33.06 ID:GxsMOWHT.net]
>>600
>MFC関連のDLL何かも入れないといけないし単に開発効率がおちるだけ

昔Win32+CだけでDLLの追加が要らないよう頑張ってみたこともあるけど辛かったね。
C++の機能使ってしまうと結局CランタイムDLLが必要になるし。

617 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 10:14:15.35 ID:OZYsYc62.net]
>>601
だよな
8086しかりwindowsしかりMFCしかり
技術的に劣っていてもデファクトになると
好むと好まざるに依らずそれ関係の仕事が来る

元々BSD使いだった俺がwindowsに転向したのもメシのため

618 名前:デフォルトの名無しさん mailto:sage [2023/04/04(火) 11:34:31.40 ID:7A3Dl4jZ.net]
DLL便利じゃん
プラグインで機能後付けもこれのおかげだし

619 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 08:56:03.63 ID:PNvz4EJs.net]
>>603
BtoCよりBtoBの方が物は多いと思うが

620 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 10:12:22.16 ID:xBlgsSX7.net]
金融界隈では未だにVB6が現役だし
MSにしては大成果だったと言える



621 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 15:23:21.24 ID:MSpbiXL9.net]
ANAのシステムもミズポと同じ所が造ったんかねぇ

622 名前:デフォルトの名無しさん mailto:sage [2023/04/05(水) 20:05:04.25 ID:WIXvpPAe.net]
C++/WinRTを使ってあげて…

623 名前:デフォルトの名無しさん mailto:sage [2023/04/18(火) 08:15:18.90 ID:F395+kgU.net]
Windows API インデックス
https://learn.microsoft.com/ja-jp/windows/win32/apiindex/windows-api-list

Windows API を使用すると、各バージョンに固有の機能を利用しながら、すべてのバージョンの Windows で正常に実行されるアプリケーションを開発できます。
(これは以前は Win32 API と呼ばれていたことに注意してください。
Windows API という名前は、16 ビット Windows でのルートと 64 ビット Windows でのサポートをより正確に反映しています)。

624 名前:デフォルトの名無しさん mailto:sage [2023/04/18(火) 08:32:02.79 ID:hm8pjCa5.net]
日本語たけど日本語じゃないの

625 名前:デフォルトの名無しさん [2023/04/26(水) 20:51:37.42 ID:A/LukVPn.net]
Windows11でPrintDlg使って印刷すると1度目は印刷できるけど
2度目はPrintDlg()呼ぶと反応無しになるのはなんか間違ってるのかな
レジストリ弄ってLegacyなダイアログにしとくと印刷できる、あと管理者権限でプログラム実行して
印刷も勝手にLegacyなダイアログになるので印刷できるんだけど

試しに、VC2022で新規プロジェクトで雛形ちょっと弄って試してもやっぱり
2度目のPrintDlg()呼び出しで無反応になっちゃうんだっけど
debuggerで見てもPrintDlg()呼び出しでエラーも何も出てこなくてわからない

626 名前:デフォルトの名無しさん mailto:sage [2023/04/28(金) 08:28:43.45 ID:dRuFEUWm.net]
10で平気なら11のバグだな
窓板の11バグ多すぎワロタスレに報告しとけよ

627 名前:デフォルトの名無しさん [2023/04/28(金) 10:51:05.85 ID:pksuSfee.net]
閉じてから印刷

628 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 17:14:32.74 ID:dQsz62eN.net]
PrintDlgってcomdlg32.dllだよな
comdlg32.dllはバグで有名なやつじゃないか

629 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 19:59:15.10 ID:Aup++SJD.net]
Microsoftの直接的な関係者ではなく、TSF (Text Services Framework)の仕組みを知り尽くしている人を募集中。成功報酬あり。
katayama.hirofumi.mz@gmail.com

630 名前:デフォルトの名無しさん [2023/04/30(日) 20:06:36.85 ID:/hwg+Moy.net]
Firefoxのにゃるるにコンタクトすれば?
あと成功報酬ではなく労働報酬あるいはコンサルタント報酬であるべきだよ



631 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 21:05:43.46 ID:Aup++SJD.net]
にゃるるってダレ?
検索しても見つからないよ

632 名前:デフォルトの名無しさん [2023/04/30(日) 21:19:58.80 ID:8kv4t+8E.net]
書き込めなかった、ローマ字で検索して
にゃるる が地球にいたころ

って言うか自分で勉強検索してたら最も頻繁に出てくる

633 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/04/30(日) 21:52:27.43 ID:Aup++SJD.net]
ありがと

634 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 21:55:44.21 ID:9BNVTRHB.net]
地球にいないのでは無理では?

635 名前:デフォルトの名無しさん mailto:sage [2023/04/30(日) 22:05:27.13 ID:AaWD86jI.net]
報酬が相場より2桁くらい少なそう。

636 名前:デフォルトの名無しさん mailto:sage [2023/05/02(火) 21:18:50.29 ID:koHs32mY.net]
WaitOnAddressってアドレスの値が比較対象と違う値に変化したら自動的に起きるっていう魔法みたいなものではないんだね
呼んだ瞬間に比較対象と違ったら即返る、同じだったら後ほど変わったとしてもWakeByAddress系で通知しなきゃ起きないっていう原始的なイベントと言うほど変わらない感じか

637 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 14:28:28.65 ID:wz1HqF7D.net]
directoryなら監視してくれるけど
https://www.youtube.com/watch?v=hKLBPXg8oik
呼んだ瞬間に比較対象と違ったら即返る
同じだったら返らない
っていうのを期待してる?

638 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 20:05:13.46 ID:v7V26Uwz.net]
>>626
その挙動は既にWaitOnAddressに組み込まれてる訳だけど
対象アドレスの値が変わったら通知とか無しに自動的に戻ることを期待していた
そうじゃなくてマニュアルでWakeByAddress呼ばなきゃいけないからイベントとそこまで変わらんなぁと
まあハンドル作らずに済む点で手軽ではあるけど

639 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 20:45:04.91 ID:Kv12u2jn.net]
8で追加されたAPIは頭悪い
OSが頭悪ければAPIも頭悪いという当然の帰着

640 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:24:23.86 ID:+bgC2i5O.net]
APIを使うだけならWin32よりWinRTの方が簡単でしょ



641 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:27:08.93 ID:XU1+7Xhm.net]
本当にそうか?

642 名前:デフォルトの名無しさん mailto:sage [2023/05/03(水) 21:36:14.09 ID:+bgC2i5O.net]
>>630
ウィンドウ表示するコードはこれだけ

#include <windows.h>
#include <winrt/Microsoft.UI.Xaml.h>

using namespace winrt;
using namespace Microsoft::UI::Xaml;

int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
{
init_apartment();
Application::Start([](auto&&) { Application(); Window window; window.Activate(); });
return 0;
}

643 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 00:16:09.16 ID:4Uvo6CUb.net]
ラッパー系は手をつけにくいなあ、MFCやOWLの悪夢が蘇る
便利そうに見えて、覚えることが増えるだけだったり
見えざる制約が足枷になったり、バージョン管理が面倒だったりと
やむを得ない場合は仕方ないけど

644 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 00:34:52.44 ID:qlZGMdPb.net]
WinRTってMS的にはWin32と同列の扱いだけど、WinRTは内部でWin32を使ってるのだろうか?

645 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 05:10:21.07 ID:P5ZkmciJ.net]
COMを焼き直して名前変えただけと言えばいいのか
ただCOMの利点だったIDispatchで適当な言語から扱うみたいな事ができないうんこです

646 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 07:28:00.92 ID:Nm4VxhU5.net]
>>632
確かに恐ろしい部分はあるかも

647 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 07:33:59.15 ID:Nm4VxhU5.net]
WinRTはC#の情報ばかりでC++の情報が少ないから苦労するかも
その点Win32は情報が多いからいいね

648 名前:デフォルトの名無しさん mailto:sage [2023/05/06(土) 10:58:22.01 ID:SadRj80b.net]
>>628
WaitOnAddressは利便性目的ではなく手軽さ+パフォーマンスが要点だからそうとも言えない
Thread立ち上げて立ち上げたスレッドがある地点まで到達するまで待ちたいみたいなちょっとしたシーンでは結構便利
パフォーマンス的にもイベント待ちに比べて1000倍近く早かったはず

649 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 18:47:03.56 ID:FTM2vWjW.net]
Chromeのタイトルバーに「^」の文字を上下反転させたボタンがあって押すとミニウィンドウ的なのが開くのですが、このボタンを実装したいのですがどうしたらできますか?
Chromiumのソースコード見てもどこに該当コードがあるかわかりませんでした
c言語で実装したいです

650 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 18:55:17.65 ID:OsVl9AaP.net]
タブを検索ボタンか。ソースをTab Searchで検索すれば出てくるんじゃないの



651 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 19:52:12.33 ID:FTM2vWjW.net]
検索してみました
ttps://github.com/search?q=repo%3Achromium%2Fchromium%20tab%20search&type=code
タブを開いた時の挙動などはTypescriptで書かれているようでした
ttps://github.com/chromium/chromium/blob/cd5fe35a69d697dd48ad34d5670d090afcdc57be/chrome/browser/resources/tab_search/app.ts#L560
既存のアプリにc/c++で手軽にタイトルバーにボタンをつけてポップアップウィンドウが開けてそこでボタンなどを選択できるような方法を知っていますか?

652 名前:デフォルトの名無しさん mailto:sage [2023/05/11(木) 20:34:55.74 ID:Tud0+/yk.net]
手軽ではないと思うが DwmExtendFrameIntoClientArea を使えばできそう
https://learn.microsoft.com/ja-jp/windows/win32/dwm/customframe

653 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 23:21:04.68 ID:bBMeTJtZ.net]
LoadLibraryに渡されたlpLibFileName引数をどうにか呼ばれたdllmainから取得する事って出来ないかな
32bitならスタックフレーム遡ってLdrLoadDllを呼んだところの第3引数のスタックのUNICODE_STRINGから手に入れる事に成功したが
64bitだとfastcallになっちゃって第4引数まではレジスタ渡しされるからこの手法も通用しなくて詰んだ
kernel32やntdllのアセンブラ決め打って取得することは出来るだろうけどそこまではしたくない

654 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 23:26:32.45 ID:bBMeTJtZ.net]
ちなみになぜGetModuleFileNameではダメかというとハードリンクやシンボリックリンクのときにある条件下においてlpLibFileNameとGetModuleFileNameで一致しないケースが出てくるため

655 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 01:27:34.09 ID:LUtEOwg/.net]
>>643
その >ある条件下 で

TCHAR PathBuffer[BUFFSIZE];
GetMappedFileName (GetCurrentProcess(), (void *)hModule_DLL, PathBuffer, BUFFSIZE);
で、lpLibFileNameと同じパス(NT形式)が返ってくる?それともエラー?

試してないので結果を教えて

656 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 09:18:00.69 ID:J+vPZ/2W.net]
>>644
GetMappedFileNameだとリンク先の実体ファイル名が返ってきた
ある条件下というのは既に同じリンク先のdllがロード済みの場合に違う名前のリンクからロードしようとすると同一の物と判定され先客の方のhModuleが帰ってくるためGetModuleFileNameも先にロードしたほうの名前になる
C:\mod.dll ← 実体
C:\link0.dll ← シンボリックリンク
C:\link1.dll ← シンボリックリンク

最初にC:\link0.dllをLoadLibraryした場合、以降C:\link1.dllをロードしGetModuleFileNameをしてもC:\link0.dllが帰ってくる
GetMappedFileNameだと常にC:\mod.dllだった

657 名前:644 mailto:sage [2023/05/17(水) 10:25:43.22 ID:fHvb3D7j.net]
>>645
確認ありがとう、参考になった
こみ入った環境なんだね
所望の動作でなくて残念だけど、他の手段に心当たりがない...

658 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 10:34:13.93 ID:gc1pBp/r.net]
pe iat import address table
辺りを弄れば
鶏卵かもしらんけど

659 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 12:21:08.02 ID:Wn2vmhFl.net]
load されたときの名前からパラメータ参照ファイルな .ini ファイルの名を変えたいって感じなのかな?

>>645 のケースだと
C:\link0.dll でロードした場合には C:\link0.ini を参照し
以降 C:\link1.dllをロードした場合には C:\link1.ini を参照したい と
この場合 単に同じ実体でリンクカウントが1増えるだけであっても区別したい ということか

660 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 12:49:23.99 ID:gc1pBp/r.net]
DLLはメモリに直接ロードする方法もあるから
不正を正したいって意図なら無力だよ



661 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 23:43:11.96 ID:qdON7ber.net]
1. FindFirstFileでリンクか実体かを判定
2. VirtualAllocExで実行可領域のメモリを確保
3. ReadFileでDLLを読み込む
4. PEヘッダのIMAGE_OPTIONAL_HEADER64.ImageBase+IMAGE_SECTION_HEADER.VirtualAddressに各セクションをコピー
5. DLL内のImportLibraryを同じ手順で再帰的にロード
6. DLL_PROCESS_ATTACHとDLL_THREAD_ATTACHでDllMain呼び出し

662 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:28:26.73 ID:FHSnxikS.net]
Win32APIのGUIに著作権ってある?
自分用ならまぁ好きにしたらって程度だと思うけど
ボタンとか目コピで丸パクリしてアプリケーションとして配布したらダメなのかな

663 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 14:50:21.97 ID:D8eITJ2Q.net]
腐ったバナナの皮ですらアートとして認められるからな
許諾なしなら著作持ってる奴次第

664 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:19:56.03 ID:c7UfD3kr.net]
ReactOSはかなり似てるけどね
アイコンはTangoのを使ってるけど、形的なものはそっくりだな
テーマ機能があるから、訴えられても簡単に変えられるし、大した問題でもないが

665 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:39:13.36 ID:OUfVoMDF.net]
https://monolith-law.jp/corporate/design-ui-copyright-law

レイアウトや色の使い方ぐらいじゃ侵害にはならないだろうって判断と
あとは「思想又は感情を創作的に表現」したものであるかが関わる
それと著作権法に触れなくても意匠法にに触れる場合はあるとさ

>>651
複雑なデザインのボタンがあってそれを丸コピしたなら危ないけど
WinAPI程度のボタンだと「レイアウトや色の使い方」の範疇に思う

666 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 20:46:16.58 ID:IeFHnOxn.net]
>>651
あの大きさでは目コピって言いわけしても無理だろw
90%一致できるw

667 名前:デフォルトの名無しさん mailto:sage [2023/05/19(金) 22:40:34.19 ID:9QPyu6+L.net]
悪目立ちしなきゃ大丈夫って感じかな
どうもありがとう
素直に使いこなせれば変なことしなくていいんだけど

668 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 13:22:54.16 ID:QfLlK72x.net]
>>654
Windows自体がMotifのパクリ

669 名前:デフォルトの名無しさん mailto:sage [2023/05/20(土) 15:28:47.38 ID:GL6RWJiS.net]
あの立体的に飛び出たボタンは誰が最初にやったかを少し調べてみたら、やっぱりMotifが最初にやった可能性が高いな
Windowsも旧Mac OSもMotifより前にリリースされてるけど、ボタンは黒い線で縁取られてるだけだからね
Motifがリリースされた1989年の直後、1990年にWindows3.0がリリースされてボタンが立体的になった
ただ、リリース直後のMotifの見た目は確認出来なかった

670 名前:デフォルトの名無しさん [2023/05/21(日) 05:50:22.86 ID:wNzdA/GS.net]
誰も突っ込まないけどWin32APIのGUIってなんだよ?



671 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 09:39:48.68 ID:WLjUQB8s.net]
GDI32.DLL
つうかWindowsはGUIだろ

672 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 12:08:47.18 ID:+3uTL0QF.net]
面倒なことしなくてもDLLからアイコンロードすればいいんだけどな

673 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 15:30:11.58 ID:4p2tw/ut.net]
>>659
CreateWindow()とか知らないの?

674 名前:デフォルトの名無しさん [2023/05/21(日) 17:54:29.28 ID:BWx6f6vD.net]
CreateWindow() のどこがGUIなんだって話なんだけど。
GUIを構成するためのAPIの一つではあるがGUIと言われても違和感しかない。

675 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 18:18:37.48 ID:Ifo/fxoU.net]
皆行間読んで回答してるんだよ
そういうのを読み取れずにいちいち突っかかってくるお前に違和感しかないわ

676 名前:デフォルトの名無しさん [2023/05/21(日) 20:46:54.79 ID:BWx6f6vD.net]
行間が読み取れてないわけでも突っかかったわけでもなくて
気になる人いないの?って問うただけなんだけどね。

677 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 20:55:29.63 ID:hFZuZI8a.net]
GUIじゃなくてGUIパーツね
それを指摘してどうすんの?

678 名前:名無しさん mailto:sage [2023/05/21(日) 21:06:29.15 ID:WLjUQB8s.net]
GUIのデザインパクっていいっすか?だろ?
左上にシステムメニューと閉じるボタン
右上にアイコン化、全画面化がWindows3.1のGUIだ

679 名前:デフォルトの名無しさん mailto:sage [2023/05/21(日) 22:29:14.29 ID:5ynrmfbS.net]
よく読めよ
ボタンのビットマップとかのGUIパーツについて言ってるだろ
GUIのメソッドについてはパクるまでもなくAPI呼び出せば自然にそうなるから

680 名前:デフォルトの名無しさん mailto:sage [2023/05/22(月) 00:44:58.78 ID:Ff1Yirur.net]
それwin32api関係なくね?



681 名前:デフォルトの名無しさん mailto:sage [2023/05/22(月) 02:26:03.44 ID:Zf+cjPeC.net]
comctl32もwin32apiだと思う

682 名前:デフォルトの名無しさん [2023/05/22(月) 11:33:40.49 ID:Omf9ofNg.net]
Win32API の話ならム板
Win32API の著作権の話ならマ板
Win32APIのGUI?(ツールのデザイン)? の著作権の話なら著作権板
だろうな
遠すぎる

683 名前:デフォルトの名無しさん [2023/05/22(月) 22:29:16.30 ID:DLlnfzHn.net]
うるせー馬鹿

684 名前:デフォルトの名無しさん mailto:sage [2023/06/01(木) 18:53:13.24 ID:hCiag/wO.net]
winsqlite3って勝手に最新版のsqlite3でstdcallにしてコンパイルして上書きしても問題起こらないんかな

685 名前:デフォルトの名無しさん [2023/06/06(火) 23:10:55.17 ID:VJFPZJIc.net]
テキストカーソルインジケーターをアプリに組み込みたいんですが、どこかにサンプルコードないですか?

686 名前:デフォルトの名無しさん mailto:sage [2023/06/06(火) 23:42:13.94 ID:kMZUPc/s.net]
>>674
>>618: 蟻人間
似た状況の話に見えるどnyaruruはどうなったんだ?

687 名前:蟻人間 mailto:sage [2023/06/06(火) 23:46:10.64 ID:XV1AZyoR.net]
>>674
キャレットはXORペンで描くのがコツだね。

688 名前:蟻人間 mailto:sage [2023/06/06(火) 23:50:08.39 ID:XV1AZyoR.net]
システム標準のキャレットを使うならCreateCarat、ShowCaratなどを使う。

https://learn.microsoft.com/ja-jp/windows/win32/menurc/using-carets

689 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 13:08:22.78 ID:xTW5tL3j.net]
>XOR
灰色背景だと見えなくなるから賛同できないわ

690 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 13:24:44.47 ID:RsLfWKsz.net]
標準のエディットコントロール内に居るキャレットって XOR 描画してるよね



691 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 15:03:13.28 ID:BwWz5oN8.net]
たいていは白色がテキスト入力で灰色は入力不可の部分だからいんじゃない

692 名前:デフォルトの名無しさん mailto:sage [2023/06/07(水) 23:21:33.35 ID:HdTy5x+f.net]
読み取り専用とかで灰色背景はよくあるけど

693 名前:デフォルトの名無しさん [2023/06/08(木) 21:52:05.26 ID:xczGeZ8q.net]
キャレットもそうだけど、最近なんか範囲選択表示で、半透明の矩形上に重ねるだけのエディタ多くね?
あれ見づらいんだよなぁ・・・フルスクラッチで作るなら確かに横着できて楽なんだろうけど

694 名前:デフォルトの名無しさん mailto:sage [2023/06/08(木) 22:08:34.87 ID:asQ3aAAN.net]
エディットコントロール自作はやめたほうがいい

IMEが機能してるように見えても、音声入力や音声入力編集、読み上げで制限があるのが大半だから
キャレットもOSの強調表示機能があるし、知らないところで多機能を要求される

695 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 00:33:21.65 ID:HaYoNzhW.net]
自作エディットコントロールわざわざ作るときって巨大ファイル編集したいとかじゃないの
OSが勝手に後付けしたアクセシビリティ機能とか知らんでいいよ

696 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:30:59.27 ID:J1Oq+Y/w.net]
>>684
縦表示も独自実装、フルスクラッチでないけど

縦書きエディタTATEditorはwxWidgetsカスタムのようだ
https://qiita.com/496_/items/ebfb1e5eefaa9aa8f5bf
https://www.youtube.com/watch?v=_qnk_fNQvCo

697 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:34:59.04 ID:J1Oq+Y/w.net]
老舗エディタ(mifes, em)は巨大ファイル対応

これが異彩を放ってる
小さいメモリ(100MB以下)で大規模テキストファイル(5TB以上、2兆5000億行以上)を編集できる世界唯一の超巨大テキストエディター
https://szkwjp.サクラ.ne.jp/
https://i.imgur.com/isKK2x5.png

698 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:41:25.43 ID:J1Oq+Y/w.net]
Meryもdelphi製コントロールをヘビーカスタムしてたと思う
www.haijin-boys.com/

699 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:44:24.60 ID:J1Oq+Y/w.net]
この人は完全自作かも
https://twitter.com/TZEditor
(deleted an unsolicited ad)

700 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 06:46:39.63 ID:J1Oq+Y/w.net]
アクセシビリティ機能が要らない前提なら沢山あるね



701 名前:デフォルトの名無しさん [2023/06/09(金) 21:43:38.94 ID:KphHYdc7.net]
>>686
emEditor世話になっているけど意外に保存遅いんだな
まぁ頻繁に保存するような用途じゃないんだけど

そういや日本語フォント最速表示って今なんなんだろう、DirectWrite?
アルファベットなら予めテクスチャに全部落とせばいいんだろうけど

702 名前:デフォルトの名無しさん mailto:sage [2023/06/09(金) 22:38:21.40 ID:9anYwuVY.net]
>>686,688はフリーじゃない

>>690
>意外に保存遅い
emEditorは今でも活発に最適化に努めてるから最新ではどうなのか不明

飽くなき高速化への挑戦! 「EmEditor」はマルチスレッド・SIMD命令・仮想メモリをフルに使って進化
https://forest.watch.impress.co.jp/docs/special/1483714.html

freetypeが早いけどDWはOSがキャッシュしてくれる(ctfmon.exe)のが有利
harfbuzzもラスタライズしてくれるけどbitmapヒンティング切捨て、速度は不明
GDIはカラー絵文字ないから新規では厳しい

古い記事だけど 2017-05-21 GDI vs DirectWrite vs FreeType
https://i.imgur.com/8nDxIa3.png
https://silight.ハテナblog.jp/entry/2017/05/21/220505

TATEditorはfreetype (本来の速度より遅い気がする)
MeryはDW選択可能

今のnotepadはDWだと思うけどパラメータのせいなのか、同じ日本語フォントでもMeryの方がキレイ
一度気が付くと気になって仕方ない

703 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 16:44:39.28 ID:Yvl44ooC.net]
昔はメモ帳やらエディットボックスが32KBだかしか開けなかったせいでちょっと長いテキスト表示したいなら自作するしかなかったし
今のエディットボックスも使いやすいというわけでもないし

704 名前:デフォルトの名無しさん mailto:sage [2023/06/10(土) 20:18:04.21 ID:mnSa2udb.net]
完全自作で良いの見つからないけどね

705 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 09:51:52.60 ID:meEyuUg2.net]
禿丸

706 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 10:08:02.73 ID:sYfPkaoR.net]
秀丸は1995年から今までずっと使ってる

707 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 11:00:54.79 ID:M8hmmq2x.net]
4000yen

708 名前:デフォルトの名無しさん mailto:sage [2023/06/13(火) 16:26:23.21 ID:u7AmJNUj.net]
>>693
むしろエディタには完全自作しかない
エディタにあるような複雑な禁則事項はエディトボックスでは扱えない

709 名前:デフォルトの名無しさん mailto:sage [2023/06/14(水) 08:13:22.34 ID:EjsNogN3.net]
高校生の頃からHTML直打ち自前サイト始めたから、秀丸にはお世話になったわw

710 名前:デフォルトの名無しさん [2023/06/14(水) 23:13:37.25 ID:8tGzhu5T.net]
>>691
690だけど遅レスですいません、詳しくありがとうございます
社内で使う遊びツールに活かさせて頂きます

というかここまで詳しい人ってもう



711 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 14:24:30.00 ID:x2sgiUfE.net]
FindWindowで他プロセスの生存確認を行っているのですが、その該当プロセスが死んではないものの
応答無しレベルで重い場合にFindWindowがNULLを返すことはあるのでしょうか?
ここでは他プロセスのトップウィンドウを検索しています。

該当プロセスが本当に死んでるなら当然でしょうが、それ以外でNULLを返す可能性があるならば
対策をしようと思いつつも、そんな可能性がないなら無駄なのでご存じの方よろしくお願いいたします。

さっとググった感じでは、他プロセスの子ウィンドウを検索する場合は問題ありのような感じですが、
本件はそうではないですしほとんどの場合NULLではなく正常にウィンドウハンドルを返してくれています。

712 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 14:41:26.20 ID:wsVmiElF.net]
詳細なエラー情報を得るには、GetLastError を呼び出します。

713 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 15:24:58.51 ID:2pPxjP0B.net]
他プロセスの生存確認はEnumProcesses()でやるべきなのでは

714 名前:デフォルトの名無しさん mailto:sage [2023/06/19(月) 16:12:12.17 ID:x2sgiUfE.net]
>>701
その通りなのでその辺の修正を視野に入れていますが、中々再現性が薄いのもあり、そもそもの仕様として
どうなのかなという確認の意味で質問しました。

>>702
どうもすみません。説明に抜けというか間違いがありました。
生存確認だけではなく、WM_APP+nメッセージも送るためウィンドウハンドルが必要となります。
(実際、死んでいるなら起動処理も入れていますが)

要はプロセス間通信をしているのですが、データ自体はファイルマッピングによる転送、転送のトリガー通知を
メッセージ送信にしています。

715 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 13:30:15.15 ID:Dvlv0UV+.net]
FindWindowで見つからないならHWNDも取れないんだし居ない者でいんじゃね
つかそこ悩むことじゃなくね

716 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 14:36:54.12 ID:AYb44acK.net]
>>700,703
ちなみにそのアーキテクチャはいつの設計なん?

717 名前:デフォルトの名無しさん mailto:sage [2023/06/20(火) 16:49:06.07 ID:Dvlv0UV+.net]
まずプロセス間通信するなら相手が居ない場合を必ず想定すべきでFindWindowの1度の呼び出しで一喜一憂すべきではない
プロセスの起動し直しも前提に数秒おきのFindWindow呼び出しポーリングはしたっていいと思うよ
メインウィンドウなんて高々数十個だしそんな負荷にならない

718 名前:デフォルトの名無しさん [2023/06/20(火) 20:40:34.74 ID:1lEw2nNB.net]
該当プロセスを他プロセスから起動してたりするとどうなんだろ
あとFindWindowじゃなくてEnumWindowsなら拾えないことって無い印象だなぁ、ハンドルも取れるし

あまり関係ないけど、うちのクソシステムだとブラウザからサーバー上にあるエクセル開くんだけど、
Workbooksで拾えたり拾えなかったりするのよね(ExcelVBA)

719 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 03:06:59.92 ID:xVHig5c/.net]
>>704
複数起動しないようmutexかけてるので、プロセス生きてるにもかかわらずFindWindowがNULL返すのなら好ましくないなと。

>>705
古いよ。保守だけで毎月3桁くれるんだからおいしい。

>>706
とりあえず見つからないならエラーも取得しつつ数秒間再試行かけてみました。
これで様子を見ます。

>>707
該当プロセスは他のプロセスからも起動したりテスト作業で自分で起動したりしてますが、一応拾えてますね。

720 名前:デフォルトの名無しさん mailto:sage [2023/0 ]
[ここ壊れてます]



721 名前:6/21(水) 08:17:17.70 ID:HzwHqkRi.net mailto: mutex の排他って CreateWindow する前 & メッセージループする前だから
プロセスは存在してるけど、window は無いって 中間的な状態じゃね?
[]
[ここ壊れてます]

722 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 15:51:17.25 ID:3v7xwtLO.net]
100円か

723 名前:デフォルトの名無しさん mailto:sage [2023/06/21(水) 16:38:24.82 ID:cZp0PZIW.net]
999円かもしれないじゃないか

724 名前:デフォルトの名無しさん mailto:sage [2023/06/22(木) 17:55:22.58 ID:Sn58Ngpo.net]
>>701
詳細なエラー情報を得るには、関数を呼び出します。

725 名前:デフォルトの名無しさん mailto:sage [2023/06/27(火) 10:23:32.50 ID:SIPPfbqI.net]
>>710-711
お前らその金額でおいしいの?仕事してくんない?

726 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 05:28:13.99 ID:+33O6idh.net]
スクリーンセーバー作ろうぜ

727 名前:デフォルトの名無しさん [2023/07/23(日) 16:38:12.26 ID:eEbrANA6.net]
POSIXのopenatとかをWindowsで実装したいんだけど、
NtCreateFileを使えとは見るんだけど、
実際のコードは見たなことない。

gnulibから実装した方がいいのかな?

728 名前:デフォルトの名無しさん mailto:sage [2023/07/24(月) 12:54:52.49 ID:IGsOjAN4.net]
不特定多数に文字だけで意思疎通するには答えやすい尋ね方というのがあると思うが、そんなことよりスクリーンセーバー作ろうぜ

729 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2023/07/24(月) 13:10:56.94 ID:72ajrVnV.net]
>>715
https://github.com/katahiromz/hello-native-app
こちらを参考に。

730 名前:デフォルトの名無しさん mailto:sage [2023/08/04(金) 11:13:07.90 ID:2Yu2Iz7N.net]
IME のオンとオフの実装で以前は
ImmGetContext
ImmSetOpenStatus
ImmReleaseContext
の3点セットで完全にオンとオフが機能していたように記憶しているのですが
今のWindowsでは機能しないことがあります(Windows 11 Home 22H2 OS Build 22621.2070)
この原因や解決策をわかる方がいたら教えてほしいです
Windows の公式サンプルでもこの3点セットでオンオフを実装しています
github.com/microsoft/Windows-classic-samples/blob/ac06e54a15e9a62443e400fffff190fb978ea586/Samples/Win7Samples/winui/input/ime/fullime/Main.C#L237



731 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 03:35:25.87 ID:ZYr7i0H2.net]
旧版MS-IMEじゃないとダメなんじゃないっけ?知らんけど

732 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 09:34:20.67 ID:wvUeqD5z.net]
心配無用
Win11でなら上手く動かなくても許される

733 名前:デフォルトの名無しさん [2023/08/14(月) 19:56:12.96 ID:53r0CZc5.net]
y=f(x)のグラフを描こうとした場合、GDIのLineTo()で書けますが
グラフとx軸の間の領域を背景とは異なる色で描画しているアプリを
見かけることがあります。
ベタにやろうとすると(x,0)から(x,f(x))までを別のペンでLineToすれば
できそうですが、それだとあまりにも遅そうなんでどのようにするのが
一般的なんでしょうか?

734 名前:デフォルトの名無しさん [2023/08/14(月) 19:58:40.11 ID:KSpEuPpD.net]
polygon

735 名前:デフォルトの名無しさん mailto:sage [2023/08/14(月) 23:17:07.87 ID:Vf3oM49A.net]
>>721
グラフを描画するのであれば、さすがにそういうのに向いたプログラミング言語を使ったほうが
本質的な所に時間を使えるんじゃないか?

736 名前:デフォルトの名無しさん [2023/08/14(月) 23:53:10.89 ID:hsUNKBWX.net]
(分かりやすく)グラフが丁度収まる矩形サイズの描画メモリをCreateDIBSectionとかで確保して
掛け算や条件文をなるべく使わずに、直接メモリを塗りたい色で書き換えて、
最後にその描画メモリをバックバッファへ転送する、とか

737 名前:デフォルトの名無しさん [2023/08/15(火) 08:10:50.28 ID:eu+UdA0l.net]
PathT

738 名前:o []
[ここ壊れてます]

739 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 10:10:52.28 ID:whQn6DUa.net]
データ左端,Y軸下端 to データ左端,Y値 to データX値,Y値 to
... to データ右端,Y値 to データ右端,Y軸下端 (to データ左端,Y軸下端)

740 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 11:35:30.53 ID:r8gJDQt/.net]
https://learn.microsoft.com/ja-jp/windows/win32/api/wingdi/nf-wingdi-polypolygon



741 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 11:44:42.91 ID:5h6JYYPu.net]
自分で線描画してメモリDCでダブルバッファするか
既製のチャートコントロールを使う
jもしくはavascriptにグラフ描画のは沢山あるからそ!をwebview2か何かで表示する

742 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 12:32:58.41 ID:32B9AzF9.net]
いや、GDI+かDirect2Dを使えばいいんだよ

743 名前:デフォルトの名無しさん [2023/08/16(水) 10:30:08.97 ID:tgyEZLGb.net]
>jもしくはavascript

斬新ですね

744 名前:デフォルトの名無しさん [2023/09/23(土) 00:28:12.62 ID:aQUNS12d.net]
メール関係のライブラリを知っていたら教えてください。
Windowsで使えるライブラリってないのでしょうか。

745 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 04:00:25.45 ID:kn75UD+k.net]
まああるかないかで答えればあるんだけどさ
メール関係って言われても色んな技術の集合だしなあ
その質問をこのスレで聞いちまう所がまずセンスないよね

746 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 09:47:18.93 ID:i9fpyxKg.net]
mapi

747 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 14:43:48.51 ID:60UGXAh5.net]
送受信はたいしたことないけど
お行儀悪いのを忖度して可視化するのがとても大変

748 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 18:43:45.24 ID:lGebHJu0.net]
HELO

749 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 23:00:13.46 ID:9Qe717YS.net]
USER
PASS

750 名前:デフォルトの名無しさん [2023/09/24(日) 09:35:27.98 ID:2YTVyUlC.net]
EHLO



751 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 19:41:47.04 ID:iqjAJ+9f.net]
RFC821

752 名前:デフォルトの名無しさん [2023/09/25(月) 13:09:43.15 ID:RmxLVxNP.net]
ERO

753 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 13:29:13.68 ID:6+Zop4bX.net]
GetTempPathで取得できるフォルダ(AppData\Local\Temp)の中を見ると、
固定名と思われるサブフォルダを作っているアプリが結構あるのですが、
こういうアプリって、その固定名のサブフォルダが他のアプリと競合したり、
同じ名前のファイルがすでに存在していてサブフォルダを作るのに失敗したりするケースは、
ちゃんと想定しているものなんですか?

754 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 14:42:44.03 ID:QCQROq06.net]
作り手次第だよ
ちょっと考えれば判るよね

755 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 16:13:27.26 ID:6+Zop4bX.net]
>>741
想定していないアプリなんかは、事前に同じ名前の空ファイルでも置いておけば、
テンポラリフォルダを作れなくて正しく動かなくなってしまうということですよね?

756 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 16:59:03.55 ID:mqYR7ljA.net]
同名のファイルが存在してサブフォルダが作れずに阻害された後
どうなるかも作り手次第だろうね
名前を変えて悪あがきするか、エラー報告して終わるか、だんまりするか・・・

757 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 19:44:54.79 ID:a3/CUfz+.net]
単なるファイルのコピーすら気を付けても穴だらけだしな
その時点の知識で最良を目指すしかない

758 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 02:22:24.50 ID:5xG4BOfj.net]
>>740
そもそもTempは一時的なフォルダでしょ
本アプリは上書きで使っていくだけだから影響はないでしょ
キャッシュや恒久的に使用するデータをそこに保存している場合は不具合のもとだろうけど
データ検証しない場合はエラー吐いて落ちるだけじゃね?

759 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 08:45:50.87 ID:KtsI0JaQ.net]
Tempフォルダの中身は削除されても文句言えない物だから
なんなら同名あったら問答無用で削除して自分用作るすらあると思うわ

760 名前:デフォルトの名無しさん [2023/09/27(水) 11:42:51.73 ID:OOPn+kCl.net]
その通り
既存の同名があって作成者が自分じゃなければ消して新しく同名で造れば良い



761 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 11:55:22.18 ID:rbbJx+dJ.net]
>>740
勝手に数字をつけて存在しない名前を探してくれるAPIがあっただろ
数字は16ビットなので65536個全部あったらだめだが

762 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 12:24:30.48 ID:JPmaWpsM.net]
APIを呼び出した次の瞬間名前が衝突する可能性も考慮するんだぞ

763 名前:740 mailto:sage [2023/09/27(水) 12:37:44.20 ID:jK1ZOC3S.net]
みなさんありがとうございます。

>>745-748
テンポラリファイルではなく、固定名のサブフォルダを作るアプリに対する疑問でした。
フォルダ上に同名のファイルがあったら、その名前のサブフォルダは作れないですし。

確かにそれを言い出したら、インストール時も、
Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。

764 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 14:26:16.30 ID:5xG4BOfj.net]
>>750
作る前に存在の有無ぐらい確認するでしょ

765 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 14:52:35.81 ID:KtsI0JaQ.net]
それはアプリ作成側がそこまで思いを致すかどうかなんだよ

766 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 15:25:13.52 ID:CB93ywr3.net]
>>750
テンポラリファイルではなく、固定名のサブフォルダを作る場合は
C:\Users\ユーザー名\AppData\Local\会社名
で作るのが一般的では?(暗黙のルール?)

個人で作ってるならアプリ名を元に他と被らないようにするとか

767 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 23:12:54.83 ID:zQBl5fyt.net]
その為のレジストリなんじゃないのか?
キーは基本的に会社名含めてるから被らないし、ファイルを作成して消耗するより楽だろ

768 名前:デフォルトの名無しさん [2023/09/28(木) 06:29:56.08 ID:wsjwbbNA.net]
テンポラリの作業用にレジストリ使うの?
ファイル造る方が楽

769 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 08:45:42.90 ID:fRqICkyk.net]
>>753とか>>754とか
世の中に同じ名前の会社が一切存在しないと思ってんだろうか

770 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 09:48:55.62 ID:wMng62Lu.net]
知らんわ
あとから出来たほうが対策しろよw



771 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 10:00:55.49 ID:7+/lnWbq.net]
ファイルやディレクトリ造るために社名変更するまである

772 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 10:03:24.72 ID:/0J5x9qx.net]
実際被ってたことってある?
俺はないけど

773 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 19:13:55.93 ID:0dpaiugf.net]
俺はいまでもかぶってる

774 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 23:36:06.79 ID:HoOgKtnG.net]
もげろ

775 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 08:59:20.90 ID:Z2hlTA8C.net]
病院行ってこい

776 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 09:07:48.85 ID:05Kz/f5R.net]
整形外科?泌尿器科?

777 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 11:10:40.92 ID:F8aJXNq9.net]
風呂入れよ
https://www.youtube.com/watch?v=DTDMHUuC3rI

778 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:05:12.07 ID:9HknARLB.net]
>>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。

779 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:05:22.61 ID:9HknARLB.net]
>>750
>確かにそれを言い出したら、インストール時も、
>Program Filesの中に同名のファイルがあったらどうするんだとか出てきますが。
Windows Installerは排他実行だった気がする。

780 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 03:22:17.67 ID:vj98VpKw.net]
>>764
グロ



781 名前:デフォルトの名無しさん [2023/10/09(月) 08:17:21.60 ID:2tIVtmSa.net]
リソースの作成は、片山さんのを使っているのですか?

782 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:12:37.06 ID:hjluQqqG.net]
はい

783 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 09:32:43.89 ID:wrsiK2xx.net]
MoveFileExにはMOVEFILE_WRITE_THROUGHというフラグがあって、
直後にディスクへフラッシュすることができるけど、
これと同じことをCopyFileで行うことはできますか?

784 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 12:40:51.43 ID:3zuw4Zf7.net]
>>770
単独では無理そうなので、CopyFile2 をつかうといい。
https://devblogs.microsoft.com/oldnewthing/20221007-00/?p=107261

785 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 13:17:40.41 ID:wrsiK2xx.net]
>>771
Microsoft公式で、こんな苦し紛れな方法が紹介されているんですね。
MoveFileExはNT3.1以降の関数なのに。

786 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 15:56:54.94 ID:qi66pVAj.net]
>>770,771
どっちもそれだけでは不意の電源断でロバストじゃないのが難しい。

787 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:13:57.13 ID:rxI6O073.net]
タイムスタンプが1970年だかのファイルを仮置きして別名でコピーしたら挿げ替え
電源断が怖いなら挿げ替え部分だけアトミックに作ればいい

788 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 22:40:24.43 ID:82k65TSZ.net]
>>774
>電源断が怖いなら挿げ替え部分だけアトミックに作ればいい

この部分は具体的にセオリー的なやり方があるのですか?
挿げ替えで思い当たるReplaceFileはアトミックか分かりませんでした。

789 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 11:02:51.03 ID:swAla//2.net]
CopyFileではいったんテンポラリファイルにコピーして、
それをMoveFileExで正しいファイル名に変更するとかやれば、
ちゃんと書き込まれる可能性は高くなるんですかね

790 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:32:02.74 ID:MnzvwPfi.net]
アトミックなファイル操作
https://heartbeats.jp/hbblog/2013/10/atomic01.html

(ちょっと古いけど)



791 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:36:06.88 ID:NNCP5uXb.net]
>>775
Rep略はアトミックだよ
MSのどっかに書いてあった

792 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:43:37.11 ID:NNCP5uXb.net]
https://learn.microsoft.com/ja-jp/windows/win32/fileio/deprecation-of-txf

793 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 18:23:35.28 ID:fgzxSMPt.net]
RtlReAllocateHeap(GetProcessHeap(), 0, lpMem, dwBytes)
これをそこそこの頻度でやってると特定回数目にクラッシュしてしまうんだけどどういうことなのだろうか
よくある戻り値null未チェックとかそういう事ではなく上記関数内で落ちるんだよね
lpMemも間違いなく生きてるメモリなのは確認済みでdwBytesも不自然な値ではない

呼び出し方が悪いのかと思ってmalloc、reallocに変えてみてもやはり同様の場所でクラッシュしてしまう

794 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 21:23:43.76 ID:rZ40Y3/a.net]
API変えても発生するならAPI関係ない場所のお前のバグじゃん

795 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 23:51:50.03 ID:fgzxSMPt.net]
>>781
WindowsのreallocはHeapReAllocのラッパーでHeapReAllocの実態はRtlReAllocateHeapへのリンクに過ぎない訳だが

796 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 00:50:32.19 ID:+N5csyKn.net]
mallocやreallocもまともに使えない子はこのスレに来るのはまだ早かったねー

797 名前:デフォルトの名無しさん [2024/01/03(水) 01:02:21.99 ID:l1Q27XPY.net]
正月ボケを晒すスレ

798 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 09:46:34.80 ID:STDOZzf0.net]
free 済のポインタに対して 再び free したんじゃないの?

799 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 09:47:05.92 ID:STDOZzf0.net]
realloc の頭で free するからね

800 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 19:03:00.23 ID:IQKtoxOL.net]
特定回数でクラッシュするなのがわかってるなら
アドレスがどう変化した時にクラッシュするとかわかりそうなもんだ



801 名前:デフォルトの名無しさん [2024/01/04(木) 22:30:57.77 ID:ZPN5xQR2.net]
mallocで大きなメモリを取得して、その領域から切り出すalloc関数などを作って差し替えてデバッグするとか?
組み込み系で良くやるけどね。

802 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 22:40:26.44 ID:L+x9xVwI.net]
ボソ HeapAlloc()

803 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 22:48:53.63 ID:IQKtoxOL.net]
>>786
それはおかしいだろ
(アドレスが変わる場合は)freeする前に新しいアドレスに内容コピーしないといかんから

804 名前:デフォルトの名無しさん mailto:sage [2024/01/14(日) 00:10:31.18 ID:+DXd3tPu.net]
BoundsChecker か PURIFY ですぐ究明できそうな気がするけど

805 名前:デフォルトの名無しさん mailto:sage [2024/01/16(火) 14:06:03.29 ID:YFpb2YHn.net]
メモリのフラグメンテーションで大きい領域がとれないんじゃない?

806 名前:デフォルトの名無しさん mailto:sage [2024/01/23(火) 16:49:29.22 ID:SUJHX/By.net]
ファイルパスなんかはカーネルが結局UNICODE_STRINGとして扱うからwchar版の方がパフォーマンス良いけどadvapi32のレジストリ系関数はどうなんだろうか?

807 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 12:12:36.19 ID:h4bsjzTE.net]
WM_MOUSEFIRSTからWM_MOUSELASTのメッセージって、
これから追加されるメッセージもLPARAMはすべてマウス位置のクライアント座標が入る、という約束はありますか?

808 名前:デフォルトの名無しさん [2024/02/21(水) 15:57:22.07 ID:jTOh+ue+.net]
Spy++のメッセージウィンドウには、「S」や「P」の文字が表示されていて、
それがSendで送られたのかPostで送られたのかがわかるようになっていますが、
これと同じ区別を、自身のメッセージハンドラ上で行うことはできるのでしょうか

InSendMessageというAPIは見つけたのですが、
Spy++で「S」と表示されるものでも0が返ってきてしまいました

809 名前:デフォルトの名無しさん mailto:sage [2024/02/22(木) 22:51:02.73 ID:kQumE7Ak.net]
分別してどうするのさ

810 名前:デフォルトの名無しさん mailto:sage [2024/02/23(金) 16:31:44.91 ID:JzCbi9fb.net]
InSendMessageは別のスレッドからSendMessageされたかを判断する、と説明があるから、
単純にSendMessage呼び出しを判定するものではなさそう

同一スレッドからのSendMessageの呼び出し判定は、ウィンドウプロシジャのコールスタック辿って
SendMessageのエントリポイントと比較するとか、何か追加で頑張る必要がありそう



811 名前:デフォルトの名無しさん mailto:sage [2024/02/23(金) 17:02:46.18 ID:GiKlOj9R.net]
Snedはメッセージキューに来ないからあればPostなければSendやぞ

812 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 00:12:34.16 ID:qqiEO45x.net]
内部でIsPostMsgとかフラグ作ってDispatchMessage()を呼ぶ時に1にする終わったらゼロにする

813 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 09:12:26.23 ID:niSNojaB.net]
ウィンドウプロシジャが呼ばれる経路はそれだけ?

814 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 13:03:44.44 ID:qqiEO45x.net]
Postでキューに入ったのを取り出して呼ばれるのはそこだけでしょう
Sendでは直接呼ばれる
もしウィンドウプロシージャの中からSendしてたらこれは使えない

815 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 13:41:01.55 ID:Uzz+lkGd.net]
自アプリ側で予め
SendMessage PostMessage
をフックしとけば良いのでは?

816 名前:デフォルトの名無しさん mailto:sage [2024/02/24(土) 14:33:49.19 ID:5nanMrzK.net]
bonurd.winofsql.jp/sb/log/eid175.html
SendMessage と PostMessage のフック

817 名前:デフォルトの名無しさん mailto:sage [2024/02/25(日) 11:17:44.56 ID:GDczOUha.net]
>>796-803
ありがとうございます
Spy++はメッセージをフックしているから、SendとPostの区別もできるということなんですかね

818 名前:デフォルトの名無しさん [2024/04/29(月) 03:35:32.42 ID:xgq67JZI.net]
intから__int64へ

819 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 06:48:18.53 ID:CU7bUsfh.net]
てす

820 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 06:59:53.68 ID:CU7bUsfh.net]
自作アプリに対してSendMessageでWM_APP送ってるけど送れてない(受信できていない)ことがあったので
送信側でGetLastErrorしたら
> 0x05:アクセスが拒否されました。
が取れました。

ここによると
ttps://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-sendmessage
> メッセージが UIPI によってブロックされると、 GetLastError で取得された最後のエラーは 5 (アクセス拒否) に設定されます。

これに該当してる?のか他の原因でアクセス拒否されているのか分からないけど、
受け側のアプリはずっと起動したままで直前までメッセージ受信できていたことと、
その後もアプリが死んでいるようには見えず操作できるし動作ログも残るため、
ただただWM_APPメッセージ受信のみ(?)できなくなっているような状況です。

ここで質問ですが、どういう時に急にメッセージ受信できなくなるのか、エスパーお願いします。

今後の対策としては受信側でChangeWindowMessageFilterを使ってWM_APPを許可すれば良さそうだと当たりは付けていますが・・
権限レベルを弄ったりということは一切していないので、問題の発動条件が知りたいです。



821 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:35:37.84 ID:5PSVmBb2.net]
まず再現性あるのか確認してね

822 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:47:14.20 ID:5PSVmBb2.net]
んで、この手のシステムからの意図しない介入問題が起きた場合は、
原則プロセスの再作成で解決するしかない

823 名前:デフォルトの名無しさん mailto:sage [2024/05/08(水) 21:51:37.73 ID:5PSVmBb2.net]
これはLow Level Hookが外れた時の対処と同じ
恐らくSendMessageの処理が規定時間以内に終わらなかったとかで適当に介入してるんだろう
知らんけど

824 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 08:54:43.22 ID:cRZqeFYn.net]
知らんけどで逃げるなw

825 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 11:45:17.50 ID:LBnBOAOP.net]
>>808
再現性ないと言っていいのか、手元では再現できず
エラーが出た環境でも普段は問題出てなくて、たまたま問題が出たのに気付いてログを漁ってエラーコードが分かり、
過去ログも遡ると半月前にも一度エラーが出ていたのは分かりました

この問題が出た環境は24時間PC&アプリ起動しっぱなしということらしく、その時点で
何となくお察し感がなくもないですが原因ははっきりさせたいなと

>>809-810
受信側は一切メッセージの受信を感知していない(ログに全く残らない)ようなので
規定時間以内に終わっていないというようなことではないとは思いますが、
何かしらの原因で適当に介入されている感はすごくあります

まあ適当に〜されたとしても、はっきりしたいところです

826 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 15:19:14.25 ID:HEWeaKRP.net]
断片化回避のためにSetFilePointer -> SetEndOfFile -> SetFilePointerサンドイッチってもう古いやり方?
.NETのFileIO実装がSetFileInformationByHandle(FILE_ALLOCATION_INFO)でやってるんだが

827 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 19:16:20.44 ID:2Qg6aldP.net]
SSDは?

828 名前:デフォルトの名無しさん mailto:sage [2024/05/09(木) 21:40:33.69 ID:UHyVEDy6.net]
>>811
ちょっと調べてはみたけどstackoverflowでも迷宮入りしててだめだったんよね
SYSTEMプロセスから送れば拒否られないとは思うが
確実にプロセス間通信をしたかったらメッセージよりは名前付きパイプが無難だろうな

829 名前:デフォルトの名無しさん mailto:sage [2024/05/10(金) 23:35:02.72 ID:r04xuHSU.net]
>>815
迷宮入りまで調べてくれてたんですね

確かにパイプが無難です
今さらコイツを修正するには作り直しレベルなのでもう無理ですがw

とりあえずしばらく放置して色々な環境でログ収集して情報整理します
ありがとうございました

830 名前:デフォルトの名無しさん mailto:sage [2024/05/10(金) 23:49:50.70 ID:irdjP1bw.net]
>>807
再現性はともかくとして、SendMessageが途中から拒否られる事象がOSのどのバージョンで発生したか書いといてくれると嬉しい



831 名前:デフォルトの名無しさん mailto:sage [2024/05/11(土) 03:02:04.26 ID:7XNHipLd.net]
>>817
どうもすみません
Windows11 home 23H2です

ちょうど今おかしな環境のPCがまたおかしくなっているようなので調べていましたが、
受信側プロセスが管理者特権に変更されているようで、これが原因ですね

送信側は管理者特権は付与されていませんが、送信側プロセスから受信側プロセスを
起動していますから、最初は特権が付与されていないはず・・・

ということでどちらのプロセスも再起動させたところ、どちらも標準ユーザーになっていました
explorerからexeプロパティを見ても管理者権限はチェックされていないようです

意図せず途中で管理者特権が付与される可能性はあるのでしょうか?
(プログラム的にはそんなことしているつもりはもちろん無いですが)

832 名前:デフォルトの名無しさん mailto:sage [2024/05/11(土) 12:31:06.19 ID:PynvVCIt.net]
無意識にそんな特権付与されたら怖すぎるがなw
システムが一時的に特殊な状態にしてるんじゃないの

833 名前:デフォルトの名無しさん mailto:sage [2024/05/13(月) 00:51:53.26 ID:UH9hVJYb.net]
APIの先で起動されるスレッド(OSが起動する)が管理者特権付きで
それがアクティブな瞬間はプロセスが管理者特権付きに見えて、
そんなタイミングのプロセスに一般ユーザがメッセージ送ると、
管理者様に対して頭が高いぞってアクセスデナイド。
とか想像してみた。

834 名前:デフォルトの名無しさん mailto:sage [2024/05/13(月) 02:44:07.73 ID:eZXBgDRS.net]
818です

ログを見ると、一度メッセージ受信できなくなるとずっと受信できていないようです
管理者特権が付いているのを確認したのはタスクマネージャでの目視ですが、
見たところずっと特権がついているのでタイミングの問題ではなく、何かしらの拍子で特権がついたまま
という感じですね

今のところ、24時間起動したまま使い続けていますがあれから特権はついていません

特権を必要とするようなコードを書いたことない(つもり)なので、原因にたどり着くのは中々難しい状況です
例えば、どんなことをすると特権が付与される(UIもなく勝手に?)のでしょう?

835 名前:デフォルトの名無しさん mailto:sage [2024/05/16(木) 19:26:12.96 ID:s6fDlAb8.net]
心当たりが無いなら今月のCVE-2024-30051だとか特権の昇格の脆弱性のどれかに引っかかってる可能性あり

836 名前:デフォルトの名無しさん mailto:sage [2024/05/18(土) 14:21:00.21 ID:u20XKbPO.net]
>>813
自己レスだけどSetFileInformationByHandle(hFile, FileAllocationInfo...)でやるとサイズが小さい場合にMFT内にデータ埋め込んで完結する場合でも1セクタ確保されてしまうようなので旧来の方法でやる方が無難だった

837 名前:デフォルトの名無しさん mailto:sage [2024/05/21(火) 10:59:49.66 ID:CZsnB0Ll.net]
>>813
埋め込みサイズ上限を上回る新規ファイルを作る場合ならハンドル作成時にアロケーションサイズも同時指定する方が良さそう

838 名前:デフォルトの名無しさん mailto:sage [2024/05/25(土) 11:34:53.77 ID:IsAA9ZVh.net]
>>807,821
疑ってすまないけど、本当に隅から隅まで自分で書いたプログラムなのか?
OSSをちょっと弄った程度で自作アプリと言っているだけなんじゃないか?

839 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 17:30:16.76 ID:5SDO0AId.net]
リストビューで範囲選択したときの青い枠の色や内部の半透明な色の値は、APIで取得できるのでしょうか

840 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:37:40.98 ID:tN3gYMey.net]
出来るよ



841 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:43:52.23 ID:tN3gYMey.net]
GetSysColor

842 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 18:52:44.95 ID:uKjwQH9U.net]
この辺りlinuxやMacのWMとかと違って有る程度の値の取得変更できるのはWindowsの強みだったよな

843 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 19:04:09.64 ID:5SDO0AId.net]
>>828
GetSysColorはRGBの値で、透明度の値まで持ったものを返すようには見えなかったのですが、
具体的にどのパラメータを指定するのでしょうか?

844 名前:デフォルトの名無しさん mailto:sage [2024/05/29(水) 19:05:11.69 ID:1pytebYy.net]
他スレでスクリーンショットのマルチポストがあるけど、加えてコントロールの色を取得か

AIに食わせるUI Automation学習データを整備してるのかな

845 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 16:56:56.15 ID:32XGh5Dj.net]
半透明じゃなくて字と地の色を反転させてるだけだろ

846 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:32:57.61 ID:As0oayev.net]
>>832
XPの頃からある範囲選択時の半透明の青なのですが

847 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:38:53.94 ID:ScAYlfUJ.net]
>>833
プログラム組んでるのなら自分で逆算しろ

848 名前:デフォルトの名無しさん mailto:sage [2024/05/30(木) 21:44:25.79 ID:As0oayev.net]
>>834
どのWindowsでも画面設定とか関係なくこの青なら直値で計算してもいいけど、
なにかのAPIで取得できるなら合わせておきたいです

849 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 08:56:42.01 ID:UXfkVjV8.net]
稀によく自分で手を動かすのと人に訊く比率がバグってる奴がいるよな
本人は自覚があるから分散してるつもりだろうけど一回そう思われたら終わりなんだよ
職場で塩対応されてるんだろうな

850 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 13:33:58.54 ID:bH8oOxQj.net]
>>835
GetThemeColor じゃだめ?



851 名前:デフォルトの名無しさん mailto:sage [2024/05/31(金) 15:08:47.69 ID:b6j7bQai.net]
COLOR_HIGHLIGHTとCOLOR_HIGHLIGHTTEXTじゃないの?

852 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 10:21:37.70 ID:mIdqOGxG.net]
Chromeや秀丸系製品で、タブをウィンドウ外にドラッグすると、別ウィンドウに分割できるのは、
頑張ればプロセス起動で実装できるような気もしますが、
さらに別のウィンドウの中のタブ群に移動できるのは、魔法な気がしますよね。
別プロセスの中にタブをごっそり移動するというのは、難しい気が。
どうも、画面の各タブごとに最初からプロセス起動しているようですが。
Wzエディタとか、複数立ち上げても異なるプロセス間のタブ移動はできないようですが、
これは、ウィンドウ=プロセスだからですよね。

こういうのはWPFでは作れないと思うので、今となってはこのあたりがWin32APIの将来性?

853 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 11:12:44.44 ID:dd5BD0xO.net]
SetParent

854 名前:デフォルトの名無しさん [2024/06/27(木) 11:13:43.84 ID:n/nJ5fKa.net]
>>839
ドロップされたらドロップ元が自分のアプリと確認できればタブ生成して、データを引き取って終わりで駄目?

855 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 11:15:48.39 ID:h+EH+DLv.net]
Win32APIでゴリゴリ作ることもできるけど
既存の仕組みを使うならOLEを検討すべきかも

856 名前:デフォルトの名無しさん [2024/06/27(木) 11:21:59.93 ID:OTNDZ+yC.net]
>>839
将来性も何も30年以上前から変わらない枯れた話だよ

857 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 13:20:20.40 ID:mIdqOGxG.net]
異なるウィンドウへタブをドラッグされたときに、ファイルを開きなおすというのは考えたんですけれど、
アンドゥとか、そもそも保存してないデータとかもあるから、案外、難しいんじゃないかと……
秀丸はファイルを開くとプロセス増えてるし。
Wzエディタはファイルを開くたびに増えないけれど、タブの結合に制約が発生するのかと。
Chromeもタブを開くたびにプロセス増えるけれど、これはサンドボックス関係の何かかもしれないですね……

858 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 15:30:22.02 ID:FNjZgfw1.net]
>>840
ここに答えが出てるのにみんなスルーかよw

859 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 15:52:30.68 ID:OTNDZ+yC.net]
ベストアンサーはスルーしてさしあげるのが5chの掟

860 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 19:09:13.89 ID:mIdqOGxG.net]
えっ、ということは、タブをウィンドウ外にドラッグしたら、新しいプロセスを起動して、SetParent。
ウィンドウAからウィンドウBにタブをドラッグしたら、BにSetParentということ?
それだけで行けるのかなぁ。
OLEの方は確かにMFCを使っていればできそうな気もするけれど、
むむむ……



861 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 23:00:25.56 ID:zz1D+M6F.net]
>>847
SetParentにNULLを渡すだけでしょ
それで独立したWindowになる

862 名前:デフォルトの名無しさん mailto:sage [2024/06/27(木) 23:19:11.01 ID:Ks3kYOUo.net]
>>839
AvalonDockと言うWPFでそういうのを実現するライブラリがあるよ
別プロセスは起動してない

863 名前:デフォルトの名無しさん mailto:sage [2024/06/29(土) 15:00:51.88 ID:AKI9JxZ5.net]
WPFはマイクソが適当に用意したWin32APIからだいぶ退化したソリューションなんよ
欠損障害者や痴呆老人を介護していくぐらいの覚悟が必要とマイクソは言っている

864 名前:デフォルトの名無しさん [2024/06/30(日) 11:07:40.79 ID:L3wyoKVN.net]
らくらくホンですねわかります

865 名前:デフォルトの名無しさん mailto:sage [2024/06/30(日) 13:46:38.98 ID:iWdyx4cd.net]
なんで1ウィンドウ1プロセスにこだわるのかね

866 名前:デフォルトの名無しさん mailto:sage [2024/06/30(日) 13:52:21.57 ID:dBsdaOes.net]
さらに、>>841 も書いてるけど、元のタブじゃなくても同じ内容を表示すればいいし。

867 名前:デフォルトの名無しさん mailto:sage [2024/07/02(火) 16:38:11.96 ID:ilJEPICb.net]
>>853
保存してない場合は?
undoはどうするの?

868 名前:デフォルトの名無しさん mailto:sage [2024/07/02(火) 21:04:03.62 ID:oj6vCWdL.net]
>>854
必要ならundoの情報も含んだ編集中のデータを渡すだけだろう
プロセス間通信するとか作業用ファイルを介すとかドラッグ&ドラッグのデータに含めるとかやりようはある
↑は別プロセス前提で書いたけど、同一プロセスの別ウィンドウ同士だったらもっと簡単だね

869 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 00:20:10.87 ID:swtC0eU3.net]
ウィンドウが何処に表示されようが何も変わらない事が分からないやつが居るな…

870 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 13:58:35.19 ID:B8cPwUiK.net]
いや、でも、タブが5個あって、ウィンドウ枠が2つだったとするじゃん。
片方に2つ、もう片方に3つのタブがあるような状況。
起動時のプロセスのウィンドウ枠の中で情報が保持されていて、
反対側のウィンドウ枠の中で表示されていても良いっていうこと?

その場合、ユーザが片方のウィンドウだけバツボタンで終了しようとしたときに、
難しいことになるような気が……



871 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 15:50:06.42 ID:TWMTGehv.net]
ひといないねここ

872 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 18:49:37.33 ID:2Xqs+u0R.net]
gpt4の賢さがすごすぎてなー
お前らの対応してると空しくなるよ
時間がもったいない

873 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 20:18:25.91 ID:fDE4NTPp.net]
>>857
ウィンドウ枚数を数えて最後の一枚だったらPostQuitMessage()するだけだろ

874 名前:デフォルトの名無しさん mailto:sage [2024/07/03(水) 20:25:59.32 ID:pYi5R8u1.net]
>>857
情報も一緒に別プロセスに移動させれば済む話だよ

875 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 07:12:03.53 ID:ak68oAE8.net]
>>857
全然別の問題になってるじゃん
他のウィンドウにタブを移動したら元のタブは消すんでしょ?
それで複数ウィンドウで一つのファイルを表示するのとは別の問題じゃん []
[ここ壊れてます]

877 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 07:21:22.72 ID:PxI4bFfe.net]
UIを持たない枚数を数えるだけのプロセスが居たっていい
がミューテックス辺りで済みそうだ

878 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 22:14:35.16 ID:eTz6OUM0.net]
タブの情報をプロセスから切り離して管理すればよいのでは

879 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 22:43:06.74 ID:ak68oAE8.net]
SetWindowLongでウィンドウに固有のデータを書き込む方法を知らんのかい

880 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 23:26:19.64 ID:vqT9K1Uf.net]
根本的にWindowsプログラミングを理解してないんだな…
Windowsに限った話しじゃないが、Window Systemのプログラミングはメッセージループというのが有って、そこに全ウィンドウ(ボタンなんかのコントロール全部)のイベントが通知される
アプリ側は通知されたイベントの内容(ボタン押されたや再描画など)とウィンドウIDからすべき処理を判別して実行する
プロセスは当然1つで良いし、メッセージループを複数プロセスで行うなんて絶対しない



881 名前:デフォルトの名無しさん mailto:sage [2024/07/04(木) 23:35:12.63 ID:vqT9K1Uf.net]
取りあえずぺゾルドは必読だ
Win32を扱ってるのは第5版迄だがもう新品じゃ手に入らない
MSはタダで読めるようにすべきなんだよな
今でも役に立つのに絶版のまま放置とか、日本法人仕事してくれ!

882 名前:デフォルトの名無しさん mailto:sage [2024/07/05(金) 00:19:08.16 ID:ii7HQe4f.net]
ナンシークラッツ本と並んで殿堂入りするべきだよな

883 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 08:58:31.30 ID:OQuJq/Fg.net]
Win32というかDirextXなんだけどd3d9.dllを用いるゲームなんかを起動するとEvent Traceが開始されるのは自分だけ?
d3d9.dll + 7E710がboolフラグのgetterで、結果が1だと1000秒毎にntdll.RtlPublishWnfStateDataが呼ばれてEtwRTGraphicsPerfMonitorSession.etlが書き込まれる
上記のboolフラグはd3d9.Direct3DCreate9Exのルーチン内で1にセットされることまでは突き止められたけど、なぜ1にセットされるのかの究明は面倒で投げ出してしまった

884 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 09:02:10.97 ID:OQuJq/Fg.net]
フラグを見てトレースするか否かを変えてる訳だから恐らくはレジストリとかでグローバルな設定が可能なんだとは思うけど英語でググっても全く情報がない

885 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 14:22:20.98 ID:pzzWoCSk.net]
manifestじゃね?

886 名前:デフォルトの名無しさん mailto:sage [2024/07/10(水) 16:48:04.42 ID:2GPD5dJ4.net]
ここ
https://learn.microsoft.com/ja-jp/windows/win32/perfctrs/error-handling-in-the-dll

887 名前: 警備員[Lv.2][新芽] [2024/07/12(金) 06:37:17.61 ID:rAnXXRGQ.net]
!donguri

888 名前:デフォルトの名無しさん mailto:sage [2024/07/12(金) 07:55:37.97 ID:R+7FAFYS.net]
どんぐりとか邪魔なだけ

889 名前:デフォルトの名無しさん [2024/07/26(金) 16:31:31.09 ID:s0039+ok.net]
exe化ω

890 名前:デフォルトの名無しさん mailto:sage [2024/08/03(土) 11:32:27.96 ID:8ujXWrcK.net]
マルチディスプレイ環境でディスプレイごとに壁紙設定したいんだけど
SystemParametersInfoだと全部同じ壁紙設定されちゃう
どうしたらいいの?



891 名前:デフォルトの名無しさん mailto:sage [2024/08/03(土) 15:09:24.69 ID:oR+oLHPm.net]
15年前の情報
https://smdn.jp/programming/tips/setdeskwallpaper_multidisplay/

892 名前:876 mailto:sage [2024/08/04(日) 06:02:53.80 ID:SpOe1Ove.net]
あれこれ調べた結果、COMインターフェース使って実現できた
スレ汚し失礼しますた

893 名前:デフォルトの名無しさん mailto:sage [2024/08/05(月) 23:55:54.01 ID:jWZSSuTx.net]
https://learn.microsoft.com/ja-jp/windows/win32/printdocs/printdocs-printing
いまだにGDI Print API使っているんだが移行するもんなんかね
COMめんどい

894 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 08:51:34.33 ID:cEvufDXQ.net]
それはいまだに使ってるんじゃなくて互換性のために残してあるだけやろ
Vista以降の環境で作るならXPSドキュメントAPI検討しろって書いてあるじゃん

895 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 12:29:33.52 ID:/JDWd2CP.net]
XPSって息してるの?

896 名前:デフォルトの名無しさん mailto:sage [2024/08/06(火) 13:32:04.54 ID:geBAoTM5.net]
してない

897 名前:デフォルトの名無しさん mailto:sage [2024/08/07(水) 23:11:59.28 ID:QAQ+ujSz.net]
https://learn.microsoft.com/ja-jp/windows/win32/printdocs/xps-printing
[XPS Print API はサポートされていないため、今後変更または使用できない場合があります。 クライアント アプリケーションでは、代わりに 印刷ドキュメント パッケージ API を使用する必要があります。
だと

898 名前:デフォルトの名無しさん mailto:sage [2024/08/08(木) 08:52:42.58 ID:RW+0CWti.net]
印刷ドキュメントパッケージってストアアプリじゃなかったっけ

899 名前:デフォルトの名無しさん mailto:sage [2024/08/26(月) 20:43:00.02 ID:Cfp+G9iJ.net]
MFCやCOM/ATLの話題もここでいいの?
スレないよな

900 名前:デフォルトの名無しさん mailto:sage [2024/08/26(月) 22:39:11.42 ID:a3TTNcMK.net]
まあ大雑把にアンマネージドな話題ならいいんじゃね
MFCの話なんてここでされても俺はスルーするがな



901 名前:デフォルトの名無しさん mailto:sage [2024/08/27(火) 08:48:29.94 ID:Dr3hMOC8.net]
MFCまだ息してるの?

902 名前: 警備員[Lv.26] mailto:sage [2024/11/15(金) 07:34:23.07 ID:az6uMl7w.net]
!donguri

903 名前: 警備員[Lv.9] mailto:sage [2024/11/16(土) 12:36:24.91 ID:tOcVq+tO.net]
!donguri

904 名前:デフォルトの名無しさん [2024/11/18(月) 20:33:45.58 ID:a56Gv0Ed.net BE:629052145-2BP(1000)]
https://img.5ch.net/ico/nida.gif
だから、最近EchoAPIを使い始めて、デバッグプロセスが本当に効率化されました。

905 名前:デフォルトの名無しさん mailto:sage [2024/11/19(火) 14:54:25.41 ID:9IiXc5Vb.net]
まるちんこしね

906 名前:デフォルトの名無しさん mailto:sage [2024/11/20(水) 11:20:37.14 ID:W8mVvsIh.net]
新規にMFC使って何かを作ろうとするのは、アマチュアならありだが仕事ではもうないかな
.NETが普及する前、それこそVB6時台は必須だったけど

907 名前:デフォルトの名無しさん mailto:sage [2024/11/21(木) 08:42:13.45 ID:Yfd1e91z.net]
別に必須ではない

908 名前: mailto:sage [2024/11/28(木) 13:09:31.82 ID:xnLU0jkg.net]
!donguri

909 名前:デフォルトの名無しさん [2024/12/03(火) 22:33:20.25 ID:8WYJf9/5.net BE:629052145-2BP(1000)]
https://img.5ch.net/ico/nida.gif
EchoAPIをAPIシミュレーションに使用し始めたところ、フルバックエンド統合前にアプリの機能をテストするのに非常に役立ってる

910 名前: mailto:sage [2024/12/04(水) 07:26:11.55 ID:gY6x2I0M.net]
!donguri



911 名前:デフォルトの名無しさん mailto:sage [2024/12/06(金) 14:09:41.63 ID:L9wmMkNC.net]
IsWindowVisibleは親ウィンドウの状態も再帰的にチェックしてくれるのに、
IsWindowEnabledは自身の状態しかチェックしてくれないようです

対象のウィンドウがマウス操作などを行える状態かをチェックしたいですが、
IsWindowEnabledで親ウィンドウの状態も参照するバージョンはあるのでしょうか?

912 名前:デフォルトの名無しさん mailto:sage [2024/12/06(金) 14:43:02.52 ID:L9wmMkNC.net]
すいません上に全く同じ質問がありました
失礼しました

913 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:09:35.75 ID:atnAaKGF.net]
ステータスバーを分割した場合
WM_SIZEの中でサイズを送信すると思うんだけど

|中身に合わせる|中身に合わせる|伸びーる|中身に合わせる|中身に合わせる|

みたいな場合はどうやって計算するの?

914 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:27:50.07 ID:j5Bpxje0.net]
中身に合わせるのとこは自分で中身に合わせて
野ビールのとこは放置やね
計算とか無い

915 名前:デフォルトの名無しさん mailto:sage [2024/12/12(木) 22:44:16.57 ID:trovn3Vo.net]
ステータスバーのハンドル使ってDCとフォントを取り寄せる
んでDrawTextを空撃ちすると文字列に必要な幅が分かる。

916 名前:デフォルトの名無しさん [2024/12/21(土) 23:35:34.44 ID:37tGDg2N.net]
IsWindowVisible
IsWindowEnabled
EnableWindow
のダイアログ版教えて下さい

917 名前:デフォルトの名無しさん mailto:sage [2024/12/21(土) 23:44:47.64 ID:VA9QPMmD.net]
ダイアログも只のWindowっす

918 名前:デフォルトの名無しさん [2024/12/22(日) 09:10:18.93 ID:SmvDArN5.net]
>>903
できました!ありがとう

919 名前: mailto:sage [2025/01/03(金) 15:25:05.64 ID:R7434evi.net]
!donguri

920 名前:デフォルトの名無しさん [2025/01/22(水) 00:25:29.57 ID:CKKn8gV4.net]
iniのキーの一括読み込みで悩んでいます。
冗長にならないよう読み込みたいのですが、下記のコードをfor文で回すというのが自分の知識の限界でしたが、大変わかりにくく困っています。改善点やスタンダードなiniの読み書きの参考になるサイトなどあれば教えていただけると助かります
strLen[n] = GetPrivateProfileString(
pStrIndex[n] ,//ダブルポインタ
NULL ,
NULL ,
buf[n] ,//ダブルポインタ
256 ,
strPath
);



921 名前:デフォルトの名無しさん mailto:sage [2025/01/22(水) 05:00:50.81 ID:xghKhcgN.net]
GetPrivateProfileSection関数

922 名前:デフォルトの名無しさん [2025/01/22(水) 19:54:34.30 ID:CKKn8gV4.net]
>>907
ありがとうございます。ですがこの方法ですとセクションごとに別れていないため、私が提示した方法より値を扱いにくいのではないでしょうか?
それとも、セクションを除いて必要なキーが何個目にあるかを把握して扱うということなのでしょうか?
後者の場合ですと、わざわざセクションが存在する理由がわかりかねるのですが、直接iniを開いた場合の可読性故に存在しているということでしょうか?
少々実際のコードに落とし込むということがイメージしにくく、躓いてしまっています

また、実際に値を取り出す場合はn番目の=から¥nまでの文字列を取り出し、数値に変換するといった具合になるのでしょうか?

923 名前:デフォルトの名無しさん mailto:sage [2025/01/22(水) 19:56:56.10 ID:6faY8jOE.net]
気に入らないなら自作しなよ
そういうの得意だったよね

924 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 06:58:43.12 ID:juwbDZ3u.net]
>>908
セクションごとに別れていない?
GetPrivateProfileSectionのドキュメントちゃんと読んだ?
やってみた?

925 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 09:06:22.24 ID:kfksRUHC.net]
最後の1文見る限り、GetPrivateProfileSectionのドキュメントすら読んで無いか、読んでてもちゃんと読んで無いのがバレバレ

926 名前:デフォルトの名無しさん [2025/01/23(木) 10:24:59.82 ID:MfXmmgFN.net]
YAMLにしなよ

927 名前:デフォルトの名無しさん [2025/01/23(木) 19:37:54.91 ID:i3pjk0RU.net]
>>910
>>911
今あらためて見たら見当違いのことを言っていますね、失礼しました。
この関数ですとキーの値まで取得できるので活用できる範囲が広そうです。

更に質問なのですが、キーの値を実際に使う際変数に格納する工程は通常こういう書き方をするなどど言ったセオリーは無いのでしょうか?
教えていただいた関数を使用した場合でも値部分を抜き出し配列に格納し、num = p[n]とそれぞれ格納し直していかねばならず、複数の変数を使用している場合はある程度コードが長くなるのは避けられないのでしょうか?

928 名前:デフォルトの名無しさん mailto:sage [2025/01/23(木) 20:01:09.20 ID:juwbDZ3u.net]
セオリーみたいなんは知らないけど
各Key&Valueペアはヌル文字で区切られてて
文字列はヌルターミネートだってことを利用して
ポインタを動かしながら一覧化して使ってたかな、自分は

最近はini使ってないから昔の記憶だけど

929 名前:デフォルトの名無しさん [2025/01/24(金) 16:07:25.70 ID:n7IYWFd+.net]
>>914
一覧化という単語でggってみたところ特にそれっぽいものはヒットしませんでした。
どういったことなのでしょうか?

930 名前:デフォルトの名無しさん [2025/01/24(金) 16:21:28.46 ID:9uGEaje4.net]
>>906
iniを使ってる既存のアプリがあってそれを踏襲
しなければならないのなら仕方がないけど、
そうでないなら、いまさらiniなんて使わないほうが良いよ



931 名前:デフォルトの名無しさん [2025/01/24(金) 22:51:18.70 ID:pX5+qcQ2.net]
忌み数字を踏ませる業者、アプリ、コンピュータプログラムの嫌がらせ

動画再生回数、表示回数、登録者数、フォロワー数、評価数、コメント数、レベル、経験値、ポイント、HP、通貨、価格、メッセージ数、通知数、フレンド数

4(死)、13(キリスト教における忌み数字)

18(嫌)、24(〜に死)、34(〜さん死)

40、42、44

56(殺)、64(無視)

71(無い)、74(無し)、79(無く、亡く)

84(〜は死)、94(〜君死)、96(黒)

このような数字と名前や生年月日、IDなどを組み合わせて執拗に強調することで、精神攻撃をする業者やストーカー、嫌がらせ組織がキモい。

932 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 00:25:03.57 ID:0Ai0sZJQ.net]
ini
XML
JSON
YAML
TOML

933 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 06:51:49.08 ID:j/rBX//M.net]
dat

934 名前:デフォルトの名無しさん [2025/01/25(土) 14:22:52.24 ID:sFzIAkAR.net]
>>916
そういうわけではありませんが、全くの初心者ですので、情報の多い古い技術を頼ることにしました

935 名前:デフォルトの名無しさん [2025/01/25(土) 16:04:18.33 ID:9QNSyzV2.net]
ini ゴミ
XML 冗長
JSON ゴミ
YAML がんがれ
TOML RustのcratesとかPythonのPoetryでしか観ないな

936 名前:デフォルトの名無しさん [2025/01/25(土) 20:28:14.71 ID:sFzIAkAR.net]
>>921
それぞれに対する評価を書き込むのも乙ですが
ここにコードの書き方で迷っている子羊がいるので、実際の書き方の一例でも見せてみるというのも一興ではありませんか?

937 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:29:48.91 ID:0Ai0sZJQ.net]
iniを読む時は、
・セクション名は指定する
・キーを指定して対応する変数に代入する
・複数要素指定したい場合には、
 - キーの末尾に1,2,3,... とつけて見つからなくなるまで読む
 - 別のキーで個数を指定する
 - キーを一つにして値をカンマ区切りやスペース
とかで、iniファイルのキーの一覧を動的に取得するとかをなるべくしないほうが楽。

938 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:33:29.11 ID:0Ai0sZJQ.net]
読みたいキーが50個あるなら、
GetPrivateProfileString() か GetPrivateProfileInt() を
50回書けばいい。
ループとか考えずにベタで書いたほうがバグらない。
変数名書き換え忘れとかはよくあるけど。
1,2,3,...とかやるところはループで。

939 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:54:22.37 ID:HZDjTK1Q.net]
APIのGet何某は1セクション1キーの読み書きの度にファイルオープンからやるから糞遅いよ
vbscriptからiniを読み書きしたい時があってその時は大した手間でもないし全部自作したよ
セクションを駆使すれば構造化できるしコメントも書けるから下手な外部データ構造よりも扱いやすいかもとその時は思った

940 名前:デフォルトの名無しさん [2025/01/25(土) 21:59:34.66 ID:/zAJo091.net]
>>921
レジストリ―を忘れないであげてください・・・



941 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 21:59:35.88 ID:0Ai0sZJQ.net]
クソ遅いの同意。
あと、
・=の左右のスペースを自動除去するとか、
・端に半角スペースを使いたい場合には""で囲うんだっけ? "を使いたい場合にはどうするんだ?
・値の32,768文字(バイト?)制限?
とか、いろいろ隠れ仕様があるのが地味にトラップ。

942 名前:デフォルトの名無しさん mailto:sage [2025/01/25(土) 22:25:18.21 ID:HZDjTK1Q.net]
>>927
それらの疑問はAPIで読み書きしてみれば解消すると思うのだが

943 名前:デフォルトの名無しさん [2025/01/26(日) 00:20:41.08 ID:u6Mx5l7z.net]
>>923
ありがとうございます。
末尾に数字をつけるとそのような読み方が可能なんですね、初耳です
というわけではなくあらかじめ振っておくということですか?
>>925
差し支えなければ考え方のヒントだけでも良いのでご教示いただけるとたすかるなーなんて
iniとは暫く付き合っていかないといけませんし

944 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 07:56:28.08 ID:KCyxjQfb.net]
ini使いたい君はWin32APIがどうたら以前の問題だからもっと勉強してから頑張れ

945 名前:デフォルトの名無しさん [2025/01/26(日) 10:18:25.36 ID:9SEpmwDH.net]
C#で組むと簡単にかける

946 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 12:24:55.25 ID:jIhwYj9H.net]
現代に生きてるならまず生成AIの使い方を覚えろw

947 名前:デフォルトの名無しさん mailto:sage [2025/01/26(日) 12:36:00.27 ID:ZUklcVwb.net]
STLにその手の機能あったかと

948 名前:デフォルトの名無しさん [2025/01/26(日) 21:20:37.91 ID:s+0AyHDZ.net]
msgpackがいい

949 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 07:55:55.21 ID:QS068twT.net]
Win32のiniは中身どうなってるかわからんからあんま使いたくない
データ取り出すために毎回iniのpath指定からするってことは毎回CreateFileでもしてるのか?と疑ってしまうしな
まあキャッシュされてる説が濃厚っぽいけど、であれば解放はいつされる?という疑問も浮かんで来てしまう

950 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 09:05:49.08 ID:DmWvGvqx.net]
毎回読んでるに決まってるだろ



951 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 17:56:26.05 ID:SG35pUtO.net]
win16時代からなんかモヤモヤする気持ち悪い部分だねw

952 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 19:54:33.33 ID:5vkjgM/o.net]
メモリなんてほとんど無かった時代からあるものだから、キャッシュなんてしてるわけないしな

953 名前:デフォルトの名無しさん mailto:sage [2025/01/30(木) 20:05:36.27 ID:s1Kp+8+0.net]
VistaくらいからならOSのファイルキャッシュが勝手に働いてそう。

954 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 01:11:17.59 ID:X03NMzGm.net]
キャッシュなんかMS-DOSのsmartdriveあたりからあるだろ
無効にするとWindows3.1は遅かった記憶がある

955 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 10:55:21.33 ID:T94pdG8Q.net]
>>935
構文解析なんて一瞬で終わる
キャッシュはOSがリファレンスカウントで管理してるでしょ
ただしゼロになったからといって直ぐに解放する訳じゃないし、ゼロになる前に解放される場合もある
そこは空きメモリとの兼ね合いでOSが上手くやる

956 名前:デフォルトの名無しさん mailto:sage [2025/01/31(金) 12:27:33.25 ID:x+X7dknH.net]
補足すると再起動後やスリープ復帰後に$MFTを舐める様なアプリを動かしておくとシステムキャッシュに載って
その後はHDDでもSSDと同様にディレクトリトラバーサルがマルチスレッドで高速化する(find/fd等)
(よくある専用ソフトを常駐させなくてよい)

957 名前:デフォルトの名無しさん mailto:sage [2025/02/13(木) 21:31:19.77 ID:YNJwxBZ/.net]
メインウィンドウのウィンドウプロシージャをグローバルからクラスメンバに移したくて
一応表面的なエラーなどは出ずに起動したのですが問題ないのか不安です
断片的で分かりにくいかもですが以下で問題ないか教えていただけないでしょうか

wc.lpfnWndProc = DefWindowProc;

SetWindowSubclass( hwnd, SubProc, 1, reinterpret_cast< DWORD_PTR >( this ) );

static LRESULT CALLBACK SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );

LRESULT CALLBACK MyWindow::SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData )
{
MyWindow *pThis = reinterpret_cast< MyWindow * >( dwRefData );
switch( uMsg )
{
   ...
}
return DefSubclassProc( hwnd, uMsg, wParam, lParam );
}

958 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 05:52:04.48 ID:NtB8MvkN.net]
あかんやろな

959 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 08:53:53.37 ID:JVeRBzRc.net]
20年以上前にMFCみたいなラッピングクラス群を自前で作ってみたことあったけど
ウィンドウプロシージャのとこをどうやったかもう忘れてしまったな……

960 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 13:37:08.02 ID:7nMc146l.net]
メソッドという事は、第一引数にthisが渡る必要がある。
コールバックプロシジャーの呼び出し側にその機能(thisを積む)は無い。

MFCはその部分マクロで展開していたね



961 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 14:04:52.13 ID:hgqMYig2.net]
Best method for storing this pointer for use in WndProcにMethod 1~6まで解説されてるわ

>>946
ATLだとMethod 5: Thunkだね

962 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 19:58:04.34 ID:SfDwe3dq.net]
俺がやったやり方書いてやろうとしたらNGワード言われてBBxまでされたわw
クソじゃんw

963 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 21:57:56.25 ID:NGvcdz15.net]
method 4のやり方だし行けるんじゃない?
自分はmethod 6のイマイチ泥臭い方法でやったよ

964 名前:デフォルトの名無しさん mailto:sage [2025/02/14(金) 22:08:59.93 ID:JVeRBzRc.net]
一次受け用のstaticなプロシージャとクラスのメソッド
あとSetPropとSetWindowLong使ってやったな確か

965 名前:デフォルトの名無しさん mailto:sage [2025/02/27(木) 22:08:23.91 ID:fu+5GN+l.net]
SetWindowSubclass

966 名前:デフォルトの名無しさん mailto:sage [2025/02/28(金) 06:34:40.22 ID:zvJYGrzx.net]
今更w

967 名前:デフォルトの名無しさん mailto:sage [2025/02/28(金) 08:53:25.56 ID:9mi1Ij4k.net]
俺がその手のことやった時はSetWindowSubclass無かったな

968 名前:デフォルトの名無しさん [2025/02/28(金) 17:04:57.17 ID:kF3VgEHE.net]
次スレよろ

969 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 10:30:55.31 ID:Zmr6bMX1.net]
Win32はいつ廃止されるの?

970 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 15:36:03.05 ID:oVaTb1OS.net]
.netベースのWinFXが完成したら順次廃止していくらしい



971 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 15:50:19.15 ID:9pYVhAvI.net]
.NETベースだと2年で切り捨てられていくのか……
大変だなぁ

972 名前:デフォルトの名無しさん mailto:sage [2025/03/04(火) 17:51:40.09 ID:KMsa0y1P.net]
Windows上の.NETがそもそもAPI呼んでるのにどうやって廃止するのw

973 名前:デフォルトの名無しさん [2025/03/04(火) 18:04:09.20 ID:FptLM07E.net]
Win32APIを呼ばない.netになるんじゃね?
android版とかそうなってないの?

974 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 06:08:30.10 ID:Za60iql9.net]
WinFXて、.NET Framework 3.0の開発コードだが……

975 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 08:44:01.42 ID:Ip/00ysh.net]
そもそもWin32APIを捨てるとか、Windowsをイチから作り直さないと不可能だろ

976 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 12:33:13.43 ID:Nfyn65kt.net]
着々と64bit化は進められてるぞ
今やレガシーアプリの為だけに32bit対応があるだけだからなぁ

977 名前:デフォルトの名無しさん [2025/03/05(水) 12:35:52.90 ID:KHVGsvS8.net]
昔あったPowerPC、ItaniumのWindowsにもWin32apiあるの?

978 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 15:45:08.28 ID:Ip/00ysh.net]
>>962
>>963
内部的なbitサイズの違いや呼称の差であって、Windows APIのインターフェースが変わってるわけじゃないぞ

979 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 23:09:43.33 ID:mISoeUSf.net]
>>963
なくてどうする

980 名前:デフォルトの名無しさん mailto:sage [2025/03/05(水) 23:21:28.24 ID:jH+Yt1tq.net]
https://github.com/microsoft/win32metadata
このwin32metadataプロジェクトでモダンな言語からも簡単に使えるようになった
あらゆる機能をWin32で公開してwin32metadataも更新すれば、色んな言語から直ぐ使えるようになる
なのでWin32を廃止する意味が無くなった



981 名前:デフォルトの名無しさん [2025/03/06(木) 16:00:16.05 ID:WqcKZUUD.net]
64bitのCのintとかlongって32bitなん?
64bitあるのはlonglongとsize_tだけ?

982 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 16:04:15.79 ID:lKPjZULZ.net]
どのCだよ……

983 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:03:06.28 ID:dn1jj/ZV.net]
>>967
一般的には 32bit 環境からの互換性のためにそうなってる
ただ言語仕様として それが規定されているわけではない
明示的に 64bit 整数を使いたいなら int64_t とかを使う

984 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:11:47.39 ID:5M2pGTOx.net]
LSI-C試食版

985 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 21:23:51.69 ID:dn1jj/ZV.net]
>>967
補足。ちなみに 64bit 環境で size_t や sizeof が 64bit unsigned になったのは
アドレス空間の伸長により 32bit 長を超える配列や構造体が (実用性はともかく) 定義出来るようになったから

986 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 22:54:13.31 ID:W7TbcEiC.net]
SHARCだとcharも32bit w

987 名前:デフォルトの名無しさん mailto:sage [2025/03/06(木) 23:24:05.48 ID:qGQPttTG.net]
>>967
LLP64
long longとポインターが64bit
Windowsはこっち

LP64
longとlong longとポインターが64bit
Unix系はこっち

988 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 03:26:30.77 ID:wZ5tdiFM.net]
規格ではサイズの保証なんか全く無いからstdint.h使えって書こうとしたけどそういやWin32スレだった

989 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 08:52:50.74 ID:0UyMFctv.net]
なんでlongとintが同じなんだよって昔から思ってるけど、まぁ今更

990 名前:デフォルトの名無しさん [2025/03/07(金) 12:13:30.16 ID:P73h4RuN.net]
int64_tはあるのにint32_tが無いのは何故



991 名前:デフォルトの名無しさん mailto:sage [2025/03/07(金) 12:50:01.21 ID:23ArObOh.net]
stdint.h(20):
typedef int int32_t;

992 名前: mailto:sage [2025/03/07(金) 20:55:06.07 ID:fV6KGyZ9.net]
前後にいろいろあるでしょ
ILP64ってのもあるし

993 名前:デフォルトの名無しさん mailto:sage [2025/03/08(土) 20:22:43.73 ID:5qDoPn2l.net]
ファイルからそのファイルのハンドル握ってるプロセスを特定する事って可能?
プロセスが握ってるハンドルを列挙していく事はntdll利用したら可能だからその方法で結果的に上記の目的は達成できるっちゃできるんだけど、逆方向から出来たほうが工程は減りそうだから可能なら教えてもらいたい

994 名前:デフォルトの名無しさん [2025/03/08(土) 21:37:29.02 ID:YZ/xAsrC.net]
performance meter

995 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:20:50.10 ID:P3gXMYWX.net]
>>979
自己レスだけど全排他ロックされたファイルもCreateFile(path, 0, 0, NULL, OPEN_EXISTING, FILE_READ_ATTRIBUTES, NULL);で開けるんだね
ハンドルさえ得られればNtQueryInformationFileのFILE_INFORMATION_CLASSで簡単にハンドル握ってるプロセス列挙出来た

996 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:22:14.84 ID:P3gXMYWX.net]
FILE_INFORMATION_CLASSじゃなくてFILE_INFORMATION_CLASS::FileProcessIdsUsingFileInformationで列挙できた

997 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:30:58.42 ID:s/+fNWEq.net]
>>981
CWDがBのプロセスpが居てAフォルダをリネームや移動する場合はAのハンドルでpが分かるの?
/A/B/

998 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:32:30.39 ID:s/+fNWEq.net]
CWDでなくて
PWDね

999 名前:デフォルトの名無しさん mailto:sage [2025/03/12(水) 22:36:31.70 ID:s/+fNWEq.net]
Process Explorerで見る限りは、プロセスpのハンドル一覧にはAのハンドルは見えないけど...

1000 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 07:40:49.73 ID:Wbt/WM1E.net]
>>985
リネームや移動はハンドル握ってるタイミングが一瞬だから見えないだけでは?
作業フォルダってだけだとハンドルを握ってる訳ではないだろうし



1001 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 12:00:07.35 ID:q1HKk6WD.net]
>>986
> 作業フォルダってだけだとハンドルを握ってる訳ではないだろうし
win32 API使ったプログラム書けるのだったら確認したら良いのに...

1002 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 12:50:16.04 ID:fUgksTzw.net]
>>983に言えよ

1003 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:15:20.89 ID:1bKyRJrk.net]
>>988
急にどうした?雰囲気悪くするだけだぞ

1004 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:19:04.13 ID:1bKyRJrk.net]
そもそも979が質問はするけど人からの質問には答えないタイプに見えるからそこからだな、雰囲気改善は

1005 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:23:53.41 ID:1bKyRJrk.net]
言った手前、横から答えて置くかな

>>979 FileTest.exeがよく使われている
>>983 その場合pはリストアップされない
>>986 作業フォルダはhandleとして握っている
>>988 一連の流れの誰ですか?

1006 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 13:40:50.24 ID:Wbt/WM1E.net]
>>990
別にちゃんと答えてるけど?
で、確認してみたらProcessHackerではカレントディレクトリのハンドルは普通に見えるね
てか手順教えてるんだからツールに頼らずにそれこそ確認したい側が>>981をやってみたらいいと思うけど

1007 名前:990 mailto:sage [2025/03/13(木) 14:39:30.31 ID:WtHN9N5n.net]
ごめん、986の感じから981~983の流れが全く通ってないから981とは別人に見えた

確認したい側が手を動かすのは原則だけど、既に下準備が整っているのだからちょっとした便乗質問には答えてあげるのが助け合いの精神だな
もっとも986時点では作業フォルダを握っている前提で983を見てなかったからやむなしか

>>988は誰よ?

1008 名前:990 mailto:sage [2025/03/13(木) 14:41:07.70 ID:WtHN9N5n.net]
>>983
フォルダを開く時はFILE_FLAG_BACKUP_SEMANTICSな

1009 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 15:58:51.91 ID:fUgksTzw.net]
誰でもねぇよただのスレ見てるだけの人間だ
誰かじゃねぇと発言すらできねぇのかよ
つーかお前こそ誰だよw

1010 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 16:02:25.92 ID:fUgksTzw.net]
ついでに次スレ建てといた

Win32API質問箱 Build128
https://mevius.5ch.net/test/read.cgi/tech/1741849188/



1011 名前:990 mailto:sage [2025/03/13(木) 16:08:57.63 ID:BLU3LOZR.net]
>> ID:fUgksTzw
スレ立て乙
ただの荒らしだと思ったが見直したぞ
仲良く行こう

1012 名前:デフォルトの名無しさん [2025/03/13(木) 18:44:47.29 ID:+BJ849hc.net]
>>993
お前は誰なんだ

1013 名前:デフォルトの名無しさん [2025/03/13(木) 19:05:51.90 ID:kIpNzUxV.net]
だーれだ?

1014 名前:デフォルトの名無しさん mailto:sage [2025/03/13(木) 19:18:50.54 ID:biPGw+Hh.net]
キチガイ

1015 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1189日 21時間 45分 55秒

1016 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<266KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef