(1)CListCtrl改变数据避免闪烁:法一:直接设置LVS_EX_DOUBLEBUFFER扩展属性。法二:使用双缓冲。自定义一个类CMyListCtrl继承CListCtrl,重写OnPaint和OnEraseBkgnd方法void CMyListCtrl::OnPaint() { //使用双缓冲的方法绘制背景 CPaintDC dc(this)
// TODO: 在此添加额外的初始化代码 LONG lStyle = ::GetWindowLong(m_List.GetSafeHwnd(), GWL_STYLE); lStyle |= LVS_REPORT; ::SetWindowLong(m_List.GetSafeHwnd(), 
在mfc中,若想对 单选 按钮进行分组,则每一组用一个Group Box来进行区分,然后将每组中的第一个(正确的说法是每组中的索引最小的--Ctrl+D的值最小为第一个按钮)单选按钮 Group 属性设为True。
转载地址:http://blog.csdn.net/jjq64557/article/details/6651471 CEdit 控件更新内容大概有如下几种方法:1、关联CString变量。先改变CString变量的值,然后调用UpDateData(FALSE)来更新控件。如果需要滚动至末尾一行,可以调用来完成。EditOutCtrl.LineScroll(EditOutCtrl.GetLineC
首先创建一个菜单,ID分别为IDM_FILE_NEW,IDM_FILE_OPEN,IDM_FILE_CLOSE。分别对菜单各项进行响应。在OnInitDialog()中,添加标题栏菜单:HMENU hMenu = ::LoadMenu(::GetModuleHandle(nullptr), MAKEINTRESOURCE(IDR_MENU1)); ::SetMenu(this->GetSaf
转载地址:http://blog.csdn.net/nanfeiyannan/article/details/6212090今天修改一程序的Bug,修改了半天,终无头绪。后猛然发现是因为双击的时候,也是响应单击消息函数。遂google,发现:Windows系统在系统的双击时间限制里双击鼠标左键调用OnLButtonDBlClk,双击鼠标左键实际上产生4个事件:WM_LBUTTONDOWN WM_L
在OnInitDialog()函数里,mfc对系统菜单进行了处理,要想对你的程序增加属于你自己的系统菜单,可在其基础上进行修改,最后在进行响应.具体步骤如下:(1)定义属于自己的系统菜单ID,此ID必须<0xF000,这样才不会跟系统使用的ID产生冲突。#define IDM_SYS_SELF 1(2)在OnInitDialog里面增加如下红色内容:ASSERT((IDM_ABOUTBOX
法一:以拖动按钮为例:从CButton派生一个CMyButton类,在窗体中增加一个按钮控件,用类向导声明控件变量为CMybutton m_ctrlButton,在CMyButton中增加一个消息句柄函数MOUSEMOVE的消息,然后在OnMouseMove函数中增加如下代码void CMyButton::OnMouseMove(UINT nFlags, C
在MFC中,要获取CListCtrl的所有列信息,可通过如下方法:LVCOLUMN lvcol; CString strColumnName;//列名 lvcol.mask = LVCF_TEXT|LVCF_SUBITEM|LVCF_WIDTH|LVCF_FMT; lvcol.pszText = strColumnName.GetBuf
(1)取当前工作目录:相关函数:get_current_dir_name, getwd, chdir头文件:#include定义函数:char * getcwd(char * buf, size_t size);函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。注:1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录
转载地址:http://blog.csdn.net/ke_yang/article/details/5417643 VC中的绘图有个比较棘手的问题是闪烁,双缓存是解决此类问题的一种方法,但是在系统绘图中,由于可能要加载滚动条,响应鼠标拖动等事件,导致传统的双缓存方法不一定适用,本文提出了一种解决方法能够用统一的框架内实现滚动条,鼠标图型拖动,视口转换以及双缓存绘图.关键字:双缓存,滚动条,鼠标拖动
转载地址:http://blog.csdn.net/starlee/article/details/1472710 现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着一个媒体文件放到它的主窗口中,它就会开始播放这个文件。  
转载地址:http://blog.csdn.net/friendan/article/details/17457483注:我测试的环境为VS2010+MFC,实现步骤简单3步即可。第一步设置窗体的Accept Files属性为True-----------------------------------------------------------------------------------
转载地址:http://blog.sina.com.cn/s/blog_4ed1e0e40100g8ag.html今天碰到一个问题:如何在程序A中模拟Tab按键消息发送给前台窗口(foreground window)?正常情况在对话框程序中,用户敲击Tab键后,窗体会收到WM_KEYDOWN消息,wParam为VK_TAB,而MSG结构中的hwnd则为上一个拥有键盘焦点的控件的窗口句柄。在程序A中
(1)屏蔽本程序的鼠标信息和特定按键信息。设置后门按键F2可退出程序。HHOOK g_hKeyBoard; HHOOK g_hMouse; LRESULT CALLBACK MouseProc( _In_ int nCode, _In_ WPARAM wParam, _In_ &
BOOL CALLBACK SendQQ(HWND hwnd, LPARAM lParam){TCHAR szQQClassName[MAXBYTE];memset(szQQClassName, '0', sizeof(szQQClassName));GetClassName(hwnd, szQQClassName, MAXBYTE);if (0 == StrCmpW(szQQClassName,
假设现在有一个窗口,其句柄为hWindow,窗口上有一按钮控件IDC_BTN_OPEN,若希望通过发送消息的方法实现点击该按钮控件(即使窗口最小化也能实现点击功能),可通过PostMessage方法。具体方法:1.通过::FindWindow()方法找到该窗口句柄 hWindow。 2.在P
转载地址:http://my.oschina.net/871120/blog/2881451. 热键的使用热键不用了的话一定要卸载,否则下次启动时会被占用。函数原型注册函数BOOL RegisterHotKey( HWND hWnd, // handle to window int id, // h
转载地址:http://blog.csdn.net/blackboyofsnp/article/details/3372719有时我们需要这么做, 手动模拟按钮按下的事件, 让程序做出与按钮真的按下时一样的响应. 设按钮ID为ID_BTN_OK, 当前Dialog窗口. 实际上系统并不能区分按钮是真的按下了(如用鼠标点击), 还是一个我们自己用代码模
一篇对CListCtrl用法介绍较详细的文章:http://www.cnblogs.com/wind-net/archive/2012/10/30/2745817.htmlCListCtrl的最基本使用方法:定义样式DWORD dwStyle = m_listctrl.GetExtendedStyle(); dwStyle |= LVS_EX_FU
转载地址:http://blog.csdn.net/hiside/article/details/5724666MFC 非模态对话框MFC非模态对话框的创建: 用MFC创建非模态的对话框,和模态对话框创建方式不同,模态对话框用 dlg.DoModel()调用,而非模态对话框要用create函数创建调用。/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/ CTestDlg&
(1).向配置文件Init.ini中写入数据:CString strtemp(_T("xxx.xls")); ::WritePrivateProfileString(_T("Init"), &nb
使用ShellExecute来执行open操作 例如要打开D盘下的Test文件夹,如下 ShellExecute(NULL,"open","D:\\Tset",NULL,NULL,SW_SHOWNORMAL);
功能:弹出文件夹选择对话框,并实现对文件夹的选择。方法:由于MFC自带的CFileDiag是只能选择文件的,无法定制只能选择文件夹的对话框。然后当需要操作文件夹,批量操作文件时,需要用WIN32API实现。代码:void CChaneFileNameDlg::OnBtnOpen() { // TODO: Add your&
假设现有一个对话框窗口,要获取该窗口内的一个编辑框控件的指针。方法:HWND hdlg = ::FindWindow(NULL,_T("DialogName"));//获取窗口句柄if(hdlg == NULL){ MessageBox(_T("获取窗口句柄失败!")); return;}HWND hEdi
函数功能:实现两个对话框间的通信。父窗口通过点击openSubDlg按钮(IDC_BTN_OPEN)弹出子对话框(非模态),通过点击Send按钮(IDC_BTN_SEND)实现将编辑框中(IDC_EDIT_SEND)的内容发送到子对话框的编辑框(IDC_EDIT_RECEIVE)内容。同理,子对话框可通过点击Send按钮(IDC_BTN_SEND)实现将其编辑框中的内容发送给父对话框的编辑框。实现
函数功能:创建一个树控件,并实现双击节点响应事件。响应方法:在树控件上增加双击响应事件。代码:1.在OnInitDialog中: CTreeCtrl *ctreectrl = (CTreeCtrl *)GetDlgItem(IDC_TREE1); //调用ModifyStyle方法修改数控件Sytle ctre
函数功能:在基于对话框的MFC程序中实现按键响应,键盘按下哪个键,将其键码显示出来。(未对除数字键和字母键之外的其他键进行屏蔽)方法:右键点击对话框类-》add virtual function(添加虚拟函数)-》PreTranslateMessage代码:BOOL CKEY_DOWNDemoDlg::PreTranslateMessage(MSG* pMsg)&n
功能实现:主窗口内有一CListBox,希望鼠标右键点击CListBox编辑框内时,实现响应。方法:1.新建一个CNewListBox类继承于CListBox,并添加右键响应。 2.将主窗口的CListBox关联到CNewListBox类(即CNewListBox类的一个对象是主窗口的CListBox控件:CNewListBox m_listbox,所以m_
MFC学习方法
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号