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

QQ登录

只需一步,快速开始

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

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

[复制链接]

55

主题

275

回帖

9352

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
8217 个
贡献
251 次
宅之契约
0 份
在线时间
254 小时
注册时间
2014-2-22
发表于 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. }
复制代码
回复

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24225 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2017-8-3 09:18:15 | 显示全部楼层
如果是我的话我会在WM_CREATE里面创建控件。
另外不要在WndProc里面定义static变量或者访问全局变量,因为这样对多线程不友好。
回复 赞! 靠!

使用道具 举报

55

主题

275

回帖

9352

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
8217 个
贡献
251 次
宅之契约
0 份
在线时间
254 小时
注册时间
2014-2-22
 楼主| 发表于 2017-8-3 09:43:33 | 显示全部楼层
0xAA55 发表于 2017-8-3 09:18
如果是我的话我会在WM_CREATE里面创建控件。
另外不要在WndProc里面定义static变量或者访问全局变量,因为 ...


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

使用道具 举报

30

主题

210

回帖

2778

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2159 个
贡献
206 次
宅之契约
0 份
在线时间
480 小时
注册时间
2016-7-12
发表于 2017-8-3 10:07:40 | 显示全部楼层
在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性
回复 赞! 靠!

使用道具 举报

55

主题

275

回帖

9352

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
8217 个
贡献
251 次
宅之契约
0 份
在线时间
254 小时
注册时间
2014-2-22
 楼主| 发表于 2017-8-3 10:11:48 | 显示全部楼层
Ayala 发表于 2017-8-3 10:07
在消息循环里创建控件 方便InputBox模块化 方便移植 支持更多的属性

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

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24225 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2017-8-3 14:12:12 | 显示全部楼层
美俪女神 发表于 2017-8-3 09:43
对的,这个InputBox是只支持单线程使用的。。。顺带问下,在WM_CREATE里创建控件有啥好处? ...

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

使用道具 举报

0

主题

6

回帖

37

积分

用户组: 初·技术宅

UID
2709
精华
0
威望
2 点
宅币
27 个
贡献
0 次
宅之契约
0 份
在线时间
3 小时
注册时间
2017-7-20
发表于 2017-8-31 12:32:40 | 显示全部楼层
学习一下。 
回复 赞! 靠!

使用道具 举报

0

主题

1

回帖

9

积分

用户组: 初·技术宅

UID
2904
精华
0
威望
0 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-9-25
发表于 2017-9-25 08:07:33 | 显示全部楼层
66666666666666666666666
回复 赞! 靠!

使用道具 举报

0

主题

3

回帖

18

积分

用户组: 初·技术宅

UID
5425
精华
0
威望
2 点
宅币
11 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2019-12-6
发表于 2019-12-6 12:49:03 | 显示全部楼层
来学习看看
回复 赞! 靠!

使用道具 举报

9

主题

176

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8670 个
贡献
850 次
宅之契约
0 份
在线时间
338 小时
注册时间
2018-9-19
发表于 2019-12-7 00:51:57 | 显示全部楼层
我觉得最好像WinAPI那样外部定义CHAR或WCHAR数组,通过参数传缓冲区地址和长度给函数,InputBox函数内部又正好可以通过SendMessage发送EM_LIMITTEXT限制Edit控件的最大输入长度等于缓冲区大小(避免缓冲区越界访问),缓冲区数组可以设计成双向参数(初始显示缓冲区原来的旧文本,确定后把输入的新文本覆盖进去)。
回复 赞! 靠!

使用道具 举报

0

主题

48

回帖

69

积分

用户组: 小·技术宅

UID
8099
精华
0
威望
2 点
宅币
17 个
贡献
0 次
宅之契约
0 份
在线时间
9 小时
注册时间
2022-10-22
发表于 2022-11-23 22:43:00 | 显示全部楼层
学习一下
回复

使用道具 举报

0

主题

22

回帖

47

积分

用户组: 初·技术宅

UID
7859
精华
0
威望
2 点
宅币
21 个
贡献
0 次
宅之契约
0 份
在线时间
9 小时
注册时间
2022-5-24
发表于 2022-12-11 13:49:14 | 显示全部楼层
学习下
回复

使用道具 举报

1

主题

42

回帖

977

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
600 个
贡献
110 次
宅之契约
0 份
在线时间
130 小时
注册时间
2021-9-11
发表于 2022-12-14 11:50:18 | 显示全部楼层
所以有最终形态的代码吗 想学习
回复 赞! 靠!

使用道具 举报

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

GMT+8, 2024-4-19 13:04 , Processed in 0.043053 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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