为了账号安全,请及时绑定邮箱和手机立即绑定

屋顶打字通(一)--第一次写windows微小程序开源一下

标签:
C++

如果说我学的东西杂,那么学得精的就是这个小程序了,第一次学会了看API,然后按照自己的意愿完成了全部的内容,我自己写了这个打字通,没什么新颖的地方,基本的打字通功能罢了,不打字的时候,显示的字体是灰色,当键入文字后,如果正确就显示蓝色,错误就显示红色,同时会开始计时,进度条会前进,那么打字的内容是从哪里来的呢?我选择了简单的从TXT文件读取,指定一个文件,保存一些预存的TXT文件,然后读取该文件夹下的全部TXT文件。我使用的是Visual Studio 2015,代码基本用的是C和少量的C++代码。头疼的地方有很多,例如我之前没接触过Unicode编码,然而VS2015默认就是U码的工程,我认为这是趋势,所以尽量用U码,就会出现宽字节的转换,经常出现访问越界或者用量分配不足,我还用到了多线程编程,计时器就是我写的另外一个线程,它的显示很麻烦,所以我的代码很拙劣,尽管拙劣,我觉得我还是学到很多,而且和之前不一样的时候成就感非凡。当我做完一部分的时候我还兴奋的推出了我这个RoofType 1.0版本,然后发现了好多问题,ListBox的修改和计时器线程有问题,我目前已经修改了计时器的线程,因为那个问题只是我忘记了修改变量,很好解决,而ListBox的问题还没有解决,我之前有写过刷新的函数

void RefreshList(HWND lview) {	char * filePath = ".\\MyResource";	vector<string> files;
	getFiles(filePath, "txt", files);	int size = files.size(),pos;	string s;
	LVITEM vitem;
	vitem.mask = LVIF_TEXT;
	SendMessage(lview, LVM_DELETEALLITEMS, 0, 0);	for (int i = 0; i < size; i++){
		pos = files[i].find_last_of('\\');
		s = (string)(files[i].substr(pos + 1));		wchar_t * pUnicode = ConvertLPSTRtoLPWSTR(s.c_str());
		vitem.pszText = pUnicode;
		vitem.iItem = i;
		vitem.iSubItem = 0;
		SendMessage(lview, LVM_INSERTITEM, i, (long)&vitem);
	}
}

这个刷新函数,思想就是先从指定路径下的文件夹里面读取TXT文件,然后将文件名加入到ListBox里面,而且在加入之前我还清空了该控件就是这句SendMessage(lview, LVM_DELETEALLITEMS, 0 , 0);   在我想解决问题之前,是没有这句的,我是这样想的才加入这句的,就是如果我每次调用这个函数的时候,都清空之前的内容,然后再次添加,这样就可以让这个函数实现更新列表的内容,因为在SendMessage的时候除了传列表控件句柄、消息名和消息内容,还要传送序号,我不想保存我已经这个序号,而选择重复使用这段代码来解决,然而失败了,因为当我给指定文件夹添加文件后,再次调用这个函数的时候,ListBox的列表直接被清空了。

我通过获取绝对路径解决了列表被清空的问题,所以我单独写了个函数,把所有的相对路径改为了绝对路径,目前的所有BUG都解决了。


<span style="font-size:14px;">wchar_t* GetCurrentPath(wchar_t * target) {
	LPWSTR PointPath = NULL;
	wchar_t *cppoint = 0;
	cppoint = new wchar_t[MAX_PATH];
	cppoint[0] = 0;
	GetModuleFileName(NULL, cppoint, MAX_PATH);//获得绝对路径
	(_tcsrchr(cppoint, _T('\\')))[1] = 0;//截掉exe文件名
	if (target) {//根据需要粘贴指定字符串
		wcscat_s(cppoint, MAX_PATH, target);//给路径添加MyResource
	}	
	PointPath = cppoint;
	return PointPath;
}</span>




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消