C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102692 / 3階層)  Windows Forms での Formのボーダー太さ
□投稿者/ 魔界の仮面弁士 (3735回)-(2023/12/12(Tue) 10:00:37)
No102688 (Azulean さん) に返信
> PE ヘッダーの Subsystem version によって、ウィンドウの枠の振る舞いが変わります。
おぉ、知りませんでした。φ(。。)


> 従来と同じ形を端的に実現する手段は、.NET Framework のターゲットバージョンを 4.0 に落とすことだと思います。
> (ただし、VS2022 は 4.0 〜 4.5.1 の開発をサポートしていません)
「Visual Studio 2022 以降では、Visual Studio に .NET Framework 4.0 から 4.5.1 用の .NET Framework コンポーネントが含まれなくなりました。」
https://learn.microsoft.com/ja-jp/dotnet/framework/install/guide-for-developers?WT.mc_id=DT-MVP-8907
と書いてあるのですが、手元の環境だと、ターゲットフレームワークとして
 VS2022P… 2.0/3.0/3.5/4/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8/4.8.1
 VS2022 … 2.0/3.0/3.5/4/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8/4.8.1
 VS2019 … 2.0/3.0/3.5/4/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8/4.8.1
 VS2017 … 2.0/3.0/3.5/4/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8/4.8.1
 VS2010 … 2.0/3.0/3.5/4
 VS2008 … 2.0/3.0/3.5
を選択できていますね。新旧バージョンが混在している環境だからかな…?
※Client Profile / .NET Comapact Framework / Unity などは省略

で…VS2022 + Win10 22H2 という環境なので、元質問者とはちょっと違うのですが、
VS2022 で .NET Framework 3.5 / 4.8 をそれぞれ選択し、FixedSingle フォームを比較してみると
微妙に差異が生じますね。


下記はいずれも Visual Studio 2022 での結果です。
//Form1_Load
this.Text = String.Format("Size={0}, ClientSize={1}", Size, ClientSize);

.NET Framework 2.0/3.0/3.5 Client Profile/4/4 Client Profile
 Size={Width=806, Height=479}, ClientSize={Width=800, Height=450}

.NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8/4.8.1
 Size={Width=816, Height=489}, ClientSize={Width=800, Height=450}


PE Header を比較すると、.NET Framework 3.5 の時と 4.8 の時とで
 00C0-00C3: 0004 0000 / 0004 0000 (MajorOperatingSystemVersion / MinorOperatingSystemVersion)
 00C4-00C7: 0000 0000 / 0000 0000 (MajorImageVersion / MinorImageVersion)
 00C8-00CB: 0004 0000 / 0006 0000 (MajorSubsystemVersion / MinorSubsystemVersion)
という差異がありました。確かに SubSysVer が異なっていますね。
https://learn.microsoft.com/ja-jp/windows/win32/api/winnt/ns-winnt-image_optional_header32?WT.mc_id=DT-MVP-8907
https://learn.microsoft.com/ja-jp/windows/win32/api/winnt/ns-winnt-image_optional_header64?WT.mc_id=DT-MVP-8907
https://learn.microsoft.com/en-us/dotnet/api/system.reflection.portableexecutable.peheader.majorsubsystemversion?WT.mc_id=DT-MVP-8907


そして .NET Framework 3.5 向けにコンパイルした EXE ファイルをバイナリエディタで開き、
00C8 のバイナリを 0xC4 → 0x06 に書き換えてみたところ、FixedSingle フォームが、4.8 相当に
  Size={Width=816, Height=489}, ClientSize={Width=800, Height=450}
に変化し、その逆に 4.5 版の 00C8 の位置を 0xC6 → 0x04 に書き換えると、3.5 相当の
  Size={Width=806, Height=479}, ClientSize={Width=800, Height=450}
になることを確認できました。
もちろん、コンパイル後のバイナリを直接書き換えるという力業は、良策とはいえないでしょうけれどね…。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: Windows Forms での Formのボーダー太さ /Azulean 返信無し
 
上記関連ツリー

Windows Forms での Formのボーダー太さ / きゃむ (23/12/11(Mon) 15:38) #102684
Re[1]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/11(Mon) 17:48) #102685
Re[1]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/11(Mon) 17:54) #102686
Re[1]: Windows Forms での Formのボーダー太さ / 魔界の仮面弁士 (23/12/11(Mon) 19:34) #102687
  └ Re[2]: Windows Forms での Formのボーダー太さ / Azulean (23/12/11(Mon) 20:24) #102688
    ├ Windows Forms での Formのボーダー太さ / 魔界の仮面弁士 (23/12/12(Tue) 10:00) #102692 ←Now
    └ Re[3]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/12(Tue) 11:52) #102695
      └ Re[4]: Windows Forms での Formのボーダー太さ / 魔界の仮面弁士 (23/12/12(Tue) 11:58) #102696
        └ Re[5]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/12(Tue) 13:07) #102697
          ├ Re[6]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/12(Tue) 14:57) #102699
          └ Re[6]: Windows Forms での Formのボーダー太さ / 魔界の仮面弁士 (23/12/12(Tue) 14:36) #102698
            └ Re[7]: Windows Forms での Formのボーダー太さ / WebSurfer (23/12/12(Tue) 15:19) #102700
              └ Re[8]: Windows Forms での Formのボーダー太さ / 魔界の仮面弁士 (23/12/12(Tue) 16:10) #102701
                └ Re[9]: Windows Forms での Formのボーダー太さ / きゃむ (23/12/12(Tue) 17:28) #102702 解決済み
                  └ Re[10]: Windows Forms での Formのボーダー太さ / Azulean (23/12/12(Tue) 22:28) #102705 解決済み
                    └ Re[11]: Windows Forms での Formのボーダー太さ / Azulean (23/12/12(Tue) 22:36) #102706 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信