C++
iLoveHeineken
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DLL in VS2005
一、动态链接库、静态库区别1、动态链接库(Dynamic Linked Library) Windows系统平台上你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空原创 2012-07-10 12:42:04 · 786 阅读 · 0 评论 -
TCPRecv() / WSAGetLastError() 返回的代码对应错误
下面列示了用户在 Windows 操作系统上使用 TCP/IP 时,可能最常遇到的错误代码。它不是完整的错误列表。可以在文件 winsock2.h 中找到 WSAGetLastError() 返回的错误。如果您未安装开发环境,则在您的系统上可能未安装此文件。在“Windows 套接字 2 应用程序编程接口”中说明了关于特定函数返回的错误的更多信息。可以从下列 Web 站点获取此规范的副本:http转载 2012-12-31 11:05:49 · 962 阅读 · 0 评论 -
VS2005中ON_WM_NCHITTEST宏编译不过。
afx_msg UINT OnNcHitTest(CPoint point);把afx_msg UINT OnNcHitTest(CPoint point);改成afx_msg LRESULT OnNcHitTest(CPoint point); 同时修改对应的函数LRESULT xxxxxxxxxxxxxxxx ::OnNcHitTest(CPoint point)转载 2012-12-28 14:50:18 · 2024 阅读 · 0 评论 -
CloseHandle(),TerminateThread(),ExitThread()的区别
线程的handle用处:线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问。该内存块是一种数据结构,它的成员负责维护对象的各种信息(eg: 安全性描述,引用计数等)。CloseHandle()在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,Cl转载 2012-12-27 10:17:57 · 561 阅读 · 0 评论 -
虚拟列表
一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1转载 2012-12-27 14:57:03 · 996 阅读 · 0 评论 -
动态绑定/解绑控件变量和控件
如果不解除绑定会出现错误。CMyButton *pBtn = new CMyButton;if(pBtn.GetSafeHwnd()) { pBtn.UnsubclassWindow(); }pBtn.SubclassDlgItem(IDC_BUTTON2, this);原创 2012-12-24 11:31:37 · 558 阅读 · 0 评论 -
更改指定控件颜色
CWnd* hWndCtrl = GetDlgItem(IDC_STATIC_AA); CRect rc; hWndCtrl->GetClientRect(&rc); CDC *dc=hWndCtrl->GetDC();CBrush b(RGB(0,255,0)); dc->FillRect(rc,&b);转载 2012-11-16 10:09:19 · 462 阅读 · 0 评论 -
WINDOWS环境下设置socket连接超时
众所周知,在进行网络编程的时候,如果使用系统connect函数,无法设置超时,而在连接一个不存在的主机时,将会一直阻塞。其实在调用connect函数时,将句柄设置为非阻塞,然后调用select函数,可以达到设置超时的效果。[cpp] view plaincopybool connect(char *host,int port,转载 2012-11-09 14:19:53 · 3284 阅读 · 0 评论 -
套接字Select
google了很多,这个总结得比较好。一.选择模型 Select模型原理利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数据。目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫进入阻塞状态。 select参数和返回值意义如下:int select ( IN int nfds,转载 2012-10-19 08:54:45 · 1816 阅读 · 0 评论 -
Client error C2440: “static_cast” : 无法从“void (__thiscall CTrueColorToolBar::* )(NMTOOLBARA *,LRESULT
vc7 中不用结构NMTOOLBARA 改用结构NMHDR,所以会报错。把函数OnToolbarDropDown()改成void CMainFrame::OnToolbarDropDown(NMHDR* pnmhdr, LRESULT *plr) { LPNMTOOLBAR pnmtb = reinterpret_cast(pnmhdr); ... }别忘了头文件里也要转载 2013-01-05 11:29:24 · 1585 阅读 · 0 评论 -
fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
WTL从低版本到高版本转换2个fatal error处理2009-09-17 10:27这两个fatal error是因为从低版本的WTL到高版本的WTL转变后产生的. 错误描述如下:1>正在编译资源...1>正在编译资源清单...1>正在链接...1>CVTRES : fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, language:0x0转载 2013-01-05 11:28:29 · 881 阅读 · 0 评论 -
C++中什么情况下要使用静态变量,我们为什么要使用静态变量
静态变量,一直没怎么用,也不知道什么时候用到。下面的两句话总结得好到位。(1)Static表示普通变量时,是为了避免不同的文件中同名,将这个同名变量限制在当前CPP文件中使用。定了Static变量时,在这个文件中都可以使用。(2)Static修饰类的成员变量,是为了将当前变量限制为类的变量,而不是类实例的变量。该变量可以用来在类的外面进行初始化,而不受类构造函数的影响。比如可以转载 2013-08-28 14:47:11 · 2671 阅读 · 0 评论 -
VS2005中使用GDI+准备工作
1.在stdafx.h文件中加入以下几句话: #include //将GDI+头文件加入到工程中 #pragma comment(lib, "gdiplus.lib") //将GDI+的lib文件加入到工程中 using namespace Gdiplus; //使用GDI+的命名空间 2.假设工程名叫abc,则在自动生成的abc.h文件中添加成员变量: prot转载 2013-08-15 11:41:55 · 718 阅读 · 0 评论 -
Unicode编码下面char *或者char数组转CString
最近开始使用unicode编码,直接str.fomat发现都是乱码,网上搜索到的解决方案: char * pFileName = "D://校内项目//QQ.bmp"; USES_CONVERSION; CString s = A2T(pFileName);转载 2013-08-14 11:43:40 · 837 阅读 · 0 评论 -
MFC中非模态对话框的创建和销毁
1、非模态对话框的创建:CTestDlg *pDlg=new CTestDlg;pDlg->Create(IDD_TESTDLG,this);pDlg->ShowWindow(SW_SHOW);2、非模态对话框的销毁:销毁非模态对话框只需要调用oncancel函数就可以了,但是要注意两点:非模态对话框需要重载函数OnCanel和PostNcDestroy,并且要在Oncanel原创 2013-05-26 07:06:46 · 1344 阅读 · 0 评论 -
MFC下面弹出一个选择文件夹对话框
BROWSEINFO bi; TCHAR szBuffer[MAX_PATH]; ZeroMemory(&bi,sizeof(BROWSEINFO)); memset(szBuffer,0,MAX_PATH); //bi.hwndOwner = NULL; //bi.pszDisplayName = szBuffer; //bi.lpszTitle = _T("Please sel转载 2013-03-13 10:33:44 · 1427 阅读 · 0 评论 -
VS2005在装有IE8的WIN xp下面无法添加控件变量的解决方法
Open regedit (on a 64-bit OS, open the 32-bit regedit) - Under “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones”, create a new key called 1000 (if原创 2013-01-21 16:51:20 · 537 阅读 · 0 评论 -
C++显示JPG图片
::CoInitialize(NULL); // COM 初始化 HRESULT hr; CFile file; file.Open( "c:\\aa.jpg", CFile::modeRead | CFile::shareDenyNone ); // 读入文件内容 DWORD dwSize = file.GetLength(); HGLOBAL hMem = ::GlobalAl转载 2013-01-17 10:54:42 · 8747 阅读 · 0 评论 -
非模态对话框显示/不显示在任务栏
pdlg->ModifyStyleEx(0,WS_EX_APPWINDOW);//任务栏显示pdlg->ShowWindow(SW_SHOW);pdlg->ModifyStyleEx(0,WS_EX_TOOLWINDOW);//任务栏不显示pdlg->ShowWindow(SW_SHOW);//任务栏显示,创建的时候以桌面为父窗口pDlg->Create(IDD_DIALOG1,G转载 2012-12-21 15:23:59 · 714 阅读 · 0 评论 -
TRACE( " "); 和 TRACE0( " ")
类似与printf,不过只有在debug模式下面才有用。eg:TRACE( "TT is :%d ",tt);原创 2012-09-17 10:08:18 · 1504 阅读 · 0 评论 -
C++按位异或运算符
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0例如:10100001^00010001=101100000^0=0,0^1=1 0异或任何数=任何数1^0=1,1^1=0 1异或任何数-任何数取反 任何数异或自己=把自己置0(1)按位异或可以用来使某些特定的转载 2012-10-09 09:54:41 · 875 阅读 · 0 评论 -
双缓冲技术
/////////////////////////////////////////////////////////////////////////////如下的做法能避免绘图闪烁////主要思想是将以前直接画在pDC上的图,改画到一个内存DC(如dcMem)中去,//然后使用BitBlt函数,将dcMem这个内存中的图复制到当前屏幕即pDC中去.////具体步骤如下,转载 2012-08-23 12:12:40 · 2135 阅读 · 0 评论 -
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
在VS2005中生成时出错:error C4430: missing type specifier - int assumed. Note: C++ does not support default-int这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整型。但是vs2005不支持默认整型。解决方法如下:打开:项目----项目属性----配置属性----C/转载 2012-08-23 12:10:33 · 1541 阅读 · 1 评论 -
MFC改变文本字体
方法一:步骤一:在Dlg类中增加一个类成员变量: CFont m_editFont;注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。步骤二:在OnInitDialog方法中增加下列语句:m_editFont.CreatePointFont(180, "宋体");m_editPlace.SetFont(&m_edi转载 2012-08-23 12:11:23 · 696 阅读 · 0 评论 -
位图显示
前段时间想用VC的对话框来动态地显示一副BMP位图,查了很多篇文章发现都写的很复杂(而且貌似许多都是复制粘贴而来),真正有价值的不多.其实VC显示BMP文件是很方便的,所有的代码加在一起也不过五六行而已.因而特此将自己的经验写上blog,希望能对需要的人有所帮助. 要想在VC中动态显示位图,有两种比较简单的方法: 1.显示已添加为为工程资源的位图转载 2012-08-23 12:08:40 · 655 阅读 · 0 评论 -
error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CchatDlg::* )(CPoint)' to 'UI
出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的 ON_WM_NCHITTEST 宏使用了 UINT (__thiscall CWzButton::* )(CPoint); 类型的类成员函数指针,其定义如下: #define ON_WM_NCHITTEST() / { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, /转载 2012-08-23 12:09:57 · 1037 阅读 · 0 评论 -
Tcp编程基础
服务端://1. 使用WSAStartup()初始化套接字库.相当于分配网络资源。//可以想到有个对应释放资源的函数WSACleanup()WSADATA wsaData;// WORD wVersionRequested = MAKEWORD(1, 1);int err = WSAStartup(0x0101, &wsaData);if (err != 0){转载 2012-08-23 12:15:39 · 422 阅读 · 0 评论 -
自定义消息步骤
1、定义消息:如 #define WM_TIMER_CLOCK WM_USER+22、映射消息:如 ON_MESSAGE(WM_TIMER_CLOCK, OnClock)3、在.h文件中声明消息函数:如afx_msg LRESULT OnClock(WPARAM wParam, LPARAM lParam);4、在.cpp文件中实现消息函数。转载 2012-08-23 12:14:49 · 702 阅读 · 0 评论 -
托盘技术
托盘技术主要涉及到一个结构体(NOTIFYICONDATA)和一个函数(Shell_NotifyIcon)。NOTIFYICONDATA结构体包含系统需要用来传递托盘区域消息的信息。其原型如下:typedef struct _NOTIFYICONDATA { DWORD cbSize; //一般是sizeof(NOTIFYICONDATA)HWND hWnd; //转载 2012-08-23 12:14:01 · 1191 阅读 · 0 评论 -
list和tree
//初始化m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); //使listview整行选择,而不仅仅是某列m_imageList.Create(IDB_BITMAP1, 16, 1, RGB(0, 255, 0)); //根据位图资源,创建图像列表m_tree.SetImageList(&m_imageList, TVSIL_NORMAL);转载 2012-08-23 12:13:23 · 541 阅读 · 0 评论 -
error C2660: 'CWnd::HtmlHelpW ' : function does not take 4 arguments
该问题是在VC6.0转VS2005产生的,问题的根源是我们没有加域控制,没有弄清楚要調用CWnd::HtmlHelpW還是要調用api,在前面加上::就可以。比如:::HtmlHelp(m_hWnd, AfxGetApp()->m_pszHelpFilePath, HH_HELP_CONTEXT,nCmd == HELP_CONTEXT ? dwData : 0);原创 2012-08-24 08:46:59 · 2518 阅读 · 0 评论 -
C++ list control基本使用
1. ListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”-----原创 2012-09-17 09:52:53 · 1482 阅读 · 0 评论 -
VC/MFC子窗体向父窗体传递参数的几种方法
典型问题举例 窗体和子窗体均有一个Edit控件和一个按钮,点击父窗体按钮显示子窗体;点击子窗体按钮后,子窗体中Edit控件的值显示在在父窗体中的Edit控件中。在MFC中实现子窗体向父窗体传递参数的几种方法简述 1、在父窗体定义静态变量 2、传窗体的指针给子窗体 3、子窗体调用GetParent 4、向父窗体sendMessage转载 2012-09-29 14:24:58 · 1636 阅读 · 0 评论 -
VS快捷键
Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIFT + F4显示项目属性窗口 CTRL + SHCtrl+E,D ---转载 2012-08-28 18:30:57 · 549 阅读 · 0 评论 -
只允许启动个一个进程
HANDLE hMutex = ::CreateMutex(NULL, FALSE, "test");if (hMutex && GetLastError() == ERROR_ALREADY_EXISTS){HWND hWnd = ::FindWindow(NULL, "测试程序");//窗口标题名if (hWnd){::ShowWindow(hWnd, SW_SHO原创 2012-09-05 11:49:23 · 662 阅读 · 0 评论 -
C++按回车键登录效果
重写PreTranslateMessage即可。eg:BOOL CLoginDlg::PreTranslateMessage(MSG* pMsg){// TODO: 在此添加专用代码和/或调用基类if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {if (IDC_EDIT_PASSWOR原创 2012-09-04 18:37:49 · 733 阅读 · 0 评论 -
TinyXML基础教程
开始之前一些 XML 数据集/文件将会被用到:example1.xml:Worldexample2.xml: Alas Great World Alas (again) example3.xml:转载 2012-08-25 08:51:29 · 522 阅读 · 0 评论 -
C++ Map的遍历
#include#include#includeusing namespace std;int main(){ map m; m["a"]=1; m["b"]=2; m["c"]=3; map::iterator it; for(it=m.begin();it!=m.end();++it) co转载 2012-08-25 08:33:58 · 1367 阅读 · 0 评论 -
cannot convert parameter 1 from 'std::string' to 'const char *'
在参数后面加c_str()解决问题。比如strtemp------------------------>strtemp.c_str()转载 2012-08-24 15:25:38 · 3019 阅读 · 0 评论 -
飘云阁(PYG)番茄插件流氓弹窗清除方法
之前不小心安装了一个飘云阁制作的番茄插件,每次打开VS都有一个弹窗,最近终于找到清除方法:清除VS安装目录(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE)下的version.dll...原创 2018-03-01 13:59:24 · 7671 阅读 · 15 评论
分享