2004-12-28 [長年日記]

[Q3] WM2003SEの高DPI対応 (2)

どうも変だと思ったらHI_RES_AWAREリソースをq3u.exeではなくてqmu.dllにつけてました。それでも動作が変わってしまうあたりよくわからなくて怪しいので、HI_RES_AWAREでの対応はやめて、WM2003SE向けにサブシステムのバージョンを4.21にしたバイナリを別途リリースするようにしました。

[C++] 初期化と関数宣言

struct X {
  X(int) {}
};

struct Y {
  Y(const X&) {}
};

int main(int, char*[]) {
  int v = 5;
  Y y(X(v)); // #
}

#の行は「Y型のインスタンスyの宣言と初期化」ではなく、「Y型を返り値としX型の引数を一つ取り仮引数の名前がvである関数の宣言」です。なので、XのコンストラクタもYのコンストラクタも呼び出されません。

本日のツッコミ(全6件) [ツッコミを入れる]
# trr (2004-12-28 02:19)

1620は動作が変わったのではなくHI_RES_AWARE無しのアプリの状態になっただけだと思います。<br>倍画像表示とかは高DPI未対応の状態のようですし、後から気づいたものとして、メッセージのリスト部分の列幅も倍になってましたし。

# snak (2004-12-28 02:41)

完全に高DPI未対応状態だと320x240で普通に動作するのだと思っていましたが違うのでしょうか?<br><br>リストビューのアイコンが大きいのは正しいですが、ツールバーのビットマップが大きくなってしまっているのはおかしいのではないでしょうか。もしかして、1619以前でそのまま(高DPI対応に書き換えず)起動するとやはりツールバーのビットマップは大きくなっていたのでしょうか?

# trr (2004-12-28 03:06)

1619以前で高DPI対応に書き換えないと、ツールバーのビットマップが倍表示、未読アイコンの倍表示、列の幅の倍位置表示、上下ペイン(リストとプレビュー)の分割位置の倍位置表示になります。<br>フォントサイズはqmail.xmlで指定したとおりのサイズのようです。<br><br>高DPI化していないアプリは、240×320の領域だけを使うのではなく物理的な2ピクセルを論理的に1ピクセルと見なして描画を行います。つまり物理上480×640のスクリーンがアプリケーションからは240×320のように見えている状態ということです。<br><br>SDKなどを読んでいるわけではないので動作からの推測ですが、グラフィックスのビット操作系は物理2ピクセル(面積で4ピクセル)を論理1ピクセルにマッピング、コントロール描画は座標を物理2ピクセルを論理1ピクセルにマッピング、文字フォントサイズは指定サイズのままで表示、のようです。

# snak (2004-12-28 04:33)

倍表示とは何を意味しているのでしょう?<br><br>基本的に何もしなければPocket PC 2003で動作させたときと同じになると理解しているのですが誤解しているでしょうか?エミュレータでの動作はそのようになっているのです。<br><br>例えばリストビューのアイコンが倍表示というのは、Pocket PC 2003と同じサイズで表示されているという意味でしょうか、それともPocket PC 2003のサイズの倍で表示されていると言うことでしょうか?<br><br>ツールバーのボタンのサイズに関しても、同様にPocket PC 2003のサイズで表示されているのでしょうか?それともその倍で表示されているのでしょうか?<br><br>よろしければBTSに高DPI対応でない状態のスクリーンショットをアップロードしていただくと話が早いかもしれません。

# trr (2004-12-28 04:46)

そうですよね〜。<br>自分でも書きながらこんな表現でわかるかどうか自信がなかったんですよ。<br>BTSにアップしますので少々お待ちください。

# snak (2004-12-29 03:53)

スクリーンショット見ました。ありがとうございます。<br><br>高DPI未対応アプリとしては私の理解は間違っていなかったようです。実物を見たことがなかったので状況がわかって助かりました。


トップ «前の日記(2004-12-27) 最新 次の日記(2004-12-29)»