No.4ベストアンサー
- 回答日時:
>フォントの選択を変更した後、書き換えられたら再度上書きする。
という処理が必要そうです。ということで、無駄なあがきをしてみる(見苦しいとも言う)。
WindowsXP Sp3 + VC# 2010 EE(.Net Framework 4.0 Client Profile)で確認。
class CustomFontDialog : FontDialog
{
const int WM_INITDIALOG = 0x0110;
const int WM_COMMAND = 0x0111;
const int CBN_SELCHANGE = 1;
const int WM_SETTEXT = 0x000C;
const int WM_APP = 0x8000;
private IntPtr hStaticWnd;
[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hWnd, int nIDDlgItem);
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, string lParam);
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll")]
static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, Boolean bErase);
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
switch (msg)
{
case WM_INITDIALOG:
hStaticWnd = GetDlgItem(hWnd, 0x0444);
SendMessage(hStaticWnd, WM_SETTEXT, 0, "1234567890");
break;
case WM_COMMAND:
if ((wParam.ToInt32() >> 16) == CBN_SELCHANGE && (wParam.ToInt32() & 0xFFFF) == 0x470)
PostMessage(hWnd, WM_APP, 0, 0);
break;
case WM_APP:
SendMessage(hStaticWnd, WM_SETTEXT, 0, "1234567890");
InvalidateRect(hWnd, IntPtr.Zero, false);
break;
}
return base.HookProc(hWnd, msg, wParam, lParam);
}
}
「フォント名」の選択が変更されると親ウィンドウにCBN_SELCHANGEが通知されるので…PostMessage()でメッセージキューに独自メッセージを積む。
で、独自メッセージを受けたらサンプルの文字列を書き換えて再描画を強制する。
う~ん……かなり無理矢理ですなぁ…。
手間かけている割には見返りは自己満足だけ…という。
この回答へのお礼
お礼日時:2013/10/17 10:08
重ね重ねありがとうございました
でも難しくて手が出ません
このご回答が何れの日にか、誰かの役に立つことを心から祈ります
で私のプログラムは・・・・・ ダイアログに似たフォームを作りました
ありがとうございました
No.3
- 回答日時:
フォントの選択を変更したら上書きされますな。
……う~ん…結構面倒かも知れないです。
フォントの選択を変更した後、書き換えられたら再度上書きする。という処理が必要そうです。
StaticTextのウィンドウをサブクラス化できれば簡単なのかも知れませんけどね…。
# Spy++で覗いても…ちょっと厳しいですかねぇ。
自前でサンプルの上にLabelなり乗っけて、フォントが選択された時にそのLabelのフォント設定を変更する。
とか……。
# まあ、そのフォントを選択した(Fontプロパティが変化した)って状態を検出できないんですが。
自前で作った方が楽かも知れませんねぇ……。
No.2
- 回答日時:
CommonDialogクラスのHookProcメソッドをオーバーライドすることになりますかねぇ……。
http://msdn.microsoft.com/ja-jp/library/system.w …
ということで、ちょこっといぢってみました。
SendDlgItemMessage()の第2引数に渡すコントロールIDはSpy++で確認。
# Dlgs.hをインクルードできるならstc5…ですかねぇ。まぁ、C#なんで…そのまま直値で書いてますが。
class CustomFontDialog : FontDialog
{
const int WM_INITDIALOG = 0x0110;
const int WM_SETTEXT = 0x000C;
[DllImport("user32.dll")]
extern static IntPtr SendDlgItemMessage(IntPtr hWnd, int nIDDlgItem, int msg, IntPtr wParam, string lParam);
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
switch (msg)
{
case WM_INITDIALOG:
SendDlgItemMessage(hWnd, 0x0444 ,WM_SETTEXT, IntPtr.Zero, "1234567890");
break;
}
return base.HookProc(hWnd, msg, wParam, lParam);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
ワードでコントロールツールボ...
-
フォントの大きさ
-
static 文字が上に張り付いて・...
-
VBにて指定した通りにExcelの列...
-
Macbook Word フォント色変更で...
-
素材管理の方法
-
JTableのヘッダー文字のサイズ変更
-
リソースエディタでスタティッ...
-
VB6.0で、コンボボックスの背景...
-
ドロップダウンリストのフォン...
-
Photoshop 文字がギザギザ
-
コンボボックスの一部のアイテ...
-
リストコンロールの一行だけを...
-
VBAのフォント変更(エクセルか...
-
Eclipseで修正したファイル名の...
-
行き詰まりましたυ
-
マインクラフト(pc版)で座標...
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの大きさ
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
VB.NET2005 TextBox 高さ(Heig...
-
ドロップダウンリストのフォン...
-
リソースエディタでスタティッ...
-
VBA TEXTBOXテキストボックスの...
-
エディットボックスのフォント...
-
プロポーショナルフォントの文...
-
Msgboxで使用するフォントの指...
-
チェックボックスの箱のサイズ...
-
文字色 エクリプス
-
コンボボックスの一部のアイテ...
-
Eclipseで修正したファイル名の...
-
WPFのフォントカラー変更につい...
-
ワードでコントロールツールボ...
-
static 文字が上に張り付いて・...
-
Excelのセルのフォントサイズを...
-
JakaraPOI セル内部のフォント...
-
GetTextExtentPoint32での高さ
おすすめ情報