微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

protected override void OnDropDown(EventArgs e) { IntPtr pointerToCalenderWindow = SendMessage(Handle,DtmGetmonthcal,0); // disble Theme SetwindowTheme(pointerToCalenderWindow,"",""); var rect = new Rectangle(); SendMessage(pointerToCalenderWindow,McmGetminreqrect,ref rect); MoveWindow(pointerToCalenderWindow,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);

用Winforms绘图

VS2017 8.1SDK与独立安装程序不同吗?

我怎样才能让光盘在DVD ROM驱动器中旋转?

System.data.OracleClient使用七位64位操作系统上的32位oracle客户端驱动程序

从.net程序读取Linux中的文件

NGEN显示返回在C#winforms中使用Process.Start()运行时,与高位CMD不同的结果

定义不同types的二维dynamic数组

将unix时间戳转换为正常date(UWP)

Windows服务未启动:“服务没有响应控制function”。

如何以编程方式说明XP 64位和Server 2003 64位之间的区别

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