C 设置textBox只能输入数字(正数,负数,小数)简单实现

在C语言中,设置TextBox只能输入数字(包括正数、负数、小数)可以通过以下几个步骤来实现:

步骤一:定义一个函数用于判断输入的字符是否为数字。

定义一个函数,用于判断输入的字符是否为数字。这个函数可以使用isdigit()函数来实现。isdigit()函数可以判断一个字符是否为数字,如果是数字,则返回非零值,否则返回零。

下面是判断输入字符是否为数字的示例代码:

```c

int isNumber(char c) {

if (c >= '0' && c <= '9') {

return 1;

} else {

return 0;

}

}

```

步骤二:定义一个函数用于设置TextBox只能输入数字。

在TextBox被编辑时,每次输入一个字符就调用该函数进行判断,如果输入的字符不是数字,则将其丢弃。这里可以使用WinAPI中的SubclassWindow函数,将TextBox的窗口函数替换成自定义封装的函数,以达到只能输入数字的效果。

下面是设置TextBox只能输入数字的示例代码:

```c

LRESULT CALLBACK SubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) {

switch (uMsg) {

case WM_CHAR: {

if (isNumber((char)wParam) || wParam == VK_BACK || wParam == '-') {

return DefSubclassProc(hWnd, uMsg, wParam, lParam);

} else {

return 0;

}

}

default:

return DefSubclassProc(hWnd, uMsg, wParam, lParam);

}

}

void SetEditBoxOnlyNumber(HWND hWndEdit) {

SetWindowSubclass(hWndEdit, SubclassProc, 0, 0);

}

```

注意,这里处理了Backspace键和负号,因为这两个字符在数字输入中也有一定的作用。

步骤三:将TextBox控件与自定义函数绑定起来。

在程序初始化时,将需要输入数字的TextBox控件的句柄传入SetEditBoxOnlyNumber()函数中,就可以实现只能输入数字的效果。

下面是使用SetEditBoxOnlyNumber()函数设置TextBox只能输入数字的示例代码:

```c

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

// 创建窗口

HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

// 创建一个TextBox控件

HWND hWndEdit = CreateWindowEx(0, L"EDIT", nullptr, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL,

10, 10, 150, 25, hWnd, nullptr, hInstance, nullptr);

// 设置只能输入数字

SetEditBoxOnlyNumber(hWndEdit);

// 显示窗口

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

// 消息循环

MSG msg;

while (GetMessage(&msg, nullptr, 0, 0)) {

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return (int)msg.wParam;

}

```

这个示例代码创建了一个窗口和一个只允许输入数字的TextBox控件。

当用户在该TextBox中输入非数字字符时,这些字符将被丢弃,只有数字字符能够被正常输入。

综上所述,通过使用isdigit()函数、SubclassWindow函数和自定义封装的函数,可以很方便地实现设置TextBox只能输入数字的功能。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(117) 打赏

评论列表 共有 1 条评论

喵了个汪 1年前 回复TA

我们能发展到今天真是几经波折,可能还有更多的考验等待着我们,但我只知道一件事,我爱你,我只想和你永远在一起!

立即
投稿
发表
评论
返回
顶部