2006/6/17 (土) 02:30:06 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
[4482] Vista バージョン番号
Windows Vista β2で、COsVersionInfo::IsLuna() が
FALSE になってしまっています。
Windows Ver6.0 も TRUE になるように...

Index: sakura_core/COsVersionInfo.h
===================================================================
--- sakura_core/COsVersionInfo.h	(revision 975)
+++ sakura_core/COsVersionInfo.h	(working copy)
@@ -109,8 +110,8 @@
 		@date 2003.09.06 genta
 	*/
 	BOOL IsLuna(){
-		return (m_cOsVersionInfo.dwMajorVersion >= 5 &&
-			m_cOsVersionInfo.dwMinorVersion >= 1 );
+		return ( m_cOsVersionInfo.dwMajorVersion >= 6 ||	// Ver 6.0も含める
+			(m_cOsVersionInfo.dwMajorVersion >= 5 && m_cOsVersionInfo.dwMinorVersion >= 1) );
 	}
 
 	/*! Windows 2000以上か調べる

■別件
Vistaではタブのアイコンが表示されなかった orz
(落ちたりはしないので、操作に問題はないけど)
やりかたを変えないとだめなのかしら?

2006/6/20 (火) 22:09:30 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
[4489] Vista β2でのタブアイコン表示
> Vistaではタブのアイコンが表示されなかった orz

ImageList_Duplicate() が NULL を返していました。
以下の修正で表示されるようになります。

Index: sakura_core/CTabWnd.cpp
===================================================================
--- sakura_core/CTabWnd.cpp	(revision 977)
+++ sakura_core/CTabWnd.cpp	(working copy)
@@ -1591,13 +1591,18 @@
 HIMAGELIST CTabWnd::ImageList_Duplicate( HIMAGELIST himl )
 {
 	// 本物の ImageList_Duplicate() があればそれを呼び出す
+	HIMAGELIST hImlNew;
 	if( m_RealImageList_Duplicate )
-		return m_RealImageList_Duplicate( himl );
+	{
+		hImlNew = m_RealImageList_Duplicate( himl );
+		if( NULL != hImlNew )
+			return hImlNew;
+		m_RealImageList_Duplicate = NULL;	// 2006.06.20 ryoji 失敗時は代替処理に切り替え
+	}
 
 	// 本物の ImageList_Duplicate() の代替処理
 	// 新しいイメージリストを作成してアイコン単位でコピーする
 	//(この場合、多色アイコンは綺麗には表示されないかもしれない)
-	HIMAGELIST hImlNew;
 	hImlNew = ImageList_Create( CX_SMICON, CY_SMICON, ILC_COLOR32 | ILC_MASK, 4, 4 );
 	if( hImlNew )
 	{

NULL を返すようなら ImageList_Duplicate() が存在しないのと同じ扱いにしてます。
正式版 Vista では従来通りでも動くようになるかと思われますが、
エラー処理としても妥当な気がするので修正しておくのがいいかもしれません。

2006/6/21 (水) 07:39:18 げんた  
INCM1.23c
[4490] RE: Vista β2でのタブアイコン表示
>> Vistaではタブのアイコンが表示されなかった orz
VISTA対応のこの2件,他に影響は出なさそうなので忘れないうちにcommitnしておいてください.

2006/6/21 (水) 23:11:16 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
[4491] Re2: Vista β2でのタブアイコン表示
▼ げんたさん
> >> Vistaではタブのアイコンが表示されなかった orz
> VISTA対応のこの2件,他に影響は出なさそうなので忘れないうちにcommitnしておいてください.


Vista 対応の上記 2 件と、やはり Vista 絡みの 1 件を commit しました。
追加の 1 件(trunk#980)は次の通りです。

・VC2005 用に /manifestdependency リンカオプションを追加

Vista では外部マニフェスト(.exe.manifest)よりも埋め込みマニフェストが優先されるようです。
trunk#980 よりも前のソースを VC2005 で .dsw 変換してそのままビルドした sakura.exe には空のマニフェストが埋め込まれるため、Vista 上ではビジュアルスタイル適用のための sakura.exe.manifest は無効果です。
プロジェクトのプロパティで埋め込みマニフェストを作成しないように設定変更すれば大丈夫ですが、その場合は空の sakura.exe.manifest が作成されて紛らわしいです。
なので、ビジュアルスタイル適用のためのマニフェストが自動生成されるようにしました。

■VC2005 ユーザー用の説明
trunk#980 以後のソースを VC2005 で .dsw 変換してそのままビルドした sakura.exe にはビジュアルスタイル適用のためのマニフェストが自動的に埋め込まれます。
従って、Windows XP 以降の環境では sakura.exe.manifest 無しでもビジュアルスタイルが適用されます。
正式リリース版と同様にマニフェスト埋め込みの無い sakura.exe を作成したいときは、プロジェクトのプロパティページ画面で [マニフェストツール]-[入力と出力] を選択し、[埋め込みマニフェスト]を「いいえ」に変更してリビルドしてください。
そうすると、sakura.exe からマニフェストが分離され、別にビジュアルスタイル適用のための sakura.exe.manifest が作成されるようになります。

2006/6/22 (木) 21:42:11 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
[4492] manifestの優先順位
補足です。

> Vista では外部マニフェスト(.exe.manifest)よりも埋め込みマニフェストが優先されるようです。

実際に Vista β2 ではそうなっているわけですが、
MSDNライブラリ「C/C++ 分離アプリケーションおよび side-by-side アセンブリのトラブルシューティング」の項に Windows Server 2003 以降は XP とは優先順位が変わるとの記述もあります。

INCM/CMT
Cyclamen v3.81
[ut:0.010][st:0.000]