他言語OSでmanifestが適用されない – プログラミング – Home

他言語OSでmanifestが適用され...
 
通知
すべてクリア

[解決済] 他言語OSでmanifestが適用されない


もにゃ
 もにゃ
(@もにゃ)
ゲスト
結合: 16年前
投稿: 7
Topic starter  

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スタイルを適用させてコントロールを描画させるに
はどうしたらよいのでしょうか?


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

わざわざ CreateWindowExW を使っているあたり、プロジェクトの文字セットは MBCS に
してたりしますか?
Visual Style は Unicode でしかサポートされないと聞きますが。


返信引用
もにゃ
 もにゃ
(@もにゃ)
ゲスト
結合: 16年前
投稿: 7
Topic starter  

返信ありがとうございます、
文字コードセットは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でビルド


返信引用
もにゃ
 もにゃ
(@もにゃ)
ゲスト
結合: 16年前
投稿: 7
Topic starter  

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が必要みたいです。

どうもお騒がせしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました