摘要: 大家都知道,有时候后需要动态建立一个数组,一位数组还好说,但是如果是二维数组则稍显麻烦一些。在VC中,一般位图的数据传输都是通过一个DWORD指针加上长宽共三个数据进行传输的,这样的缺点就是在代码里需要加点控制,而且在调试的时候比较容易溢出导致程序崩溃。但是能用好还是很不错的。最近在学习图论的遍历,这里就涉及到要先建立一个图。我首先想试验的遍历方法是深度优先遍历,所以觉得用邻接矩阵法好一点。如果我直接用上面的方法,或许就没那么多波折了。我用的是vector。这个在一维的时候相当好用,绝对是我见过的最好用的几种容器之一了。但是涉及到二维的时候,就出现了一点的麻烦。因为最外围的vector成员是v 阅读全文
posted @ 2013-06-09 23:49 Matrix_R 阅读(1859) 评论(0) 推荐(0) 编辑
摘要: 这个是昨天写的,但是今天才整理并贴出来~是这样的,C中的常识之一就是,const类型的值是不可修改的。但是我昨天在看书的时候想到所有位于内存中的数据其实都是可以修改的,就用代码尝试了一下,代码如下:#include <iostream>using namespace std;int main(){ cout << "Hello world!" << endl; const int a = 10, b = 20; int c; int * np = (int *)&a; *np = 9; *(np + 1) = 19; c = a; 阅读全文
posted @ 2013-06-06 23:43 Matrix_R 阅读(6606) 评论(2) 推荐(0) 编辑
摘要: 在学校的论坛上看到有人出这样的一个问题:自然数的平方数为1 4 9 16 25……自然数的立方数为1 8 27 64 256……自然数的四次方为1 16 81 256……这些数字都可以成为次方数。在1到10000中,现在写一个C程序,去掉所有的次方数,问还剩多少个数字?这个问题我想了一下,觉得有点麻烦,如果单纯的把数字算出来,然后再统计,再除去重复值,估计效率不高,而且代码写起来比较麻烦。思路是这样的:创建一个vector,然后计算次方数,每算出一个次方数,就到vector中查询,如果里面没有,那么就添加进去,并且对次方数的计数+1。直到所有的次方数都被算出来,然后用10000- 次方数的个数 阅读全文
posted @ 2013-06-06 23:30 Matrix_R 阅读(12608) 评论(0) 推荐(0) 编辑
摘要: 今天在上机的时候尝试着去画一个图像。当时的想法是先创建一个内存DC,先在内存DC上绘图,然后再用bitblt函数将其拷贝到桌面DC上。代码很简单,先这样:CDC memDC;memDC.CreateCompatibleDC(pDC);……pDC->BitBlt(……);后面的相比你都明白的,但是在memDC上的绘图始终在pDC上看不到。回来之后再好好的看了看才发现,想在memDC上绘图并有效,必须还要创建一个兼容位图加选进去,才能绘图……坑死了~选中之后,果然就好使了…… 阅读全文
posted @ 2013-05-31 21:42 Matrix_R 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 刚才在看串口数据的接收问题。这里的话,最开始的时候需要在打开串口后,对串口使用SetCommEvent函数去设置通知事件。这里又涉及一个问题,就是一般SetCommEvent函数的第二个事件参数为EV_RXCHAR第一个参数不用想了,就是文件句柄。响应这个事件的函数是:WaitCommEvent在一个已经完成了的串口类中,也是调用这个函数去响应消息的,而且在后台线程函数中,这个函数同时调用了两个时间等待函数。第一个等待事件响应的就是这个函数,第二个则是著名的waitmultipleobjects函数。然后在其代码注释中,那位大神说这个函数在调用之后不会持续等待,而是立刻返回,原因就是这个串口是 阅读全文
posted @ 2013-05-28 18:48 Matrix_R 阅读(14311) 评论(0) 推荐(1) 编辑
摘要: 还是写那个串口调试助手出现的问题。这个函数原型如下:DWORD WaitForMultipleObjects( DWORD nCount, // number of handles in array CONST HANDLE*lpHandles, // object-handle array BOOL fWaitAll, // wait option DWORD dwMilliseconds // time-out interval);第一个参数就是句柄数组的成员数。第二个参数是句柄数组的地址第三个是一个等待选项,就是在这出的问... 阅读全文
posted @ 2013-05-26 09:36 Matrix_R 阅读(1908) 评论(0) 推荐(0) 编辑
摘要: 刚才在写一个小程序,需要在类中添加一个能开启后台线程的函数。为了能让线程函数参入到类中的数据处理,这个线程函数要么作为类的成员函数,要么设为友元函数。不过我对友元函数不太感冒,就没采用这种方法。但是,如果单纯的作为类的成员函数,那么这个又存在一个问题,就是因为成员函数隐含的this指针会导致线程函数不满足AfxBeginThread以及_beingthreadex等函数的参数要求。刚才在这里卡住了。函数声明都没问题,但是就差在this指针上。所以只要除去this指针就能实现要求。我们知道C++中,静态成员函数是不存在this指针的。接下来就很简单了,函数前面添加一个static就OK了~但是另 阅读全文
posted @ 2013-05-25 16:01 Matrix_R 阅读(2599) 评论(0) 推荐(0) 编辑
摘要: 今天中午的时候解决了这个问题。在使用document view结构的MFC程序时,在view上进行绘图绘画很简单,但是很容易导致的后果就是当窗口的尺寸改变的时候由于重绘会导致闪屏。这个效果还是比较捉急的,因为很难看。在网上看了什么双缓冲法解决闪屏问题,我觉得吧,有的真的是纯属扯淡。他们的代码我拿来试过的,都不好使,闪屏依旧。而且最恶心的就是只有一份原创,其余的好多都是抄的,连个引用都没有。首先,闪屏闪的时候能发现闪烁的背景色是白色,这个就说明了在重绘的时候,发生了屏幕擦写问题。在vc2010版的对应的MFC中,这个消息开头是是WM_ERASEBK。。。具体记不清了,我也懒得开编译器,但是只要你 阅读全文
posted @ 2013-05-14 23:10 Matrix_R 阅读(907) 评论(3) 推荐(0) 编辑
摘要: 刚才看到这个函数,可以用来改变窗口的属性,甚至如窗口过程的地址。百度百科上将的比较详细,链接如下:http://baike.baidu.com/view/1080272.htm 阅读全文
posted @ 2013-05-13 19:35 Matrix_R 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1 void qsort(int * array, int length) 2 { 3 if(length = KeyWord && j > i)11 -- j;12 swap(array[j], array[i]);13 while(array[i] i)14 ++ i;15 swap(array[i], array[j]);16 }17 qsort(array, i);18 qsort(&array[i] + 1, length - i - 1);19 }快排... 阅读全文
posted @ 2013-05-07 13:14 Matrix_R 阅读(256) 评论(0) 推荐(0) 编辑