文章分类 -  VC/MFC转载

上一页 1 2 3 4 5 6 7 8 9 下一页
GDI+ ColorMatrix的完全揭秘
摘要:无论是用何种语言,只要使用过Windows的GDI+的人对ColorMatrix都不陌生,我的BLOG文章中也多次提到过,并在《GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解》一文中对其功能作了较为详细的讲解,虽然自认对ColorMatrix使用已经相当熟练,但对其原理也是知其然而不知其所以然。直到前几天有位朋友就ColorMatrix实现图像去反功能不正常而问我(见http://topic.csdn.net/u/20080830/20/070c83de-d45b-441f-996e-3c68892855cd.html),我认为不大可能!众所周知,用RGB主对角线- 阅读全文
posted @ 2011-04-12 23:10 carekee 阅读(664) 评论(0) 推荐(0) 编辑
使用PostThreadMessage在Win32线程间传递消息
摘要:使用PostThreadMessage在Win32线程间传递消息2007-03-18 15:06PostThreadMessage的原型是这样的BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。但是要注意以下问题1 .PostThreadMessage有时会失败,报1444错误(Invalid thread identifier. )其实这不一定是线程不存在的原 阅读全文
posted @ 2011-04-12 23:09 carekee 阅读(2190) 评论(0) 推荐(1) 编辑
双缓存机制解决VC++绘图时的闪烁问题
摘要:显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、显示的图形为什么会闪烁?我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在 阅读全文
posted @ 2011-04-12 23:07 carekee 阅读(1442) 评论(0) 推荐(0) 编辑
VC++得到当前系统时间日期 GetSystemTime()
摘要:一、使用MFC可以用以下代码得到:CTime time = CTime::GetCurrentTime(); ///构造CTime对象 int m_nYear = time.GetYear(); ///年 int m_nMonth = time.GetMonth(); ///月int m_nDay = time.GetDay(); ///日 int m_nHour = time.GetHour(); ///小时 int m_nMinute = time.GetMinute(); ///分钟 int m_nSecond = time.GetSecond(); ///秒 // CTime time 阅读全文
posted @ 2011-04-12 10:49 carekee 阅读(3507) 评论(0) 推荐(0) 编辑
VC++6.0中内存泄漏检测
摘要:这篇文章是对2004-09-02日发表的《VC++6.0中简单的内存泄漏检测事例代码》(已经删除)的更新.对C++代码而言,内存泄漏问题虽然有诸多方法避免,但实际代码编写的时候,或出于自信或出于复杂性的考虑,常常还会用到原始的operator new,这不可避免的会带来内存泄漏的可能,不久前本人因为违反了"可用于被多态继承的基类其析构函数应当有virtual修饰"的法则( 一不小心就忘了写virtual ^_^ ),导致了内存泄漏,因此我觉得出于安全考虑,在代码中加入内存泄漏检查机制还是很必要的,也因为这次的内存泄漏事件促使我写出这一篇文章.VC++中本身就有内存泄漏检查的 阅读全文
posted @ 2011-04-08 10:45 carekee 阅读(253) 评论(0) 推荐(0) 编辑
VC关闭窗口退出
摘要:1、OnOK()或OnCancel()//只对窗口程序有用2、PostQuitMessage(0);//最常用3、ExitProcess(0);4、发送WM_CLOSE消息,如: SendMessage(WM_CLOSE, 0, 0); 5、TerminateProcess6、CDialog.Destroy() 7、exit(0);8、void CMainFrame::OnClose(){// TODO: Add your message handler code here and/or call defaultif (MessageBox("确定要退出吗?"," 阅读全文
posted @ 2011-04-06 13:36 carekee 阅读(8808) 评论(2) 推荐(2) 编辑
ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
摘要:ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏ON_NOTIFY 是控件向其父窗口发送消息处理的宏对这几个消息的理解要先了解一下Window消息的背景。在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件的句柄包含在lParam中。由于wParam和 lParam已经满了,当控件要向父窗口发送其它特殊消息同时附带很多信息的时候就没有地方可以存放它们了。所以Windows3.1中定义了许多其它的 消息种类,比如WM_VSCROL 阅读全文
posted @ 2011-03-24 15:52 carekee 阅读(1089) 评论(0) 推荐(0) 编辑
TN061:ON_NOTIFY及WM_NOTIFY消息
摘要:此技术文档提供了WM_NOTIFY消息的背景信息,并描述了在MFC程序中处理WM_NOTIFY的推荐(并且是最普通)方法。Windows 3.x的提醒消息在Windows 3.x,控件通过发送消息来通知父窗口事件的发生,例如鼠标点击,内容或选择的改变,控件背景绘制等。简单的提醒通过WM_COMMAND消息发送,消息的参数有提醒标志(如BN_CLICKED),控件ID(作为wParam)及控件句柄(lParam)。注意,由于wParam和lParam已被占用,因此没有办法传递更多的参数,这也是为什么只能通过这种方式发送简单提醒。例如在BN_CLICKED中,没有办法传递按键被点击时的鼠标位置。当 阅读全文
posted @ 2011-03-24 15:51 carekee 阅读(1131) 评论(0) 推荐(0) 编辑
CStringArray列表排序
摘要:CStringArray m_arrayFolderList;//CStringArray列表//功能:CStringArray列表排序//输入:无//输出:无void TF_PhotoGroupDlg::TF_SortFileNames(){int FileCount=m_arrayFolderList.GetSize();CString TmpStr;int iPos;if (FileCount>0){for(int i=0;i<FileCount-1;i++){TmpStr=m_arrayFolderList.GetAt(i);iPos = i;for (int j=i+1; 阅读全文
posted @ 2011-03-24 10:55 carekee 阅读(1042) 评论(0) 推荐(0) 编辑
vc删除文件夹
摘要://功能:删除非空目录文件夹//输入:DirName文件夹名//输出:删除是否成功//功能:迭代文件夹内文件,一个一个删除BOOL DeleteDirectory(char *DirName){CFileFind tempFind;char tempFileFind[200];sprintf(tempFileFind,"%s\\*.*",DirName);BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);while(IsFinded){IsFinded=(BOOL)tempFind.FindNextFile();if(! 阅读全文
posted @ 2011-03-24 10:53 carekee 阅读(4982) 评论(0) 推荐(0) 编辑
CListControl的用法总结
摘要:1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料” 2. 设置listctrl 风格及扩展风格 LONG lStyle; lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle &= ~LVS_TYPEMASK; //清除显示方式位 lSt 阅读全文
posted @ 2011-03-22 17:57 carekee 阅读(3601) 评论(0) 推荐(0) 编辑
关于BROWSEINFO结构
摘要:关于BROWSEINFO结构MFC程序 2009-01-11 15:47 BROWSEINFO的结构如下:typedefstruct_browseinfo{HWND hwndOwner; //父窗口句柄LPCITEMIDLIST pidlRoot; //要显示的文件夾的根(Root)LPTSTR pszDisplayName; //保存被选取的文件夾路径的缓冲区LPCTSTR lpszTitle; //显示位于对话框左上部的标题UINT ulFlags; //指定对话框的外观和功能的標志BFFCALLBACK lpfn; //处理事件的回调函数LPARAM lParam; //应用程序传 阅读全文
posted @ 2011-02-18 10:15 carekee 阅读(2640) 评论(0) 推荐(0) 编辑
[VC]“打开文件夹”对话框并获得文件夹的全路径
摘要:view plaincopy to clipboardprint?01.BROWSEINFO bBinfo; 02.memset(&bBinfo, 0, sizeof(BROWSEINFO)); 03.bBinfo.hwndOwner = m_hWnd; 04.bBinfo.lpszTitle = _T("请选择路径: "); 05.bBinfo.ulFlags = BIF_RETURNONLYFSDIRS; 06.char strTmp[255]; 07.sprintf(strTmp,""); 08.LPITEMIDLIST lpDlist; 09.lpDlist = SHBrows 阅读全文
posted @ 2011-02-18 10:09 carekee 阅读(3835) 评论(0) 推荐(0) 编辑
VC常见问题20110217
摘要:1编译时遇到下面错误: F:\Program Designer\Program\c++\CloseWindow\CloseError.rc (70): error RC2176 : old DIB in res\ProgramDefaults.ico; pass it through SDKPAINT 这是由于载入的资源文件(ProgramDefaults.ico)是真彩色,即3个字节的,而VC6.0只支持256色,因此出现错误!接近方法:用图标小作坊修改2MFC里的函数前面加::是什么意思如果::前是空的,那么是全局对象,具体点说就是Window API的函数::ReleaseCapture 阅读全文
posted @ 2011-02-17 15:29 carekee 阅读(544) 评论(0) 推荐(0) 编辑
ShockWaveFlash控件中VC2008中应用
摘要:AlignMode (读写) 语法:AlignMode As Long 说明:对齐方式(与 SAlign 属性联动)。当控件的 长宽比例与影片不一致且 WMode 不为 ExactFit 时,影片 (没有被放大的)在控件中显示的位置可用该属性调整。 该属性值由标志位组成。如图,将该属性值(二进制)中相 应的位标记为 1 就设置了相应的对齐方向。 属性值与相应的对齐方式(后面括号里是二进制数) 1:左对齐(0001)  2:右对齐(0010)  4:顶对齐 (0100)  8:底对齐(1000) 也可以组合各种对齐方式,同时将两个或以上的位标 记为 1 ,也就是将这四个基本值组合相加。比如同时左 阅读全文
posted @ 2011-01-31 15:34 carekee 阅读(1272) 评论(0) 推荐(0) 编辑
从VC6.0到VC2008
摘要:一、_WIN32_WINNT 与 _WIN32_IE 设置冲突 _WIN32_WINNT 与 _WIN32_IE设置不兼容会导致如下C1189致命错误: StdAfx.cppc:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error : _WIN32_WINNT settings conflicts with _WIN32_IE setting StdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。产生这个错误的原因是原因是_W 阅读全文
posted @ 2011-01-31 15:33 carekee 阅读(1447) 评论(0) 推荐(0) 编辑
禁止标题栏的双击事件
摘要:重载DefWindowProc,在里面截获WM_NCLBUTTONDBLCLK消息进行处理: LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if( message == WM_NCLBUTTONDBLCLK && (INT)wParam == HTCAPTION ) { return 0; } return CDialog::DefWindowP 阅读全文
posted @ 2011-01-31 15:30 carekee 阅读(1481) 评论(0) 推荐(0) 编辑
VC中树形控件(CTreeCtrl)的使用
摘要:树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。成员hParent 父项的句柄。如果这个成员的值是TVI_ROOT或NULL,这项将被作为树形控件的根插入。 hInsertAfter 插入的新项之后的项的句柄。或是下列值之一: 值意味 TVI_FIRST在列表的开始插入项 TVI_LAST在列表的最后插入项 TVI_ROOT作为一个根项添加 TVI_SORT以 阅读全文
posted @ 2011-01-31 15:29 carekee 阅读(2649) 评论(0) 推荐(0) 编辑
VC下一行中并列停靠多个工具栏
摘要:第一个工具栏:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){ TRACE0("Failed to create toolbar\n"); return -1; // fail to create}m_wndToolBar.Set 阅读全文
posted @ 2011-01-31 15:28 carekee 阅读(577) 评论(0) 推荐(0) 编辑
static 用法总结(转)
摘要:static关键字是C、C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1) 局部静态变量 静态局部变量有两个用法,记忆功能和全局生存期. (2) 外部静态变量/函数 用于全局变量,主要作用是限制此全局变量被其他的文件调用 (3) 静态数据成员/成员函数 表示这个成员是属于这个类但是不属于类中任意特定对象 下面就这三种使用方式及注意事项分别说明 一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register 与auto类型(普通)局部 阅读全文
posted @ 2011-01-31 15:26 carekee 阅读(596) 评论(0) 推荐(1) 编辑

上一页 1 2 3 4 5 6 7 8 9 下一页