gpt4 book ai didi

c - Up-Down 控件比好友高

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:23 25 4
gpt4 key购买 nike

纯 C,winapi 应用程序。

在从资源脚本创建的对话框中,它非常适合,但使用 CreateWindowEx 创建时,Up-Down 控件在两侧比伙伴窗口(编辑控件)高一个像素。这没什么大不了的,但是很烦人。我尝试了所有我能想到的方法,但无法修复它,感谢任何帮助。

代码如下:

#include <Windows.h>
#include <Commctrl.h>
#include <stdio.h>

#define print(...) sprintf(dbg, __VA_ARGS__);\
WriteConsoleA(h_con_out, dbg, strlen(dbg), NULL, NULL)

TCHAR *app_name = TEXT("ud");
HANDLE h_con_out;
char dbg[80];

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
HWND hwnd;
MSG msg;
WNDCLASSEX wcx;
INITCOMMONCONTROLSEX icx = {sizeof(icx), ICC_STANDARD_CLASSES | ICC_UPDOWN_CLASS};

AllocConsole();
h_con_out = GetStdHandle(STD_OUTPUT_HANDLE);

memset(&wcx, 0, sizeof(wcx));
wcx.cbSize = sizeof(wcx);
wcx.lpfnWndProc = WndProc;
wcx.hInstance = hInstance;
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
wcx.lpszClassName = app_name;

if(!RegisterClassEx(&wcx)){
MessageBox(NULL, TEXT("This program requires Windows 2000!"), app_name, MB_ICONERROR);
return 0;
}
InitCommonControlsEx(&icx);

hwnd = CreateWindowEx(
0, app_name, app_name,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, 200, 100,
NULL, NULL, hInstance, NULL
);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);

while((GetMessage(&msg, NULL, 0, 0)) != 0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){
static HWND hEd, hUd;

switch(msg){
case WM_CREATE:
hEd = CreateWindowEx(
WS_EX_CLIENTEDGE, WC_EDIT, NULL,
WS_VISIBLE | WS_CHILD | WS_BORDER |
ES_RIGHT | ES_NUMBER,
5, 5, 52, 23,
hwnd, NULL, ((LPCREATESTRUCT) lParam)->hInstance, NULL
);
hUd = CreateWindowEx(
0, UPDOWN_CLASS, NULL,
WS_VISIBLE | WS_CHILD |
UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_AUTOBUDDY | UDS_HOTTRACK | UDS_SETBUDDYINT | UDS_AUTOBUDDY,
0, 0, 0, 0,
hwnd, NULL, ((LPCREATESTRUCT) lParam)->hInstance, NULL
);

SendMessage(hUd, UDM_SETRANGE, 0, 10 | 1 << 16);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hwnd, msg, wParam, lParam);
}

最佳答案

从编辑控件样式中删除 WS_BORDER

关于c - Up-Down 控件比好友高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com