在Win7 Aero主题中增加DateTimePicker日历的字体大小

我想在Win7中更改日历控件的字体大小,使其与触摸屏兼容。 我机器的主题是Aero。 CalendarFont属性对Aero主题没有任何影响。

所以我已经重写了OnDropDown方法来禁用calander控件的主题。 现在字体已经改变了,但是日历窗口大小没有改变。 下图显示了我所看到的窗口 在这里输入图像说明

代码如下。 我应该怎么做才能增加压光窗的尺寸?

  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); 

看来这个问题和你的问题是一样的:

答案指出,实际上有两个窗口用于日历部分(“内部”和“外部”),并且需要正确设置外部窗口的大小。