找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2964|回复: 12

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

[复制链接]
发表于 2017-8-2 18:04:41 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
只有两个函数,全部源码不到150行。
游客,如果您要查看本帖隐藏内容请回复
怎么用?
  1. int main()
  2. {
  3.         PWCHAR ret = InputBox(NULL,L"tip",L"title",L"test",0,0);
  4.         MessageBoxW(0,ret,0,0);
  5.         if(ret){VirtualFree(ret,0,MEM_RELEASE);}
  6.         return 0;
  7. }
复制代码
回复

使用道具 举报

发表于 2017-8-3 09:18:15 | 显示全部楼层
如果是我的话我会在WM_CREATE里面创建控件。
另外不要在WndProc里面定义static变量或者访问全局变量,因为这样对多线程不友好。
回复 赞! 靠!

使用道具 举报

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


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

使用道具 举报

发表于 2017-8-3 10:07:40 | 显示全部楼层
在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2017-8-3 10:11:48 | 显示全部楼层
Ayala 发表于 2017-8-3 10:07
在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性

学习了。谢谢。
回复 赞! 靠!

使用道具 举报

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

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

使用道具 举报

发表于 2017-8-31 12:32:40 | 显示全部楼层
学习一下。 
回复 赞! 靠!

使用道具 举报

发表于 2017-9-25 08:07:33 | 显示全部楼层
66666666666666666666666
回复 赞! 靠!

使用道具 举报

发表于 2019-12-6 12:49:03 | 显示全部楼层
来学习看看
回复 赞! 靠!

使用道具 举报

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

使用道具 举报

发表于 2022-11-23 22:43:00 | 显示全部楼层
学习一下
回复

使用道具 举报

发表于 2022-12-11 13:49:14 | 显示全部楼层
学习下
回复

使用道具 举报

发表于 2022-12-14 11:50:18 | 显示全部楼层
所以有最终形态的代码吗 想学习
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-6-26 14:34 , Processed in 0.031766 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表