C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DWMによるガラスウィンドウの作成


(過去ログ 97 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■57846 / inTopicNo.1)  DWMによるガラスウィンドウの作成
  
□投稿者/ めめ (19回)-(2011/03/17(Thu) 19:08:11)

分類:[C#] 

2011/03/17(Thu) 19:17:40 編集(投稿者)
2011/03/17(Thu) 19:17:36 編集(投稿者)

こんばんは

C#でDWMを利用してガラスウィンドウを作ろうとしたのですが、
フォームにコントロールを配置したラベルやグループの文字が、きちんと表示することができません。
参考の図 10 透明なダイアログ ボックスの下のテキストみたいになってしまします。

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(true);<−これ
Application.Run(new MainForm());
}

対象のフォームに
/// <summary>
/// コンストラクタ.
/// </summary>
public RegistForm()
{
// 背景色
BackColor = System.Drawing.Color.Black;

bool isAttchEffect = DesktopWindowManager.DwmIsCompositionEnabled();

if (isAttchEffect == true)
{
MARGINS margin = new MARGINS(-1, 0, 0, 0);
DesktopWindowManager.DwmExtendFrameIntoClientArea(this.Handle, ref margin);
}

InitializeComponent();
}

上記のコードを追加すれば、解消されるものだと思ったんですが間違っているのでしょうか?
よろしくお願いします。


参考
http://msdn.microsoft.com/ja-jp/magazine/cc163435.aspx


引用返信 編集キー/
■57850 / inTopicNo.2)  Re[1]: DWMによるガラスウィンドウの作成
□投稿者/ Azulean (708回)-(2011/03/17(Thu) 23:40:49)
2011/03/17(Thu) 23:41:26 編集(投稿者)

Windows 7 ですか? Windows Vista ですか?
詳しくは調べられていないので取り急ぎこの一点だけ聞いてみました。

# 参照されている記事は Windows Vista 時代のものだとみられます。
引用返信 編集キー/
■57852 / inTopicNo.3)  Re[2]: DWMによるガラスウィンドウの作成
□投稿者/ めめ (20回)-(2011/03/18(Fri) 09:43:01)
No57850 (Azulean さん) に返信
> 2011/03/17(Thu) 23:41:26 編集(投稿者)
>
> Windows 7 ですか? Windows Vista ですか?
> 詳しくは調べられていないので取り急ぎこの一点だけ聞いてみました。
>
> # 参照されている記事は Windows Vista 時代のものだとみられます。

すいません 環境を書いていませんでした。
windows7 pro 64bit

vistaの記事の件ですが、必要なDDLは取得できているものだと思います。
ウィンドウのガラス加工自体は有効ですが、GUIで設定したラベルなどがうまくフォーム上に乗らない(反転したようになる)状態です。

引用返信 編集キー/
■57874 / inTopicNo.4)  Re[3]: DWMによるガラスウィンドウの作成
□投稿者/ Azulean (709回)-(2011/03/18(Fri) 23:55:08)
2011/03/18(Fri) 23:58:03 編集(投稿者)

この発言の時点で、裏付けはとれていません。
私の推測に過ぎないのでご注意ください。

> vistaの記事の件ですが、必要なDDLは取得できているものだと思います。
> ウィンドウのガラス加工自体は有効ですが、GUIで設定したラベルなどがうまくフォーム上に乗らない(反転したようになる)状態です。

黒で表示されるべき要素が、透過(ガラス)になるという認識ですが、相違ないですか?
(「フォーム上にうまく載らない」という説明ではよくわかりませんでした)

私が、Windows Vista 当時の内容であることを強調したのは、Windows 7 では SetCompatibleTextRenderingDefault だけで回避できなくなっている可能性はないのか?ということを思ったからです。
Windows 7 でまた描画系に手が入っていたような情報を見かけたことがあることから、可能性として疑っている段階で、裏付けはとれていません。


# Windows Vista で通じていた SetCompatibleTextRenderingDefault はあくまで”回避”です。
# 描画の下回りが変わってしまうと、その回避策が通じなくなっても不思議ではありません。
# 手っ取り早いのは、色を少しだけ変えてしまうことですが、めんどくさいかも。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -