Visual Studio 2022 Part3

レス数が1000を超えています。これ以上書き込みはできません。
2023/07/09(日) 09:22:39.10ID:RX9cYl8RM
!extend:checked:vvvvv:1000:512
前スレ

Visual Studio 2022 Part2
https://mevius.5ch.net/test/read.cgi/tech/1657709270/

Visual Studio 2022 の新機能
https://docs.microsoft.com/ja-jp/visualstudio/ide/whats-new-visual-studio-2022?view=vs-2022

The Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/

リリースノート
https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes#
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/11/27(木) 13:46:38.57ID:I+Uuo5vt0
アイちゃんあてにならないな
> AI による概要
GetOpenFileName関数は廃止されていませんが、Windows Vista以降、新しいアプリケーションでは
**Common Item Dialog API の使用が推奨されています**。
WIN32_LEAN_AND_MEAN マクロは、コンパイル時間を短縮し、依存関係を減らすために、
windows.h に含まれる一部のヘッダーファイルやAPI定義を省略するためのものですが、
GetOpenFileName が定義されている commdlg.h は通常含まれるため、
このマクロによって機能が利用できなくなることはありません。
957デフォルトの名無しさん (ワッチョイ 47e6-j3nM)
垢版 |
2025/11/27(木) 14:14:22.36ID:yTPYpgBk0
Common Item Dialog APIとはなんぞや、調べてみます。ありがと
それと今まで3時間くらいぐだぐだやって発見したバグ??がありました
ウインドウの上に表示されるタイトルですが、SetWindowTextでいくらやっても最初の1文字だけしか表示されないのです
でわかったことは、Projectの一番下のPropertiesの中でCharacterSetをUnicodeからMultibyteにしたらそうなりました
Unicodeのままだと問題ありません。Multibyteにすると、1文字だけしか表示されません
これって報告されていると思うのですが改善策ってありますか
ググってSetWindowTextはSetWindowTextAとSetWindowTextWを切り替えてくれるってのは見つけたのですが、機能してないのかな
2025/11/27(木) 22:31:10.16ID:25Wz9US+0
文字列を_T()で囲え
959デフォルトの名無しさん (アウアウウー Sa0b-WraW)
垢版 |
2025/11/28(金) 04:21:36.33ID:YehK5uv+a
最初の1文字ωωω
L"hoge"と"hoge"の違いね
SetWindowTextWとSetWindowTextAのどっちが使われてるのか意識するべきだね
自分でMultibyteに切り替えてSetWindowTextA使ってるのにL"hoge"を渡した状態になってるんだろう
#define _UNICODE を自分で描いてても環境変わるしな
960デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 09:14:28.88ID:AdDA4gRo0
_T()でくくるのは試してみましたが、ダメでした
SetWindowTextA(hWnd, "ABCDE");としてもダメです
Propertiesの中でCharacterSetをMultibyteにしたので、
SetWindowTextW(hWnd, _T("ABCDE"));はエラーを出します
SetWindowTextA(hWnd, _T("ABCDE"));もエラーを出します
そもそも書いたようにSetWindowTextは自動で、SetWindowTextAにしてくれています
961デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 09:16:31.45ID:AdDA4gRo0
間違えた
SetWindowTextA(hWnd, _T("ABCDE"));もエラーを出します
はエラーではなく、やはり1文字だけしか出しません
2025/11/28(金) 09:19:00.36ID:SsJh5WIk0
そら途中が00になってるから\0判定になって文字終わるわ
2025/11/28(金) 09:20:00.89ID:M7Ad/nI+0
なぜC++関係のスレでやらずにIDEスレでやるんだろう?
2025/11/28(金) 10:26:36.94ID:uGW95kQpa
プロジェクトをマルチバイトにしてるけど、どこかにW系の変数/関数が残ってるんだろうなぁ

