MFC
iLoveHeineken
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
位图显示
前段时间想用VC的对话框来动态地显示一副BMP位图,查了很多篇文章发现都写的很复杂(而且貌似许多都是复制粘贴而来),真正有价值的不多.其实VC显示BMP文件是很方便的,所有的代码加在一起也不过五六行而已.因而特此将自己的经验写上blog,希望能对需要的人有所帮助. 要想在VC中动态显示位图,有两种比较简单的方法: 1.显示已添加为为工程资源的位图转载 2012-08-23 12:08:40 · 655 阅读 · 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 评论 -
动态绑定/解绑控件变量和控件
如果不解除绑定会出现错误。CMyButton *pBtn = new CMyButton;if(pBtn.GetSafeHwnd()) { pBtn.UnsubclassWindow(); }pBtn.SubclassDlgItem(IDC_BUTTON2, this);原创 2012-12-24 11:31:37 · 558 阅读 · 0 评论 -
虚拟列表
一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1转载 2012-12-27 14:57:03 · 996 阅读 · 0 评论 -
TCPRecv() / WSAGetLastError() 返回的代码对应错误
下面列示了用户在 Windows 操作系统上使用 TCP/IP 时,可能最常遇到的错误代码。它不是完整的错误列表。可以在文件 winsock2.h 中找到 WSAGetLastError() 返回的错误。如果您未安装开发环境,则在您的系统上可能未安装此文件。在“Windows 套接字 2 应用程序编程接口”中说明了关于特定函数返回的错误的更多信息。可以从下列 Web 站点获取此规范的副本:http转载 2012-12-31 11:05:49 · 962 阅读 · 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 评论 -
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 评论 -
非模态对话框显示/不显示在任务栏
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 评论 -
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 评论 -
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 评论 -
对话框的销毁。
前几天发现自己的程序中使用非模态对话框,Debug版本有警告提示如下:Warning: calling DestroyWindow in CWnd::~CWnd OnDestroy or PostNcDestroy in derived class will not be called由于是Warnning,就没有太在意,后来随意上网一找发现,这个问题还是很严重的问题。最后转载 2013-03-18 11:50:02 · 857 阅读 · 0 评论 -
MFC自绘控件常识
1、按钮、标签、列表框(ListBox)、组合框(ComboBox)、菜单等,在父窗口的WM_DRAWITEM消息里绘制2、列表视图(ListView、ListCtrl)在WM_NOTIFY消息的NM_CUSTOMDRAW里绘制没有这些消息的再考虑WM_PAINT3、如果上述消息不能实现,所有窗口、子窗口都有WM_ERASEBKGND(绘制背景)、WM_PAINT(绘制内容)消息4转载 2013-03-22 09:13:57 · 1415 阅读 · 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 评论 -
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 评论 -
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 评论 -
C++中什么情况下要使用静态变量,我们为什么要使用静态变量
静态变量,一直没怎么用,也不知道什么时候用到。下面的两句话总结得好到位。(1)Static表示普通变量时,是为了避免不同的文件中同名,将这个同名变量限制在当前CPP文件中使用。定了Static变量时,在这个文件中都可以使用。(2)Static修饰类的成员变量,是为了将当前变量限制为类的变量,而不是类实例的变量。该变量可以用来在类的外面进行初始化,而不受类构造函数的影响。比如可以转载 2013-08-28 14:47:11 · 2671 阅读 · 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 评论 -
EditControl控件如何总是显示到最后一行
m_Edit.LineScroll(m_Edit.GetLineCount()-1,0);转载 2012-10-10 16:53:41 · 2188 阅读 · 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 评论 -
MFC改变文本字体
方法一:步骤一:在Dlg类中增加一个类成员变量: CFont m_editFont;注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。步骤二:在OnInitDialog方法中增加下列语句:m_editFont.CreatePointFont(180, "宋体");m_editPlace.SetFont(&m_edi转载 2012-08-23 12:11:23 · 696 阅读 · 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 评论 -
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 评论 -
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 评论 -
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 评论 -
托盘技术
托盘技术主要涉及到一个结构体(NOTIFYICONDATA)和一个函数(Shell_NotifyIcon)。NOTIFYICONDATA结构体包含系统需要用来传递托盘区域消息的信息。其原型如下:typedef struct _NOTIFYICONDATA { DWORD cbSize; //一般是sizeof(NOTIFYICONDATA)HWND hWnd; //转载 2012-08-23 12:14:01 · 1191 阅读 · 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 评论 -
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 评论 -
只允许启动个一个进程
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 评论 -
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 评论 -
VC/MFC子窗体向父窗体传递参数的几种方法
典型问题举例 窗体和子窗体均有一个Edit控件和一个按钮,点击父窗体按钮显示子窗体;点击子窗体按钮后,子窗体中Edit控件的值显示在在父窗体中的Edit控件中。在MFC中实现子窗体向父窗体传递参数的几种方法简述 1、在父窗体定义静态变量 2、传窗体的指针给子窗体 3、子窗体调用GetParent 4、向父窗体sendMessage转载 2012-09-29 14:24:58 · 1636 阅读 · 0 评论 -
TRACE( " "); 和 TRACE0( " ")
类似与printf,不过只有在debug模式下面才有用。eg:TRACE( "TT is :%d ",tt);原创 2012-09-17 10:08:18 · 1504 阅读 · 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 评论 -
飘云阁(PYG)番茄插件流氓弹窗清除方法
之前不小心安装了一个飘云阁制作的番茄插件,每次打开VS都有一个弹窗,最近终于找到清除方法:清除VS安装目录(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE)下的version.dll...原创 2018-03-01 13:59:24 · 7671 阅读 · 15 评论
分享