GSR项目总结-VC相关
Posted 轩辕泪1020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GSR项目总结-VC相关相关的知识,希望对你有一定的参考价值。
0. 摘要
1. 操作数据库
师弟把东西写了一个模块,和项目合并的时候出现了错误如下:
- 将Excel操作的类直接导入到工程,不能识别。参考:https://blog.csdn.net/phenixyf/article/details/51149811 |解决办法:按照参考重新添加一遍,觉着应该是工程内部文件需要更改。这个就不懂了(哎!不懂的这么多啊!)
- LNK1107 错误,无法链接.dll文件,在添加附加依赖项时将.lib写成了.dll,这个其实也不懂。(哎,哎,哎!你啥都不懂,你搞毛软件?将就着搞呗,谁让人家是新工科呢!)
2. 文件操作相关
2.1 判断文件是否存在。
参考https://blog.csdn.net/u012494876/article/details/51204615 (大神你这样显摆真的好吗?哎,就拿你的成果默默码代码吧!)。下面是你的大道流GetFileAttributes
:
// 判断文件是否存在
BOOL IsFileExist(const CString& csFile)
DWORD dwAttrib = GetFileAttributes(csFile);
return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 == (dwAttrib & FILE_ATTRIBUTE_DIRECTORY);
// 判断文件夹是否存在
BOOL IsDirExist(const CString & csDir)
DWORD dwAttrib = GetFileAttributes(csDir);
return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 != (dwAttrib & FILE_ATTRIBUTE_DIRECTORY);
// 判断文件或文件夹是否存在
BOOL IsPathExist(const CString & csPath)
DWORD dwAttrib = GetFileAttributes(csPath);
return INVALID_FILE_ATTRIBUTES != dwAttrib;
// 变变变变变种(听说会更快一点),见备注1
BOOL IsPathExist(const CString & csPath)
WIN32_FILE_ATTRIBUTE_DATA attrs = 0 ;
return 0 != GetFileAttributesEx(csPath, GetFileExInfoStandard, &attrs);
备注1:https://blog.csdn.net/dragoo1/article/details/44492239
2.2 文件操作对话框
这个用来不下10遍了,就是不愿意记下来!
参考:http://www.jizhuomi.com/school/c/166.html
2.3 MessageBox的用法
这个……,哼,谁能记住这么多!
参考:https://blog.csdn.net/holybin/article/details/28403109
3. 多线程操作
这个地方主要是为了实现一个等待对话框,这个对话框可以是有进度的,也可以是无进度的。
3.1 多线程间的通讯以及等待对话框
参考:https://blog.csdn.net/qq61394323/article/details/25334293
3.2 SendMessage(),PostMessage(),PostThreadMessage ()使用
参考:https://blog.csdn.net/HolaMirai/article/details/46346091
3.3 出现的问题与总结
- possMessage第一个参数句柄需要传输准确,在实验利用GetItemDlg函数获取数据库窗口时,发现并不能得到,具体原因未知(哎哎!你就不追究了?)。自己的解决办法是将窗口的句柄作为参数传到另一个线程(好吧,你投机取巧了!),最后的结果还是可以的。windows消息机制(MFC)
- 在纠结上一个问题时,在调试的情况下,尝试一下代码,发现了问题,具体原因没有去追究(啥时候你能改了这个毛病啊)。
在另外一个线程中执行以下操作,发现并不能实施,具体原因还不知道。
m_hMainDlgWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
CWnd * pWnd = NULL;
pWnd->Attach(m_hMainDlgWnd);
pWnd->SetWindowTextA(_T("See me!!"));
- 等待对话框如果需要显示完成百分比的话,使用多线程比较好,我的不一定,所以,我就是用gif图加载吧。插入gif资源的时候会出现点问题,详情请看参考文献2。参考文献:
- 美化自己的对话框--MFC显示GIF动画图片
- VS2008添加GIF资源
- DoModal 函数的用法–>执行完成之前,其他窗口不接受消息!!
4.出现的错误
4.1 error C2872 “IPicture” 不明确的符号
这个错误是由于使用Using namespace EXCEL造成的(第一次遇到命名空间的问题!哎,我好像提升了,但是怎么解决呢?)
解决方法:https://bbs.csdn.net/topics/240047506
在使用包含Using namespace EXCEL 的头文件前,先包含PictureEx.h,这个还是不行啊!
4.2 在使用自己定义的CStatic控件时的出错
4.2.1 Invalid(true)不好使
解决办法,使用UpdateWindows解决了。
4.2.2 CStaticBK–>SetValue不显示
这个BUG就更奇怪了,如果前面跟一个MessageBox,那么就不显示,如果没有MessageBox就显示正常。
感觉这个应该是CStatic自绘造成的问题。在自绘中的Invalide(TRUE);后面添加UpdateWindow();解决问题。
4.3 Expression Incorrect format specifier 0
转义字符出错,”%”号的正确输出方法是为”%%”
4.4 Debug Assertion Failed! File:afxwin1.inl Line:639
High-speed Charting Control–MFC绘制图表(折线图、饼图、柱形图)控件
嗯,这个是推广知识。
以上是关于GSR项目总结-VC相关的主要内容,如果未能解决你的问题,请参考以下文章