テンプレートの「Windowsデスクトップアプリケーション C++」でプロパティだけマルチバイトに変えてもビルドは成功するけどそうなる
(ソースに~Wってのが結構残ってる)
2025/11/28(金) 10:27:10.95ID:3LGCDcxB0
まぁいい加減C++スレかWin32APIスレ行け
966デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 10:44:35.01ID:AdDA4gRo0
以前はVC+6.0でやっていて問題なかったが最近VS2022に変えた。でいろいろ問題も出てきたし新たなtipsもあるからここに来たのです
なのでC++やWin32の問題というよりVS2022の問題
2025/11/28(金) 11:18:38.82ID:edlbl/Jid
環境は2022固定と言うことで
再現する必要最小限のソースを曝そう
出来ればビルドコンパイルリンク関連情報も
968デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 12:09:55.78ID:AdDA4gRo0
>>963
DEBUGモードで問題なくコンパイル出来ていたプロジェクトをRELEASEモードでコンパイルしたらエラーが山ほどでてきた
例えば、SetDlgItemTextはSetDlgItemTextAではなくSetDlgItemTextWになってるよ
なんだかなあ
よくこんなのでみな使っていたね
VC++6.0では全く問題なく動いていたのにねえ
969デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 12:10:53.67ID:AdDA4gRo0
間違えた >>964
2025/11/28(金) 12:13:28.92ID:x4NiH7NXM
MSのやる気がないしなるべくMultibyteは使わない方が良い
Multubyte限定のライブラリのバグを何年も放置した前科有り
2025/11/28(金) 12:15:32.27ID:x4NiH7NXM
>>968
それは設定が悪いだけな気がする
972デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 12:20:54.49ID:AdDA4gRo0
>>971
DEBUGモードで問題なくコンパイル出来ていたものをRELEASEモードに変えたとき、どこかほかの設定も変える必要があるの?
VC++60ではそんなのなかったが
973デフォルトの名無しさん (ワッチョイ a75b-dXd3)
垢版 |
2025/11/28(金) 12:21:22.81ID:5vy0hP2H0
>>968
プロジェクトのプロパティでビルド環境をdebugとreleaseでチェックだよ
974デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 12:27:48.91ID:AdDA4gRo0
>>973
わかった。RELEASEモードではUNICODEのままになってたよ。DEBUGモードとRELEASEモードとそれぞれ別々に設定しないといけないんだねえ
ありがと
975デフォルトの名無しさん (ワッチョイ a75b-dXd3)
垢版 |
2025/11/28(金) 12:34:27.76ID:5vy0hP2H0
>>974
そんなところで躓いてるとまだまだ先は色々あるよ
まぁがんばれ
976デフォルトの名無しさん (ワッチョイ 7fdc-Gjxk)
垢版 |
2025/11/28(金) 13:25:45.99ID:I/1lWP7z0
まあ頑張るのはじゃんじゃん頑張ってくれていいんだけどこのスレでやらないでよ
AI相手にコーティング教えてもらえば?
977デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 13:45:10.81ID:AdDA4gRo0
SetWindowTextの問題はすぐに答えが出てくると思ったんだけどなあ
Multibyteでは1文字だけしか出てこないよ。わたしの質問はそもそもこれだけなんだけどね
2025/11/28(金) 14:26:12.41ID:g9K8s8X60
>>972
DEBUGとRELEASEで別々に設定があるとか昔からじゃがw

まぁ6.0はデフォがANSIだから意図的に変えようとしないとならんか
2025/11/28(金) 16:11:13.77ID:SsJh5WIk0
>>977
>>962が答えだから
2025/11/28(金) 16:14:12.20ID:PtF1oC/q0
>>977
ANSI関数にUnicode文字列渡したら1文字で切れるのは理解できるよね?
出来ないの?
981デフォルトの名無しさん (ワッチョイ 674f-f/ND)
垢版 |
2025/11/28(金) 16:23:46.74ID:lEyqtJjt0
プログラマに向いていないよ
転職しなさい
2025/11/28(金) 17:14:37.88ID:g9K8s8X60
>>968の最後の1行見ても自分が何も理解できてないだけなのに
まるで他人が無能のようにふるまうこの不思議ちゃんw
2025/11/28(金) 17:28:25.34ID:saUpZhFZ0
2026でC++のWindowsデスクトップウィザードで既定のテンプレートプロジェクト生成してやってみたが
プロジェクトのプロパティ含めて修正すべきとこ修正したら普通にABCDEになるよ

