VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 170|回复: 7

根据课程部分修改及疑问

[复制链接]
84_avatar_middle
最佳答案
0 
在线会员 发表于 2020-3-18 16:53:19 | 显示全部楼层 |阅读模式
本帖最后由 magshines 于 2020-3-19 00:56 编辑

1、 根据课程部分修改及疑问
线程里循环messagebox不会提示

2、 根据课程部分修改及疑问
为什么CString strPath = (LPCTSTR)lParam;可以获得路径??

3、下边不知道怎么获得文件名,就想通过将\及前边字符全部置0或者空解决,
但是总是报错: error C2106: “=”: 左操作数必须为左值
如果是“0”会报:error C2440: “=”: 无法从“const char [2]”转换为“wchar_t”


求解上述问题是什么原因啊,怎么解决啊
根据课程部分修改及疑问


根据课程部分修改及疑问




上一篇:关于sql的操作
下一篇:一般游戏服务器用啥框架c++的
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-3-18 17:30:21 | 显示全部楼层
1、在单独的工作线程中不要去操作界面上面的控件,文本内容最好通过变量来传递,不要直接调用 GetLBText 之类的操作控件的函数,小则获取不到值,大则程序崩溃;

2、为什么CString strPath = (LPCTSTR)lParam;可以获得路径?这个就要看这个消息是怎么发送过来的,如果发送过来的时候lParam就是字符串的地址,那么这里面这样调用肯定可以正常获得到这个字符串了啊,所以为什么能获取到关键的话还是看看这个消息的发送的位置;

3、GetModuleFileName 获得到的就是整个文件的路径,例如:D:\abc\123.txt
通过如下代码就可以
TCHAR szFileName[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szFileName, MAX_PATH);
TCHAR* pFlag = _tcsrchr(szFileName, '\\');
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-18 18:01:50 | 显示全部楼层
Syc 发表于 2020-3-18 17:30
1、在单独的工作线程中不要去操作界面上面的控件,文本内容最好通过变量来传递,不要直接调用 GetLBText 之 ...

1,、获取不到值应该是空吧,但是为什么MessageBox不会弹出?
2、这是多线程实例课程里的课件,我直接抄过来的,实在不理解,还有为什么LPCTSTR强转
3、我想获得的是,filename=123.txt,strPath=D:\abc
4、多线程实例课程里的发送消息是postmessage换成了sendmessage,通过判断postmessage返回值使用postmessage就没问题了吧BOOL btrfu=postmessage();if(btrfu)postmessage.这样可以吗
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-3-18 20:57:46 | 显示全部楼层
magshines 发表于 2020-3-18 18:01
1,、获取不到值应该是空吧,但是为什么MessageBox不会弹出?
2、这是多线程实例课程里的课件,我直接抄 ...

1、获取不到值应该是空吧,但是为什么MessageBox不会弹出?
不知道你的hText和mtext是什么类型,如果是 CString 的话直接用 hText.GetLength() 就可以了,为什么还要用 lstrlen 求一下长度呢?

2、这是多线程实例课程里的课件,我直接抄过来的,实在不理解,还有为什么LPCTSTR强转
因为lParam是 LPARAM 类型,不强转的话编译是不过的。

3、我想获得的是,filename=123.txt,strPath=D:\abc
这个没明白你的原始路径是多少?想获取多少?
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-18 21:37:19 | 显示全部楼层
本帖最后由 magshines 于 2020-3-18 22:04 编辑
Syc 发表于 2020-3-18 20:57
1、获取不到值应该是空吧,但是为什么MessageBox不会弹出?
不知道你的hText和mtext是什么类型,如果是  ...


第一个问题我放弃了

2、我不懂的是OnAddItem里的lPrarm为什么存下来的是地址,强转为什么用的LPCTSTR,我百度查了下回答的基本都是CString szPath = (CSring)lParam.

3、这个是在你原程序的基础上增加的,就是在OnAddItem函数里实现的,我就是想做个类似Everything那样的程序,可以获得文件名(包括文件夹,搜索的是子串),文件路径,大小(还不知道怎么实现),修改时间(搜索IsDirectory时看到FILEFIND类的子函数,应该可以实现)
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-3-18 22:26:55 | 显示全部楼层
magshines 发表于 2020-3-18 21:37
第一个问题我放弃了

2、我不懂的是OnAddItem里的lPrarm为什么存下来的是地址,强转为什么用的LPCTST ...

具体 OnAddItem 里的 lPrarm 为什么存下来的是地址?要看发送这个消息的地方发送的是什么!

看你的 OnAddItem 就是个自定义消息的响应函数,所以关键是看发送这个消息的时候 lParam 传的是什么类型
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-18 23:05:01 | 显示全部楼层
Syc 发表于 2020-3-18 22:26
具体 OnAddItem 里的 lPrarm 为什么存下来的是地址?要看发送这个消息的地方发送的是什么!

看你的 On ...

感觉上是明白了,OnAddItem(wparam(这个参数也没用,可以不写吗?),lparam)
84_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-19 00:49:26 | 显示全部楼层
本帖最后由 magshines 于 2020-3-19 00:57 编辑
Syc 发表于 2020-3-18 17:30
1、在单独的工作线程中不要去操作界面上面的控件,文本内容最好通过变量来传递,不要直接调用 GetLBText 之 ...


老大,图片不显示,我放问题里了
根据课程部分修改及疑问
后边加上[1]报错
不加[1]输出结果有个反斜杠\,并且setitemtext没运行
根据课程部分修改及疑问
这是什么问题啊
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-18 17:53

Powered by CcTry.CoM

© 2009-2020 cctry.com

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