VC/MFC
文章平均质量分 56
lebao82
成功是最好的证明
展开
-
CListCtrl检测checkbox是否被选中
对于有checkbox的列表框,有时我们需要通过选取checkbox触发一些事件,但控件CListCtrl中是没有这样一个事件,所以需要我们手动去实现它,具体过程如下:1、增加LVN_ITEMCHANGED事件;2、在事件响应中增加如下代码:LPNMITEMACTIVATE pNMLV = (LPNMITEMACTIVATE)pNMHDR;if((pNMLV->uOld转载 2013-05-16 17:40:21 · 4329 阅读 · 0 评论 -
VC中调用COM组件的方法
详见:http://write.blog.csdn.net/postedit方法一:向导中添加类 调出添加类向导,选择from a type library,选择com组件文件,接下来会出来该myCom中的所有接口,选择想生成的接口包装类后,向导会自动生成相应的类,然后增加该类的头文件,并增加如下代码: CoInitialize(NULL); CGetRes转载 2013-09-12 12:37:29 · 715 阅读 · 0 评论 -
修改TAB顺序值
关于改变Tab顺序的方法有以下几种:方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|WS_VISIBLE|WS_TABSTOP,其中WS_TABSTOP是影响TAB顺序的。先创建的控件TAB顺序在前。如果要颠倒TAB顺序的话,就把在创建控件时把WS_TABSTOP去掉,并增加对“TAB键被按下”事件的捕捉,人工使用SETFOCUS来控制TAB顺序。方法二:在转载 2013-09-16 22:23:23 · 3050 阅读 · 0 评论 -
文件及文件夹操作
1、判断文件或文件夹是否存在PathFileExists 函数可以用来查看一个文件或文件夹是否存在。用法:在头文件中#include #pragma comment(lib,"Shlwapi.lib") //如果没有这行,会出现link错误if (PathFileExists(strDBPath)){//存在}else //不存在原创 2013-09-18 11:10:43 · 764 阅读 · 0 评论 -
VC获取操作系统相关信息
1、获取系统版本 int a=0,b=0,i=0,j=0; _asm { pushad mov ebx,fs:[0x18] ; get self pointer from TEB mov eax,fs:[0x30] ; get pointer to PEB / database mov ebx,[eax+0A8h] ; get OSMinorVersion原创 2013-10-10 11:17:56 · 2570 阅读 · 0 评论 -
vc添加IE可信任站点
参考:http://www.2cto.com/kf/201303/193450.html CString Site; m_ctrlEdit_url.GetWindowText(Site); for(int j=1; j<100; j++) {//添加新项 HKEY hKey; DWORD lp_disp; //打开注册表 CString index;转载 2013-10-18 13:52:05 · 1863 阅读 · 3 评论 -
应用程序控制(自动启动、登录、退出等)
1、自动启动 PROCESS_INFORMATION lpProcessInformation; STARTUPINFO startupinfo; memset(&startupinfo,0,sizeof(STARTUPINFO)); memset(&lpProcessInformation,0,sizeof(PROCESS_INFORMATION)); startup原创 2013-10-26 14:28:18 · 952 阅读 · 0 评论 -
mfc事件响应特殊情况总结
1、对话框中ONCHAR、ONKEYDOWN不响应对话框是不会响应OnChar和OnKeyDown消息的,会被 其它控件拦截试时发现不会进入这两个函数,必须重定义PreTranslateMessage()虚函数才能正确地进入这两个消息函数,具体实现如下: BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { Se原创 2013-10-23 14:01:48 · 709 阅读 · 0 评论 -
贴背景图片
背景图片的加载一般是在onpaint()函数中实现,当然也可以在其余想要修改的位置增加代码,那时就需要把(CPaint)dc 替换成(CDC)dc或其他;1、窗口贴背景图片方法1:CImage CImage myIamge; myIamge.Load("res\\bg.bmp"); CRect rect; GetClientRect(&rect); dc.SetStr原创 2013-06-29 15:29:33 · 829 阅读 · 0 评论 -
界面编程
转载自:http://bbs.csdn.net/topics/390339288转载 2013-11-21 13:06:01 · 642 阅读 · 0 评论 -
获取时间
1、获取系统当前时间CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st; CStr转载 2013-09-07 22:17:26 · 554 阅读 · 0 评论 -
图片显示
图片显示有以下几种方法:1)静态加载(bmp);2)动态加载(bmp);3)其余控件加载(多种样式图片);4)通过CBitmap,HBITMAP,直接用OnPaint()中画(bmp);详见 http://wenku.baidu.com/view/0b6fe8563c1ec5da50e27063.html5)通过CImage,直接在OnPaint()中画(bmp、jpg)转载 2013-06-02 19:20:07 · 834 阅读 · 0 评论 -
MFC控件之list control
使用之前应该对列表控件的VIEW值设置为report,不然后面所有设置可能不起作用1、初始化,即设置列名,列宽//设置列名跟列宽CRect m_rect;m_testList.GetClientRect(m_rect);int columnWidth = m_rect.Width()/3; m_testList.InsertColumn(1,"配置类型",LV原创 2012-08-04 19:20:56 · 1741 阅读 · 0 评论 -
状态栏相关
1、默认的状态栏2、自绘的状态栏 1)在类中定义 CStatusBar m_status; 2) 在初始化函数中或其余想要修改的 地方加入////创建状态栏,并新建两个子窗格 m_status.Create(this); UINT nID[] = {ID_SEPARATOR ,100}; m_status.SetIndi原创 2013-06-17 22:15:04 · 518 阅读 · 0 评论 -
设置窗口的显示区域
1、显示圆角窗口,且无标题栏 CRect rect; GetWindowRect(&rect); int nCaption = GetSystemMetrics(SM_CYCAPTION); int nBorder = GetSystemMetrics(SM_CXSIZEFRAME); CRgn bkRgn; bkRgn.CreateRoundRectRgn(nBorder,nCa原创 2013-06-26 11:36:59 · 1015 阅读 · 0 评论 -
提示框相关 ---tooltip
提示框的实现一般可以通过如下四步:1、定义对象 在相关位置定义提示框的对象: CToolTipCtrl m_tt;2、创建提示框 EnableToolTips(); m_tt.Create(this); m_tt.Activate(TRUE);3、添加提示框显示内容转载 2013-06-26 10:44:08 · 654 阅读 · 0 评论 -
优化按钮显示效果
一、增加同名的manifest文件1.首先确认你在Windows XP下,因为如果在98或2K下,那除非自己重画画所有界面,要不基本上是无法实现XP风格的。 version="1.0.0.0" processorArchitecture="X86" name="Microsoft.Windows.dummy" t转载 2013-04-18 16:26:10 · 632 阅读 · 0 评论 -
类型转换总结(CString 、char*、int、float、_bstr_t、LPCWSTR、LPSTR)
1、CString转char*CString 头文件#include CString cstr;char *p = (LPSTR)(LPCTSTR)cstr;2、CString转_bstr_tCString cs= "aaa "; _bstr_t bstr = (LPCTSTR)cs ;3、CString转LPCWSTR原创 2012-08-24 14:15:24 · 4438 阅读 · 1 评论 -
MFC使用技巧篇(一)
1 Cstring替换空格字符方法一:Replace() Replace()可以替换掉所有位置的空格,包括字符前后、中间。并且不区分全角、半角空格。 Cstring str = "值 得“; str.Replace(" ",""); //去掉所有空格。方法二:Remove()方法三:trim()/trimLeft()/trimRight()原创 2013-07-30 10:30:33 · 718 阅读 · 0 评论 -
mfc获取自身版本号
1、引入lib#pragma comment(lib, "Version.lib ")2、增加如下代码 char cPath[200],szVersionBuffer[200]; DWORD dwHandle,InfoSize; CString strVersion; ::GetModuleFileName(NULL,cPath,sizeof(cPath)); //首先获得转载 2013-08-23 13:59:28 · 5009 阅读 · 1 评论 -
MFC使用动态库dll
一、隐式链接先把dll文件和lib文件和.h文件放到工程目录下,具体设置方式有两种:1、可以直接在工程->设置->连接的Object/Moduls栏中填入lib文件名,如mydll.lib,(vs在linker---input中写入此lib文件名)多个文件直接用空格隔开,在应用的文件的头文件处,(或者在stdafx.h中添加.h文件,如#include “mydll.h”)。2、也可原创 2012-11-01 13:20:34 · 693 阅读 · 0 评论 -
mfc对话框拖动
转载自:http://hi.baidu.com/bin545/item/757adb0e0febe210addc70dd如果应用程序自己绘制的界面没有标题栏,那我们怎么来拖动程序呢?那么就可以添加下面消息: UINT CMainWindow::OnNcHitTest (CPoint point) { UINT nHitTest = CFrameWnd::OnNcHit转载 2013-11-07 11:09:40 · 2645 阅读 · 0 评论 -
MFC中菜单相关
1、弹出式菜单CMenu menu; menu.LoadMenu(IDR_MENU_TADOY); CMenu *pContextMenu = menu.GetSubMenu(0); CPoint pt; GetCursorPos(&pt); pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pt原创 2013-11-10 00:04:42 · 453 阅读 · 0 评论 -
MFC运行外部文件
1、ShellExecute()ShellExecute(this->m_hWnd,"open", ".\\init.ini","","",SW_SHOW );//ShellExecute的功能是运行一个外部程序,或者打开一个已注册的文件、打开一个目录,参数如下://参数1:this->m_hWnd为父窗口句柄//参数2: 用于指定要进行的操作。其中“open”操作表示执行由参数3原创 2013-12-05 17:51:06 · 677 阅读 · 0 评论 -
MFC的CWnd和HWND之间互相转换方法
转载自:http://blog.csdn.net/nighttraveldeity/article/details/6530152句柄是一个32位的数,是在WINDOS中的一个资源标示符,相当于c里面的指针.窗口类就是CWnd,窗口句柄就是HWND。CWnd和HWND之间互相转换代码如下: CWnd *pWnd; HWND hWnd; hWnd = pWnd-转载 2013-12-19 16:01:13 · 697 阅读 · 0 评论 -
MFC控件之Date Time Picker
1、同时显示时间跟日期部分转载自:http://loveafaye.blogbus.com/logs/41089096.html一是用两个CDateTimeCtrl。二种是使用CDateTimeCtrl的成员函数SetTime和SetFormat。如下:((CDateTimeCtrl*)GetDlgItem(IDC_READ_TIME))->SetTime(&m_time);原创 2013-11-11 14:04:08 · 2739 阅读 · 0 评论 -
VC之键盘响应相关
键盘中每一个键对应一个扫描码,扫描码跟系统无关,所以要想被系统识别,需要经过驱动转换为虚拟码。1、常见虚拟码VK_0 到 VK_9 表示键盘上数字“ 0 ”到“ 9 ”键 (ASCII 码为 0x30 - 0x39) ;VK_A 到 VK_Z 表示键盘上字母“ A ”到“ Z ”键 (ASCII 码为 0x41 - 0x5a) ;VK_ADD 表示数字键盘上的“转载 2013-12-23 22:45:06 · 780 阅读 · 0 评论 -
VC之鼠标响应相关
1、调用api函数响应 1)鼠标形状修改 转载自:http://hi.baidu.com/harbinxxh/item/edf615953c3a9a34336eebb01: 修改方法一重载CView里的OnMouseMove函数 .重载方法 :“View” -> “ClassWizard” (Ctrl + W) -> 右侧Messages栏选择”WM转载 2013-12-23 11:15:49 · 744 阅读 · 0 评论 -
串口调试
串口的读写等操作一般有两种方法1、api接口调用2、调用MFC中mscom控件原创 2013-12-24 22:38:27 · 600 阅读 · 0 评论 -
VC(VS)插入activeX控件
1、插入串口MScomProject菜单------>Add toProject---->Components and Controls----->Registered ActiveX Controls--->选择Microsoft Communications Control, version 6.0 插入到当前的Workspace中。注:在W7下,可能会提示“不支持此接口”,此时,转载 2013-12-26 09:36:57 · 1504 阅读 · 0 评论 -
GDI+的使用
一、使用步骤:1、 #define ULONG_PTR ULONG 加到 stdafx文件 靠前面的位置,然后添加: #include “gdiplus.h” using namespace Gdiplus;2、在要使用处增加 GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiolusToken原创 2012-12-21 16:35:58 · 406 阅读 · 0 评论 -
MFC常用类CTime
1、日期和时间类简介 CTime类的对象表示的时间是基于格林威治标准时间(GMT)的。CTimeSpan类的对象表示的是时间间隔。 CTime类和CTimeSpan类一般不会被继承使用。两者对象的大小都是8个字节。 CTime表示的日期上限是3000年12月31日,下限是1970年1月1日 12:00:00 AM GMT。 CTime转载 2013-09-29 15:03:03 · 16480 阅读 · 0 评论 -
MFC获得指定进程的ID,路径及终止进程
转载自:http://blog.sina.com.cn/s/blog_a473b7dc0101foir.html头文件#include"tlhelp32.h"voidManagerDlg::OnBnClickedOk(){DWORD procID=this->GetProcessidFromName(L"qq.exe",LLNPath);if(procID>0){转载 2013-12-05 15:55:19 · 6186 阅读 · 0 评论 -
MFC之文件选择对话框使用
一、可绑定一个按钮事件,在事件中添加如下代码实现文件路径选择UpdateData(TRUE);CString szFilterFDlg = "SCDCC码(*.bmp)|*.bmp||"; CFileDialog fileDlg(TRUE, "cup", "", NULL, szFilterFDlg, NULL); ///TRUE为OPEN对话框,FALSE为SAVE AS对话框原创 2012-12-04 13:34:13 · 552 阅读 · 0 评论 -
MFC控件 listcontrol 控件使用总结
1、获取点击行列值 CPoint point; ::GetCursorPos(&point); ::ScreenToClient(this->m_editList.m_hWnd,&point); LVHITTESTINFO hi; int row,column; hi.pt = point; if (m_editList.SubItemHitTest(&hi) >= 0转载 2013-05-03 16:11:07 · 7702 阅读 · 2 评论 -
MFC之csocket
1、一般使用流程(阻塞模式)1)添加头文件#include "afxsock.h"2)初始化一般在InitInstance()的开始部分增加: if (!AfxSocketInit()) { AfxMessageBox("Windows 通信端口初始化失败"); return FALSE; }3)定义对象CSocket m_socketRec;4原创 2013-11-12 22:28:26 · 926 阅读 · 0 评论 -
MFC之托盘区编程
转自:http://babybandf.blog.163.com/blog/static/61993532009121899788/1、托盘区显示编程流程1)定义托盘变量NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。2)在需要显示托盘的位置添加代码NotifyIcon.c转载 2013-11-13 11:28:38 · 907 阅读 · 0 评论 -
MFC之隐藏窗口在任务栏上显示
1、利用COM提供的ITaskbarList接口转载自:http://blog.csdn.net/mynamelj/article/details/1116797注意:在用该函数之前必需初始化COM库.BOOL ShowInTaskbar(HWND hWnd, BOOL bShow){HRESULT hr; ITaskbarList* pTaskbarList;hr =转载 2013-11-13 13:40:54 · 4124 阅读 · 0 评论 -
字符操作小技巧总结
1、字符截取(含中英文) 利用api函数IsDBCSLeadByte(),非零为多字节的首字符,否则为单字节字符。例如: if (IsDBCSLeadByte(str.GetAt(num))) { AfxMessageBox("最后字节字符为汉字的第一字节,其还需要多一个字节!"); }原创 2013-08-29 21:38:06 · 610 阅读 · 0 评论 -
程序开机自启动
转载自:http://hi.baidu.com/qhh_2008/item/ae72cdc67e769d7088ad9e1c1、自启动设置// bAutoStart为true,表示开机自启动,否则开机不自启动bool CDialogSet::SetAutoStart(bool bAutoStart){ if (bAutoStart) { //写入注册表,开机自启动转载 2013-12-05 13:19:43 · 567 阅读 · 0 评论