Golden Blonde 发表于 2017-8-2 18:04:41

【VC】简易输入框(高仿山寨VB6的InputBox)

只有两个函数,全部源码不到150行。
**** Hidden Message *****怎么用?int main()
{
        PWCHAR ret = InputBox(NULL,L"tip",L"title",L"test",0,0);
        MessageBoxW(0,ret,0,0);
        if(ret){VirtualFree(ret,0,MEM_RELEASE);}
        return 0;
}

0xAA55 发表于 2017-8-3 09:18:15

如果是我的话我会在WM_CREATE里面创建控件。
另外不要在WndProc里面定义static变量或者访问全局变量,因为这样对多线程不友好。

Golden Blonde 发表于 2017-8-3 09:43:33

0xAA55 发表于 2017-8-3 09:18
如果是我的话我会在WM_CREATE里面创建控件。
另外不要在WndProc里面定义static变量或者访问全局变量,因为 ...

对的,这个InputBox是只支持单线程使用的。。。顺带问下,在WM_CREATE里创建控件有啥好处?

Ayala 发表于 2017-8-3 10:07:40

在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性

Golden Blonde 发表于 2017-8-3 10:11:48

Ayala 发表于 2017-8-3 10:07
在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性

学习了。谢谢。

0xAA55 发表于 2017-8-3 14:12:12

美俪女神 发表于 2017-8-3 09:43
对的,这个InputBox是只支持单线程使用的。。。顺带问下,在WM_CREATE里创建控件有啥好处? ...

从面向对象的角度来思考的话,WM_CREATE可以理解为你的窗口的构造函数。

涐吢铱舊囿儚 发表于 2017-8-31 12:32:40

学习一下。 :P

xf_lan 发表于 2017-9-25 08:07:33

66666666666666666666666

hxw 发表于 2019-12-6 12:49:03

来学习看看

系统消息 发表于 2019-12-7 00:51:57

我觉得最好像WinAPI那样外部定义CHAR或WCHAR数组,通过参数传缓冲区地址和长度给函数,InputBox函数内部又正好可以通过SendMessage发送EM_LIMITTEXT限制Edit控件的最大输入长度等于缓冲区大小(避免缓冲区越界访问),缓冲区数组可以设计成双向参数(初始显示缓冲区原来的旧文本,确定后把输入的新文本覆盖进去)。

imr2013 发表于 2022-11-23 22:43:00

学习一下

W741 发表于 2022-12-11 13:49:14

学习下:lol

tlwh163 发表于 2022-12-14 11:50:18

所以有最终形态的代码吗 想学习
页: [1]
查看完整版本: 【VC】简易输入框(高仿山寨VB6的InputBox)