随笔分类 - MFC
high-speed chart 编译报错GetSerie(size_t) const”:“CChartCtrl”中没有找到重载的成员函数
摘要:high-speed chart 报错: ChartCtrl.cpp(621): error C2511: “CChartSerie *CChartCtrl::GetSerie(size_t) const”:“CChartCtrl”中没有找到重载的成员函数 修改CChartSerie* CChart
阅读全文
解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
摘要:Source目录 |-- stdafx.h |--Util目录 |--Util.h |--Util.cpp 现在的发现Util.cpp各种变量的定义全是红色波浪线,找不到定义,但是却能够编译过 问题就出在Util.cpp中的第一行 #include "stdafx.h" 其实该路径是查找不到对应文件
阅读全文
MFC菜单自动折叠的问题
摘要:http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/5482103e-272b-4c9f-bac4-be15f14782bd 解决办法You don't want the "intellegent menus" feature, some menu items are hidden, and you have to click to show the whole menu?To disable this feature, go to CMainFrame::OnCreate. You will
阅读全文
0xC0000008错误
摘要:今天傍晚发现一个问题 0xC0000008关闭程序时 提示这个错误其实是因为 delete了一些没有初始化或者已经被delete的指针引起的第二个原因是自己没有定义某些类的析构函数如class A{ P*p;}class B{ A *a=new A; P p; a.p=&p;~B(){delete a;}}此时当B析构时,会析构掉p,而A因为保存了一个P的指针,因此使用默认的析构函数时也会delete p;但是此时p的实体已经在B中析构了,此时delete p就会引起错误。
阅读全文
c++写一个类后编译发现class重定义
摘要:这种问题经常都是头文件互相包含导致的在h文件开头加上#pragma once这样这个头文件只编译一次避免了这个问题
阅读全文
MFC中修改dockpane的位置生成的程序却没有生效的问题解决
摘要:MFC中修改dockpane的位置生成的程序却没有生效的问题,例如原来的dockpane在左边,我突然改到右边,生成的程序去没有发生变化,dockpane还在左边,这是因为当前程序已经在注册表中添加了程序了信息,解决办法如下:解决办法如下: 1、在APP类中的InitInstance()函数中有SetRegistryKey,其功能是记录程序中的一些注册表信息 2、当你调试多次的时候,注册表记录的信息可能会换乱,最终造成程序停靠窗口的初始化停靠位置无效 3、在注册表中搜索SetRegistryKey的参数字符串如:SetRegistryKey(_T("Local AppWizard-G
阅读全文
转:将CFormView嵌入到CDockablePane中
摘要:第一步:将两个空白的CDockablePane嵌入到MainFrm中:1,利用类向导,添加两个基类为CDockablePane的类CDock1,CDock2;2,在MainFrm.h中添加Dock1.h和Dock2.h的头文件;并派生两个子类protected:CDock1 m_dock1;CDock2 m_dock2;CDockablePane* m_pTabbedBar;3,在MainFrm的OnCreate()里面添加:(最好接着EnableAutoHidePanes(CBRS_ALIGN_ANY);这句后面添加)if(!m_dock1.Create("Dock1",
阅读全文
一个失败的案例,一个线程创建非模态对话框,主线程做其它事,对话框按钮不能响应鼠标
摘要:#include "afxwin.h"#include "STOPDialog.h"class UIWorker : public CWinThread{ DECLARE_DYNCREATE(UIWorker); public: UIWorker(void); ~UIWorker(void); bool CreateMyDlg( void ); void SetOwnerWnd( HWND hWnd ); void DestroyMyDlg( void ); bool GetDoneFlag(); BOOL InitInstance(); int Exi
阅读全文
VC调试时如何监视数组的一部分
摘要:VC调试时如何监视数组的一部分比如你有一个数组int a[100];调试时一展开有100项太长了,而你只关心前10项,这时只须添加监视,输入a,10这样就只监视前10项了如果想监视第11项到第20项呢?输入a+10,10就可以了。
阅读全文
GDI+的image的clone方法
摘要:GDI+的image的clone这个方法貌似只是一种浅复制,没有达到复制数据的效果,好像只是对数据的引用,不知道对不对还是要用new Bitmap(path)的方法算了
阅读全文
C++ 无法从void 转换为 LRESULT
摘要:C++ 无法从void 转换为 LRESULT问:“static_cast”: 无法从“void (__thiscall CGraspBmpDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”这行出问题ON_MESSAGE(WM_HOTKEY,OnHotKey)我都没看懂……答:你这个应该是一个MFC程序,ON_MESSAGE是添加消息响应函数,这句话就是添加热键WM_HOTKEY的响应函数。当你注册了热键之后,当用户按下热键,会执行OnHotKey函数来处理这个消息。错误就应该是OnHotKey这个
阅读全文
VS2008 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/dlgdata.cpp 错误调试
摘要:在VS2010 运行一个C++程序,出现下图错误:qQg平坦软件园qQg平坦软件园一看到这个,我头都大了。关键是 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/dlgdata.cpp 这个路径根本在我计算机不存在。但是估计在安装目录下。qQg平坦软件园联想到最近更新到VS2010_sp1 ,但是发行包:qQg平坦软件园en_visual_c++_2010_sp1_redistributable_package_x86_651767qQg平坦软件园没安装,安装后再试,还是出错。qQg平坦软件园为了找到dlgdata.cpp 我用了下面的自己写的搜索工具,qQ
阅读全文
多线程 GetThreadValue(int nSlot)问题
摘要:inline void* CThreadSlotData::GetThreadValue(int nSlot){ EnterCriticalSection(&m_sect); ASSERT(nSlot != 0 && nSlot < m_nMax); ASSERT(m_pSlotData != NULL); ASSERT(m_pSlotData[nSlot].dwFlags & SLOT_USED); ASSERT(m_tlsIndex != (DWORD)-1); if( nSlot <= 0 || nSlot >= m_nMax ) //
阅读全文
关于线程同步与双队列性能(续)
摘要:4遇到的问题1、如何解决printf导致两个线程频繁切换?这个问题的解决方法在前面已经明确了,就是分配一个很大的输出缓冲区,在写到一定程度时再一次性用printf输出,避免printf的频繁调用。最好实在程序结束时输出统计和信息。2、在使用锁之后,是否会导致线程的频繁切换?这也是我的疑问,后来在windows上做了一个实验证明了不同的锁会引起不同的线程调度行为。DWORD WINAPI ThreadProc(LPVOID){charbuf[1000];LARGE_INTEGER li;for(inti = 0; i < 100; ++i){LOCK();//这是个宏,用于切换使用各种锁t
阅读全文
关于线程同步与双队列性能(转载)
摘要:关于线程同步与双队列性能1问题背景2第一种方式,共享队列3第二种方式,双队列4遇到的问题关于线程同步与双队列性能2009年7月12日星期日1问题背景这是在2008年3月学习多线程编程时遇到的一个问题。当时我写了一个代码片段,其中两个线程共享一个队列,一个线程往队列中写数据,而另一个线程从队列中读取数据。这是典型的生产者和消费者模型。但在这里并不适合使用semaphore来做。由于当时的我对多线程编程不太熟练,在线程中大量使用了printf输出调试信息,printf是典型的IO操作会引起线程的切换,所以打出来的信息也显示了线程切换十分频繁,几乎每一个数据入队列后,就立即被另一个线程抢占,并出队列
阅读全文
浙公网安备 33010602011771号