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

标签 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

最佳答案

不幸的是,没有简单的方法来改变我所看到的。这些控件实际上不是真正的按钮 - 它们只是绘制在窗口上,日历控件根据 NONCLIENTMETRICS.iScrollHeight 的值来确定它们的大小 - 它不允许您更改它们.

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

我为您提供的一个想法是对控件进行子类化,以将您自己的(真实的)按钮控件置于现有按钮控件之上。

然后,当您的子类过程收到 WM_COMMAND 消息表明它们已被单击时,向日历控件发送 WM_KEYDOWN 消息以获取 VK_NEXTVK_PRIOR - 这些键将导致它向任一方向滚动一个月。

关于c++ - winapi - 日期时间选择器,更改上一个/下一个按钮的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33288543/

相关文章:

c++ - CRect 和 CRect* 如何成为 GetClientRect 的输入参数?

css - 为什么过渡属性对 box-shadow 不起作用?

javascript - 具有圆 Angular 的 CSS 按钮,可对点击使用react

c++ - 重载派生类的赋值运算符的正确方法是什么?

c++ - 并行位置

c++ - 在 Lua/Binding 中使用 C++ 函数

python - 我怎样才能让 pygame 中的按钮正常工作? (刽子手游戏)

c++ - wxStaticBitmap构造函数使用wxGDIImage而不是wxBitmap

c++ - 从聊天窗口中禁用/删除插入符号

c# - 使用 SendMessage 击败 'A program is trying to access email'