MFC
文章平均质量分 75
我是黄老邪
这个作者很懒,什么都没留下…
展开
-
基于对话框的MFC应用程序实现菜单的勾选功能
操作系统: Windows7/Windows10 64位运行环境: Visual Studio 10文件编码: Unicode 在基于对话框的MFC应用程序中,给对话框建立一个菜单,让菜单选中后,对应的菜单项前显示“对勾”,但无法用ON_UPDATE_COMMAND_UI更新菜单。从命令用户界面处理函数(Command UIhandler)改变菜单状态(启用/原创 2015-11-03 22:09:09 · 1564 阅读 · 0 评论 -
unicode 中 CW2A CA2W两个宏的含义
C:convertW:wide2:toA:ASCII CW2A 将宽字符集(Unicode)转化为多字符集(ASCII)CA2W 将多字符集(ASCII)转化为宽字符集(Unicode)另外,UTF8转Unicode: CString str1=CA2W(pBuf,CP_UTF8);转载 2016-08-10 11:03:32 · 4427 阅读 · 0 评论 -
修改AfxMessageBox对话框标题
AfxMessageBox的对话框标题默认为项目工程的名字,对话框是为了给用户提示相关信息,而面向用户软件名字一般都与项目工程名不一样,例如软件可能是中文名。所以,有时候我们需要使AfxMessageBox弹出的对话框的标题为当前的软件名。 解决办法:在资源视图中找到String Table并打开,修改ID为AFX_IDS_APP_TITLE的标题为自己想要的值就可以了。原创 2016-08-01 15:23:39 · 5699 阅读 · 2 评论 -
设置MFC程序开机自动启动
以注册表的形式设置MFC程序开机自动启动原创 2016-04-25 16:40:09 · 6692 阅读 · 3 评论 -
VC/MFC程序中获取当前Windows操作系统版本名称(2016-04-25修改)
CString getOSName(){ CString osName = _T(""); 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原创 2016-01-09 11:57:39 · 4937 阅读 · 0 评论 -
MFC下给线程函数传递非静态成员变量
在MFC下类的线程函数必须是静态函数,也就是说不属于某个对象,而是属于类方法,当对象结束时线程并不结束。而静态函数必须使用静态成员变量,因此不能使用普通的成员变量。解决以上问题的办法就是——给线程方法传递 this 指针作为参数,通过 this 指针访问成员变量或者普通成员方法。线程的创建和启动:AfxBeginThread((AFX_THREADPROC)Thre原创 2015-12-22 22:53:18 · 2797 阅读 · 3 评论 -
VC中Unicode字符集转UTF-8字符集
1. CString类型char* CStringToChar(CString csData){ DWORD dwNum = WideCharToMultiByte(CP_UTF8,NULL,csData,-1,NULL,NULL,0,NULL); char *cResult = (char *)malloc(dwNum+1); memset(cResult, 0, dwNum+原创 2015-12-22 14:48:18 · 2450 阅读 · 0 评论 -
MFC多线程的简单实现
// CGetLocalListenPortList 消息处理程序BOOL CXxx::OnInitDialog(){ CDialogEx::OnInitDialog(); //其它代码 //HWND hWnd=GetSafeHwnd();//获得窗口句柄 AfxBeginThread((AFX_THREADPROC)ThreadFunction,m_hWnd); //启动线程原创 2015-11-27 15:24:06 · 2950 阅读 · 0 评论 -
splitString CString 类型的字符串分割
int Util::SplitString(const CString str, char split, CStringArray &strArray){ strArray.RemoveAll(); CString strTemp = str; int iIndex = 0; while (1) { iIndex = strTemp.Find(split); if(iIndex转载 2015-11-03 00:05:56 · 14449 阅读 · 0 评论 -
MFC编程:弹出服务器消息推送对话框
操作系统: Windows7/Windows10 64位运行环境: Visual Studio 10文件编码: Unicode在资源管理器中新插入一个对话框,然后创建一个对话框类。注意: 在Visual Studio 10在新插入的子对话框中找不到OnInitDialog()函数,在对话框的属性消息中也找不到WM_INITDIALOG消息,必须要手动(原创 2015-11-02 23:43:01 · 2385 阅读 · 0 评论 -
基于MFC对话框编程:设置开机自启动
基于MFC对话框编程:设置开机自启动原创 2015-11-02 22:45:23 · 1881 阅读 · 0 评论 -
MFC/VC下控制windows服务——停止服务,启动服务
MFC/VC下控制windows服务——停止服务,启动服务操作系统: Windows7 64位(经测试,Windows10不能用)运行环境: Visual Studio 10文件编码: Unicode需要添加的头文件:#include void CXXXDlg::ServiceRun() { SERVICE_STATUS ssStatus; //获得ServiceControl Manager的句柄原创 2015-11-02 22:25:41 · 5700 阅读 · 6 评论 -
CString转char *
基于Visual Studio 2010下Unicode编码的CString转char * CString str = _T("CString to char*"); DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,str,-1,NULL,NULL,0,NULL); char *c = new char[dwNum]; WideCh原创 2015-10-31 10:50:48 · 722 阅读 · 0 评论 -
VC获得程序自身的版本号
操作系统: Windows7/Windows10 64位运行环境: Visual Studio 10文件编码: Unicodechar* GetLocalPogramVersion(){ TCHAR pFilePath[MAX_PATH] = {0}; DWORD dwRet = GetModuleFileName(NULL, pFilePath, MAX_原创 2015-11-04 15:06:48 · 2717 阅读 · 0 评论 -
MFC子线程中更新控件内容的两种办法
每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应能力。一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线程中运行,而所有与主UI线程有关的控件数据刷新应该到主UI线程中处理。也就是数据处理线程发消息,让界面UI去更新控件。在MFC中线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列”,“消息队列”也是界面线程和工作者线程的最大区别,这个词应该进到你的脑子里,根深蒂固的!MFC中有两类原创 2017-06-20 16:39:46 · 10935 阅读 · 3 评论