winapi - 日期时间选择器,更改上一个/下一个按钮的大小

时间:2015-10-22 18:52:29

标签: c++ winapi button datepicker size

我有这段代码:

HWND hwndDP = CreateWindowEx(0,
     DATETIMEPICK_CLASS,
     TEXT("DateTime"),
     WS_BORDER | WS_CHILD | WS_VISIBLE,
     20, 50, 400, 60,
     hDlg,
     NULL,
     NULL,
     NULL);                     
HFONT hFont = CreateFont(40, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, L"Arial");
SendMessage(hwndDP, WM_SETFONT, WPARAM(hFont), TRUE);

创建日期时间选择器,如下图所示。如您所见,我更改了字体的大小,因此日期时间选择器的字体更大。我有问题,圈出的按钮(下一个/上个月)不会改变尺寸而且很小。是否可以更改此按钮的大小。我需要它,因为我在触摸显示器上使用这个日期时间选择器,很难点击这两个按钮。

enter image description here

1 个答案:

答案 0 :(得分:1)

不幸的是,我无法轻易改变这一点。这些控件实际上并不是真正的按钮 - 它们只是在窗口上绘制,而日历控件的大小基于NONCLIENTMETRICS.iScrollHeight的值 - 它不会让你改变它们。

改变这种情况的唯一方法是全局,这会影响系统中的所有滚动条,可能不是你想要做的事情。

我有一个想法就是对控件进行子类化,将你自己的(真实)按钮控件放在现有控件的顶部。

然后,当您的子类程序收到WM_COMMAND消息说明他们已被点击时,请向日历控件发送WM_KEYDOWN消息VK_NEXT或{{1这些键会导致它向任一方向滚动一个月。