2006年04月08日

Screen クラスにおける細かいこと。

掲示板で答えるときは大抵事前に動作確認するわけですが、「画面プロパティ」の「画面の色」のビット数を取得・設定するには? というスレッドで「API 使えばできるさ」と答えた関係上、当然ながら最小限のコードで試しています。

で、そのついでに System.Windows.Forms.Screen クラスをいじっていたのですが、ここでちょっとした問題に気付きました。

Screen.DeviceName でディスプレイのデバイス名を取得できますが、これで取得できる文字列は実は本来の文字列よりも長くなってます。ちなみに取得する用の関数で使用する構造体のデバイス名格納用メンバは TCHAR[32] と定義されています。で、これを .NET の char[] で表現して、そのまま String のコンストラクタに突っ込んだだけみたいな形なんですよね。

つまりわかりやすく言うと、NULL 文字以降のまで保持しちゃってるってことです。

実用上はほぼ問題ないでしょうけど(表示するにもアンマネージドに渡すにも NULL 文字で終端されるでしょうからね)、ちょっとだけ気になった点でした。

posted by Hongliang at 21:16| Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。