简单总结这周的代码中的一些问题:
1.char* 与const char*转换的问题
string a="123";
char *a1=new char(strlen(a));
strcpy(a1,a.c_str());//string.c_str()返回const char*
2.线程函数调用非静态类函数或者调用类对象的成员解决:
线程函数的参数中传入指向类对象实例的指针。
3.VS编译时发生R6010-abort()has been called 错误:
非法指针访问和泄露
指针访问内存越界出现问题
内存不够分配
多线程访问资源出问题
exe,dll混用不同版本的crt( C run-time library c运行时的库,具体请看链接)
4.std:;thread 头文件:phread
std::thread test(threadfun,data);//对应线程函数以及线程函数的参数,与windows不一样,参数不需要为void*
test.join();
test.detach();//分离或者结合,必须要为线程选择一种状态
5.ScrollWindows()以及InvalidateRect()区别
两者都是通过产生WM_PAINT信号对无效区域进行重画。
但是产生的无效区域不一样。ScrollWindow()函数是将画面整体上移或下移,然后空缺的部分为无效区域,而InvalidateRect()可以指定具体的无效区域或者整体进行重绘。此外两者效果不一样,ScrollWindow()会在滚动条实现时产生背景色重绘导致不流畅的感觉,InvalidateRect()则无这种感觉。