Win7のカレンダーコントロールのフォントサイズを変更してタッチスクリーン対応にしたいです。私のマシンのテーマはエアロです。CalendarFont
プロパティは、Aero テーマには影響しません。
そのため、OnDropDown メソッドをオーバーライドして、カレンダー コントロールのテーマを無効にしました。現在、フォントは変更されていますが、カレンダー ウィンドウのサイズは変更されていません。次の画像は、私が見ているウィンドウを示しています
コードを以下に示します。カレンダー ウィンドウのサイズを大きくするにはどうすればよいですか?
protected override void OnDropDown(EventArgs e)
{
IntPtr pointerToCalenderWindow = SendMessage(Handle, DtmGetmonthcal,0,0);
// Disble Theme
SetWindowTheme(pointerToCalenderWindow, "", "");
var rect = new Rectangle();
SendMessage(pointerToCalenderWindow, McmGetminreqrect, 0, ref rect);
MoveWindow(pointerToCalenderWindow,0,0,rect.Right + 2, rect.Bottom + 2, true);
base.OnDropDown(e);
}
private const int McmFirst = 0x1000;
private const int McmGetminreqrect = (McmFirst + 9);
private const int McsWeeknumbers = 0x4;
private const int DtmFirst = 0x1000;
private const int DtmGetmonthcal = (DtmFirst + 8);
private const int WMPAINT = 0x000F;
[DllImport("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
[DllImport("User32.dll")]
private static extern IntPtr SendMessage(IntPtr h,
int msg,
int param,
int data);
[DllImport("User32.dll")]
private static extern int MoveWindow(IntPtr h,
int x,
int y,
int width,
int height,
bool repaint);