- 博客(49)
- 资源 (15)
- 收藏
- 关注
原创 CreateEvent,OpenEvent成功后 是否需要::CloseHandle(xxx); 避免句柄泄漏
bool bExist = false; HANDLE hHandle = ::CreateEvent(NULL, FALSE, FALSE, L"Global\\xxxxx_name");if (hHandle && ERROR_ALREADY_EXISTS == GetLastError()){bExist = true;::OutputDebu
2015-01-29 11:00:57
4229
原创 C++ try catch 捕获空指针异常,数组越界异常
#include #include using namespace std;//project -> Properties -> C/C++ -> Code Generation --> Enable C++ Exceptions//选择 Yes with SEH Exceptions (/EHa) 这样的话C++的try catch 也可以捕获到空指针,内存越界,0除异常//默认
2014-12-22 10:50:38
21244
7
原创 VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透
在初始化中使用下面两行代码ModifyStyleEx(0, WS_EX_LAYERED);::SetLayeredWindowAttributes(m_hWnd, RGB(1, 255, 0), 100, LWA_COLORKEY); //set color transparent,指定透明的颜色然后在OnEraseBkgnd或者OnPaint中CRect re
2014-12-17 13:30:47
6460
原创 窗口在掉标题栏不显示, 最小化后左下角有残留的问题
在窗口内使用ModifyStyleEx(0, WS_EX_TOOLWINDOW);可以去使窗口不在任务栏显示。但是又遇到一个问题,最小化后 在屏幕左下角出现了一个160*27的小窗口(win7下),这个对话框还可以拖动,双击显示主窗口。不想显示在任务栏肯定是有原因的,结果左下角又出现小窗口,目的未达到,本来以为是标题栏没去掉,使用ModifyStyle(WS_CAPTION, 0);
2014-12-15 11:08:53
2604
转载 将窗口置顶的方法:SetWindowPos、AttachThreadInput、SwitchToThisWindow
将窗口置顶的方法:SetWindowPos、AttachThreadInput、SwitchToThisWindow[转]http://hi.baidu.com/neil_danky/item/f9dca0ca36a79811515058d3 方法一:使用定时器,然后在定时器响应函数中定时调用,SetWindowPos()函数,第一个参数写H
2014-12-05 14:03:01
6102
原创 fatal error LNK1123: failure during conversion to COFF: file invalid or corr
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出
2014-10-25 22:11:46
725
原创 BEGIN_SINK_MAP(CMainDlg) SINK_ENTRY(IDC_EXPLORER1, ..。响应不到的
class CMainDlg : public CAxDialogImpl, public CUpdateUI, public CMessageFilter, public CIdleHandler, public IDispEventImpl{public: enum { IDD = IDD_MAINDLG }; virtual BOOL PreTranslateM
2014-06-12 17:08:55
1597
原创 GDI+ 对象释放崩溃的问题
确保在Gdiplus::GdiplusShutdown(m_gdiplusToken); 之前delete 掉GDI+的对象,例如:delete *pBitmap;如果先Gdiplus::GdiplusShutdown(m_gdiplusToken);再delete *pBitmap; 程序会崩溃。有时候会为了方便误将Gdiplus::GdiplusShutdown(m_gdiplusTo
2013-12-03 15:22:04
3044
原创 WTL error C3861: 'DDX_Control': identifier not found
error C3861: 'DDX_Control': identifier not found 继承类加上 public CWinDataExchange, public CCustomDraw
2013-12-02 14:20:45
1453
原创 win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式
用WTL编写的程序,编译成release后,在win7上关闭后,弹出这个对话框处理方法:将这个xml文件命名成 xxx.exe.manifest,保存到指定目录下 右键工程->properties-->Configuration Properties-->Manifest Tool-->Input and Output-->additional Ma
2013-12-02 14:15:38
3631
原创 VS的工程宏,比如$(SolutionDir) 的含义及查找
Configuration->General->Output Directory->单击编辑框点下拉箭头-> 图1图2
2013-12-02 13:44:31
4914
原创 vector中resize和reserve的区别,代码验证
#include using namespace std;int main(){ vector resizeVect; vector reserveVect; resizeVect.resize(50, 2); //立即分配50个int,每个值为2,默认值为0,如果是class默认构造函数 vector::iterator ite
2013-11-04 11:48:13
682
原创 使用wininet向FTP服务器发送文件
.h#pragma once#include #include #include #include using namespace std;class WininetFtpClient{public: WininetFtpClient(void); ~WininetFtpClient(void);public: bool ConncetServe
2013-11-01 14:17:07
697
原创 GBK转utf-8,宽字符转窄字符
//GBK转UTF8string CAppString::GBKToUTF8(const string & strGBK) { string strOutUTF8 = ""; WCHAR * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new
2013-10-16 16:12:03
955
原创 Windows上右键git菜单出来的原因
Windows上右键git菜单出来的原因Git下载地址https://code.google.com/p/msysgit/downloads/list?q=full+installer+official+gitGit右键菜单,见图(1-1)图(1-1)使用1.7.8版本好像不能出现右键菜单,试了好几次,和1.7.11相比没有Advanced context menu的单选钮选项
2013-10-16 11:22:54
2327
原创 C语言格式化输出,空位补0,空位补空格
char strTtimeDump[512] = ""; int a = 5; sprintf(strTtimeDump, "%.4d", a); //strTtimeDump输出0005 数字前补3个0 sprintf(strTtimeDump, "%4d", a); //strTtimeDump输出 5 数字前补3个空格
2013-10-09 11:27:39
27405
原创 选择法排序,冒泡排序,递归排序
#include //选择排序void SelectSort(int *p, const int length){ if (p == NULL) { return; } for (int i = 0; i<length; i++) { int k = i; //记
2013-10-08 14:11:07
1089
原创 C++ 字符串分割,分割到vector中
#include #include using std::string;using std::vector;int splitStringToVect(const string & srcStr, vector & destVect, const string & strFlag);int main(){ string str = "asdasdas \n, sadas
2013-06-25 17:52:02
3843
原创 MFC CToolTipCtrl 总是显示
.h CToolTipCtrl *m_pToolTip;.cpp if(!m_pToolTip) { m_pToolTip = new CToolTipCtrl(); m_pToolTip->Create(this, TTS_ALWAYSTIP); //TTS_ALWAYSTIP m_pToolTip->AddTool(
2013-05-29 14:07:57
1144
原创 GDI+ 为了阴影和透明,使用双层窗口遇到的一些问题
在wnidows C++ 客户端开发中,使用GDI+和png透明或者异形图片,结合UpdateLayeredWindow 双层窗口,可以实现透明,阴影,异形的效果。 其原理便是背景窗口使用UpdateLayeredWindow,刷新png图片,前景窗口作为实际窗口放一些空间,但前景窗口实际上是透明的,这样可以点击移动背景窗口,然后当背景窗口移动时,移动前景窗口。1.当时候产品马上要发布
2013-04-28 21:11:24
1851
原创 GDI+ 双缓冲
BOOL CXXXDlg::OnEraseBkgnd(CDC *pDC){ CRect rect; this->GetClientRect(rect); if(!m_pBkImage) //定义的一个成员变量 { m_
2013-04-27 18:28:20
1062
原创 VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
托盘上的菜单右键弹出后,然后再别的地方,比如桌面,菜单无法隐藏掉,一直在托盘上,除非操作下菜单才能隐藏掉,只需要加上一句话::SetForegroundWindow(m_nid.hWnd); 就可以解决这个问题。void CXXXDlg::CreateTray() { m_nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); //NOT
2013-04-26 16:49:32
895
原创 使用CImage双缓冲
void CXXXButton::OnPaint(){ CPaintDC dc(this); CRect rect; this->GetClientRect(&rect); int imageW = m_pImage->GetWidth(); //m_pImage你自己的成员变量,自己去定义吧。 int imageH = m
2013-04-22 18:20:46
1740
1
原创 VC 注册表读写
BYTE Vals[256];HKEY hKEY;//打开注册表,判断注册表项是否存在if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\WeldTech\\AirCondition\\"), 0, KEY_READ|KEY_WRITE, &hKEY) != ERROR_SUCCESS){
2013-03-31 15:48:29
1750
原创 error LNK2023: bad DLL or entry point 'msobj80.dll' 解决方法
一觉睡起来,程序编译就这个错误。搜了搜。我的解决方法是在http://www.dllku.com/M/msobj80.dll.html下载msobj80.dll,替换Microsoft Visual Studio 8\Common7\IDE的msobj80.dll。 就好了。
2013-03-31 15:46:29
1757
原创 tinyxml汉字乱码,UTF8转GBK
在解析读取tinyxml时候,发现读取汉字都是乱码,所以需要转成GBK static wstring ConvertUTF8toGBK(const char * strUTF8) { int len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUTF8, -1, NULL,0); TCHAR * wszUtf8 = new TC
2013-03-31 15:45:19
2475
1
原创 VC++, 重启程序
TCHAR pBuf[MAX_PATH]; GetModuleFileName(NULL,pBuf,MAX_PATH); STARTUPINFO startupinfo; PROCESS_INFORMATION proc_info; memset(&startupinfo,0,sizeof(STARTUPINFO)); startupinfo.cb=sizeof(STARTUPINFO)
2013-03-31 15:43:38
909
原创 VS2008 不能创建C++的项目,解决方法
安装完成后,创建C#,VB项目都正常,也能打开VC++的项目,就是不能创建VC++的项目,创建后就停在导航界面,那个next和previous 显示不出来,完成,取消按钮点击都没反应,只能点X关闭。网了找了一些解决方法,最后解决了 方法1:在注册表找到键值“HKCU\Software\Microsoft\Windows\CurrentVersion\Internet
2013-03-31 15:42:05
1773
原创 VS2008中 没有QT的代码智能提示
2008本身自带有注释,本人不太喜欢VC助手把界面弄的很烦。配好QT环境之后,发现QT的代码没有智能提示,VC的代码却有智能提示。原因是QT的一些文件没有包含到VS2008中,做了以下包含: 项目属性->Configuration Properties->VC++ Directories (1) 选择“Excutable Directo
2013-03-31 15:41:08
1528
原创 库头文件的导入导出宏
//xxx.h#ifdef CFG_API_BEING_COMPILED#ifdef WIN32#define CFG_API_EXPORT __declspec(dllexport)#else#define CFG_API_EXPORT#endif#else#if defined(WIN32) #define CFG_API_EXPORT __declspec(dllimpor
2013-03-31 15:37:26
1144
原创 改变QTableWidget 行高
int wide = m_pFieldTable->columnWidth(0);int nRow = m_pFieldTable->rowCount();for(int i =0; i<nRow; i++){ m_pFieldTable->setColumnWidth(0, wide); m_pFieldTabl
2013-03-31 15:34:21
20136
原创 改变QlistWidget的行高
void test2::InitListWideget(){ m_pList = new rootDataList(this); m_pList->setGeometry(LIST_X, LIST_Y, LIST_W, LIST_H);QString str; for(int i = 0; i<10; i++) { str.setNum(i); QListW
2013-03-31 15:33:08
21243
原创 QMenu,QT的菜单添加
添加菜单方法1 m_pMenuBar= new QMenuBar(this); QMenu*pFileMenu = new QMenu("&文件",m_pMenuBar); QMenu*pOpenMenu = new QMenu("打开", pFileMenu); QMenu*pCreateMenu =
2013-03-31 15:31:19
6062
原创 QT,QAction中的ToolTip
QAction ( const QString & text, QObject * parent )QAction ( const QIcon & icon, const QString & text, QObject * parent )QAction的两个构造函数中的text参数,文档的描述是:The action uses a stripped version of
2013-03-31 15:30:00
2743
原创 QT 修改QTableWidget表头
void NodeConfigDlg::initNodeTable(){ m_pNodeTable = new QTableWidget(this); QStringList headerString; m_pNodeTable->setColumnCount(6); m_pNodeTable->setRowCount(2); QGridLayo
2013-03-31 15:28:40
9608
原创 得到弹出菜单QMenu的高度
void xxxClass::xxxFun(){ m_StartMenu->addAction(act); m_StartMenu->addSeparator(); //如果没有这句,得到的sumHeight是菜单项的值;有了这句得到就是菜单总的高度 //,很奇怪 int sigleHeight = m_StartMenu->actio
2013-03-31 15:27:49
1865
原创 QT的一个奇怪问题,设置了Qt::Tool后,点击弹出对话框的确定取消按钮,程序直接退出
Alright, I found the reason. QWidget::create() clears the Qt::WA_QuitOnClose attribute for anything but Qt::Window, Qt::Widget or Qt::Dialog. The workaround is to call for example QWidget::show() firs
2013-03-31 15:26:31
1956
原创 QT线程初次使用。遇到的问题。
#include class OpenProThread : public QThread{ Q_OBJECTpublic: OpenProThread(QObject *parent = 0) { } ~OpenProThread() {}
2013-03-31 15:25:11
754
VC++实现通过adb检测android设备是否连接到usb
2014-06-10
隐式调用dll和显式调用dll
2013-07-26
firebreath开发NPAPI插件
2012-12-20
CListCtrl的图片格式 关联CImageList,显示缩略图
2012-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人