Win32SDK VC++2008 Vistaです。
ヘッダーは<windows.h>のみで簡単なアプリケーションを作りました。
WinMainの中で
CreateWindowExW(WS_EX_LTRREADING ,
LBUTTON, LOK,
WS_CHILDWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS ,
10,50,100,30,
hMainWindow, 0, hInstance,NULL);
でボタンを作成しただけの簡単なアプリケーションです。
プロパティページの
マニフェストツール->入力と出力->追加のマニフェストファイル で
“manifest.xml”を追加しています。
ファイルの内容はUTF-8形式で
<?xml version=1.0 encoding=UTF-8 standalone=yes?>
<assembly xmlns=urn:schemas-microsoft-com:asm.v1 manifestVersion=1.0>
<dependency>
<dependentAssembly>
<assemblyIdentity type=win32 name=Microsoft.Windows.Common-Controls
version=6.0.0.0 processorArchitecture=X86
publicKeyToken=6595b64144ccf1df language=*/>
</dependentAssembly>
</dependency>
</assembly>
です。
クリーンな日本語版Xpでは問題なく動作するのですが、
英語版Xpではボタンが表示されません。(テーマを無効にすると表示されます)
日本語、英語含め、どんなxpでもxpスタイルを適用させてコントロールを描画させるに
はどうしたらよいのでしょうか?
わざわざ CreateWindowExW を使っているあたり、プロジェクトの文字セットは MBCS に
してたりしますか?
Visual Style は Unicode でしかサポートされないと聞きますが。
返信ありがとうございます、
文字コードセットはUNICODEを使用しております。
あれからいろいろ試したところ極めつけは
下記のメッセージボックスすら表示されません。
テーマをOFFにすると表示されます...
日本語環境(xp,vista)だと全く問題ないです。
ひょっとしてVC++2008固有の問題ですかね?
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine,
int nCmdShow)
{
MessageBox(0,Ltest,Ltest,MB_OK);
return (0);
}
開発環境は
日本語Vista VC++2008 pro
Win32
Win32プロジェクト
Windowsアプリケーション(空のプロジェクト)
プロパティ(デフォルトからの変更箇所)
Release
構成プロパティ
C/C++
ランタイムライブラリ--マルチスレッド (/MT)
リンカ
デバッグ情報の生成---いいえ
マニフェストツール
追加のマニフェストファイル--manifest.xml
Releaseでビルド
http://msdn.microsoft.com/ja-jp/library/cc422017.aspx
マニフェストを作成しアプリケーションがビジュアル スタイルを使用できるようにする
には
1.ComCtl32.lib にリンクし、InitCommonControls を呼び出します (MSDN ライブラリ
の Platform SDK ドキュメントを参照)。
2.次のような XML 形式のファイルを YourApp.exe.manifest という名前でソース ツリ
ーに追加します。
1番をしていませんでした、
ちなみに、1をしなくても、ほとんどのOSで動作します。
英語版のXP sp1までがどうやら1が必要みたいです。
どうもお騒がせしました。