VSの問題だとかアレな事言ってるけど
結局自分がWin32APIの種類やコードマクロの中身を理解してないだけでしょ
2025/11/28(金) 17:32:13.60ID:saUpZhFZ0
本当に6.0でプログラムしてたのか?
テンプレートから生成されるコードを眺めれば、どこをどうすれば切り替え対応できるか
Win32API触ってれば当たり前の基礎知識部分しか関わってないんだけどなこれ
985デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 18:01:22.16ID:AdDA4gRo0
じゃあ、改めて教えてください
VS2022でMultibyteでSetWindowTextで正しくウインドウのタイトルを表示させるにはどうすればいいですか?
VC++6.0では
SetWindowText( hWnd, "ABCDE" );
で問題なく表示できました。
2025/11/28(金) 18:15:41.11ID:saUpZhFZ0
2022でも2026でも同じ事だが、>>983で言ってるように
プロジェクトのプロパティの文字セットをUnicodeからマルチバイトに変更したうえで
コード内の関連個所すべて適切に修正しろ
そしたらSetWindowText(hWnd, "ABCDE")で動く
2025/11/28(金) 18:47:27.73ID:g9K8s8X60
VC++6.0では動いたww
相変わらず何も理解できてないなw
VC++6.0でも同じ状態のコード作れば同じ結果になるわ
2025/11/28(金) 19:10:40.47ID:SsJh5WIk0
>>985
新規作成したプロジェクトで
SetWindowText( hWnd, "ABCDE" );
これはどうなんの?
989デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 19:26:12.17ID:AdDA4gRo0
>>988
新規作成したプロジェクトでデフォルトはUNICODEですが、プロジェクトのプロパティのCharacterSetをMultibyteに変えて、それだけで実行すると、
SetWindowText( hWnd, "ABCDE" );
では、ウインドウのタイトルにAだけしか表示されませんよ
2025/11/28(金) 19:32:08.28ID:saUpZhFZ0
アホな噛みつきしてないで>>986の通りやれ
もし>>986が理解できない、もしくはできたけどそれでなんで動くようになるのか分からないなら
VSがどうたらカバチ垂れてないで勉強しなおせ
2025/11/28(金) 19:42:59.02ID:SsJh5WIk0
>>989
その時
SetWindowTextAか
SetWindowTextWか
どっちが呼ばれてんの?
992デフォルトの名無しさん (ワッチョイ 47b3-j3nM)
垢版 |
2025/11/28(金) 20:16:24.12ID:AdDA4gRo0
>>991
SetWindowTextA です
993デフォルトの名無しさん (ワッチョイ a758-dXd3)
垢版 |
2025/11/28(金) 23:11:41.13ID:1eY1wF5H0
''ABCDE"を"あいうえお" にしてみ
2025/11/28(金) 23:37:20.76ID:rhdfC6VF0
テンプレートでプロジェクト作ったんだったらRegisterClassExWをRegisterClassExAにしないとダメなんじゃね?
https://learn.microsoft.com/ja-jp/windows/win32/winmsg/about-window-classes
2025/11/28(金) 23:51:36.65ID:DVmi/VhP0
>>989
テンプレートはUnicode用でMultibyteは考慮されてない
〜W系のUnicode版APIを使ってるとこを〜A系のmultibyte版APIに修正

>>969
MSは昔から早くUnicodeに移行しろってスタンス
今時Multibyteを使おうとする方が悪いまである
2025/11/29(土) 00:04:28.35ID:m0rb6ToR0
〜Aするんじゃなくて末尾にAもWも付かないのにしといた方が良いか
文字列は_Tマクロで
2025/11/29(土) 00:23:18.29ID:UB7+qwb10
2022だと.net10でプロジェクト作れねーのかよ
流石に勘弁してほしい
2025/11/29(土) 05:24:00.09ID:pR++BJ+A0
質問埋め立てくんさっさと解決して出て行って
2025/11/29(土) 06:13:58.15ID:3xlr6P0H0
>>995
だから関連する箇所全部修正しろって言ってんのに
あのアホはなんかブツブツと他の人間に噛みついてばかり
ほんとなんなんあいつ
2025/11/29(土) 07:56:04.36ID:DfzbW6X10


Visual Studio 2022 Part4
https://mevius.5ch.net/test/read.cgi/tech/1764370519/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 873日 22時間 33分 26秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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