摘要: 问题现象描述如下:Detected memory leaks!Dumping objects ->f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp(306) : {271} client block at 0x0056B5F8, subty... 阅读全文
posted @ 2014-12-30 22:13 hhj_321 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 首先声明一下,如果你是用visual studio 2012 写的MFC的项目,同时你的项目属性上选择的是“多字节字符集”的话,效果就是同图一,而你选择的是“unicode字符集”的话,生成的窗口属性,可能就有win7的风格了。但是,你又想选择多字节的字符集(MBCS),而又想有win7的风格,那如何下手了?引用一下msdn的说明http://msdn.microsoft.com/en-us/library/bb773175(v=VS.85).aspx最简单的方法,就是在你的代码前面加入下面的编译杂注,不过你的IDE一定要为vs2005或以后的版本#pragma comment(linker, 阅读全文
posted @ 2014-02-14 11:18 hhj_321 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1.首先确认你在Windows XP下,因为如果在98或2K下,那除非自己重画画所有界面,要不基本上是无法实现XP风格的。Your app description here 2.将上述代码保存为*.txt文件; 3.假设在你的目录c:\abc下有一个可执行文件abc.exe,我们把刚才建立的文件拷贝到c:\abc下,并把名字改为abc.exe.manifest,这时候你可以运行abc.exe,看看是不是已经具有了XP风格了?依次类推,在每一个你想改为XP风格的程序的统一目录里建立一个上面说的文件,并把名字改为可执行文件的名字加上".manifest"的扩展名(注意,不要把那 阅读全文
posted @ 2014-02-14 11:12 hhj_321 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 这是因为你的对话框有控件,这样默认焦点就落在某一按纽之上,消息由该控件响应.解决方法是重载PretranslateMessage()BOOL CMyTextDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message == WM_KEYDOWN) { if( pMsg->wParam==8 )//pMsg->wParam的值就是对应的按键值 messagebox("Back... 阅读全文
posted @ 2014-01-21 22:57 hhj_321 阅读(577) 评论(0) 推荐(0) 编辑
摘要: PostMessage()的原型为:BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 这样写模拟按钮按下事件:PostMessage(WM_COMMAND, MAKEWPARAM(ID_BTN_OK, BN_CLICKED), NULL); 其中这里的 WM_COMMAND是要发送的消息, MAKEWPARAM宏是为了组成一个WPARAM,WM_COMMAND消息的WPARAM的低字为控件ID,高字为识别码, 最后一个参数LPARAM可为NULL.相关定义可查看MSDN. 阅读全文
posted @ 2014-01-17 09:15 hhj_321 阅读(1399) 评论(0) 推荐(0) 编辑
摘要: 以下为具体的实现方法:加入一个新类,类名:CMyButton,基类:CButton。在头文件 MyButton.h 中加入以下变量和函数定义:private:intm_Style;//按钮形状(0-正常,1-当前,2-按下,3-锁定)BOOLb_InRect;//鼠标进入标志CStringm_strText;//按钮文字COLORREFm_ForeColor;//文本颜色COLORREFm_BackColor;//背景色COLORREFm_LockForeColor;//锁定按钮的文字颜色CRectm_ButRect;//按钮尺寸CFont*p_Font;//字体voidDrawButton( 阅读全文
posted @ 2013-12-11 16:07 hhj_321 阅读(1283) 评论(0) 推荐(0) 编辑
摘要: 首先在你的工程的 "res目录" 下建一个文件, 命名 windows.manifest 后缀为:.manifest然后用记事本打开放入 Windows Shell 保存.. 然后导入资源,把文件windows.manifest添加到工程的资源中: 插入->资源->引入->文件类型改为“所有文件"->找到windows.manifest->弹出对话框资源类型 填"24"(这个好像只能填24,我也不知道什么意思,有明白的可以留言告诉我,谢谢!)->确定后再把资源的ID改为"IDR_MANIFEST&q 阅读全文
posted @ 2013-12-07 10:49 hhj_321 阅读(325) 评论(0) 推荐(0) 编辑
摘要: (1)、新建一个mfc单文档工程(在这里工程名称取名为Your)(2)、在CYourView中定义一个全局变量 CYourView* g_cView;(3)、在需要访问的类中添加好相应的头文件,再次申明变量 extern CYourView* g_cView; g_cView->成员; //访问视图类中的成员 g_cView->GetDocument()->成员; //访问文档类中的成员不建议使用如下方式访问,如果在多线程先使用,用的不好的情况可能会出现一些不可预见的问题... CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m 阅读全文
posted @ 2013-10-18 10:58 hhj_321 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://blog.csdn.net/helinlin007/article/details/8072245在窗口刷新和绘制的过程中,常常需要用到窗口刷新函数。一般用于窗口图形刷新的函数有:UpdateWindows()、Invaldate()、InvaldateRect()。先说UpdateWindows(),当调用这个函数的时候,会立即让当前的窗口失效,然后对整个窗口立即进行重绘。UpdateWindows()函数调用的时候直接将OnPaint调用到目标窗口,使目标窗口立即进行重绘。而Invaldate()函数的调用则不会立即引起窗口重绘,因为Invaldate()函数是通过 阅读全文
posted @ 2013-10-17 16:22 hhj_321 阅读(242) 评论(0) 推荐(0) 编辑
摘要: //消除现有所有内容((CComboBox*)GetDlgItem(IDC_COMBOBOX))->ResetContent();//初始化for(int i=0; iAddString(strTemp);}//取得目前已经有的行数int iCount = ((CComboBox*)GetDlgItem(IDC_COMBOBOX))->GetCount();其他一些常用的函数: int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选中的行。 ((CComboBox*)GetDlgItem(IDC_C 阅读全文
posted @ 2013-10-15 22:26 hhj_321 阅读(847) 评论(0) 推荐(0) 编辑