Visual Studio 2022 Part3

レス数が950を超えています。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(木) 06:15:50.08ID:xvpFNUUm0
commdlg.hつことけ
2025/11/27(木) 08:01:18.24ID:UEijD4WZ0
>>951
framework.hのdefine WIN32_LEAN_AND_MEANを消すか、直接commdlg.hをincludeしたらいい
今、windows.hの中でWIN32_LEAN_AND_MEANが定義済みだと除外される記述になってるから。
955デフォルトの名無しさん (ワッチョイ 47e6-j3nM)
垢版 |
2025/11/27(木) 09:49:11.37ID:yTPYpgBk0
commdlg.h 入れたら出来ました。でもなんでなくなったの?
てか、今ではGetOpenFileNameは使わずに他の方法でやってるのかな?
今デフォルトでは何を使ってるの?
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触ってれば当たり前の基礎知識部分しか関わってないんだけどなこれ
レスを投稿する

レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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