![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC高级
文章平均质量分 73
ljd_1986413
这个作者很懒,什么都没留下…
展开
-
一:MFC中HDC与CDC区别和转化
MFC中HDC与CDC区别和转化CDC是MFC的DC的一个类 ,它封装了几乎所有的关于 HDC的操作。HDC是DC的句柄,API中的一个类似指针的数据类型. 设备描述句柄。MFC类的前缀都是C开头的H开头的大多数是句柄CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类).CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄.记住下面的一句话,会有助于你的理解.MFC的类,是在用window API语句开发出来的有一定功能的小程序原创 2011-03-14 12:22:00 · 4376 阅读 · 0 评论 -
十五: TranslateMessage(&msg) 函数 和DispatchMessage(&msg)函数
TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。TranslateMessage函数用于将虚拟键消息转换为字符消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。当我们敲击键盘上的某个字符键时,系统将产生WM_KEYDOWN和WM_KEYUP消息。这两个消息的附加参数(wParam和lParam)包含的是虚拟键代码和扫描码等信息,而我们原创 2011-04-02 10:33:00 · 6375 阅读 · 0 评论 -
十六:CreateSemaphore创建信号量,ReleaseSemaphore增加信号量 函数
在开发软件的过程中,多线程的程序往往需要实现相互通讯,比如几个线程添加一个消息到队列里,而另一个线程在睡眠时,就需要唤醒那个线程来处理事情。在这其中,就需要使用到信号量来进行同步。CreateSemaphore是创建信号量,ReleaseSemaphore是增加信号量。函数CreateSemaphore和ReleaseSemaphore声明如下:WINBASEAPI__outHANDLEWINAPICreateSemaphoreA( __in_opt LPSECURITY_ATTRIBUTES lpS原创 2011-04-02 11:22:00 · 2087 阅读 · 0 评论 -
函数:FindResource 确定指定模块中指定类型和名称的资源所在位置
<br />函数功能:<br />该函数确定指定模块中指定类型和名称的资源所在位置。 <br /><br />函数原型:<br />HRSRC FindResource(HMODULE hModule,LPCTSTR lpName,LPCTSTR lpType); <br /><br />参数: <br /> hModule:处理包含资源的可执行文件的模块。NULL值则指定模块句柄指向操作系统通常情况下创建最近过程的相关位图文件。 <br /> lpName:指定资源名称。若想了解更多的信息,请参见注意原创 2011-04-02 16:17:00 · 1893 阅读 · 0 评论 -
十八:vector介绍
vector介绍<br />介绍std::vector,并且讨论它在STL中的算法和条件函数remove_if()。 <br />介绍<br />这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。<br /> <br />Vector总览<br />vector是C++标准原创 2011-04-14 10:39:00 · 505 阅读 · 0 评论 -
十九:VC中利用多线程技术实现线程之间的通信
当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的。因此掌握多线程多任务设计方法对每个程序员都是必需要掌握的。本实例针对多线程技术在应用中经常遇到的问题,如线程间的通信、同步等,分别进行探讨,并利用多线程技术进行原创 2011-04-27 14:38:00 · 512 阅读 · 0 评论 -
MFC线程小结
HANDLE hThread;DWORD ThreadID;//---------线程信息----struct threadInfo{ /*UINT nMilliSecond; CProgressCtrl* pctrlProgress;*/ CEdit *ed; int sco;};UINT ThreadFunc(LPVOID lpParam);//线程函数hThread=Crea原创 2011-06-23 15:39:00 · 424 阅读 · 0 评论 -
十:[zz]MFC - hWnd & hDC,句柄,CWnd
[zz]MFC - hWnd & hDC,句柄,CWndhWnd是窗口句柄,通过它可以得到窗口的属性。hDC是窗口显示上下文句柄,只有在窗口进行图形,文字输出的时候才需要它。有了hWnd,可以使用API的GetDC()函数得到与其相关的hDC:hDC=GetD原创 2011-03-14 16:39:00 · 945 阅读 · 3 评论 -
MFC ADO 连接SQL SERVER数据库
实例:http://www.vckbase.com/code/database/ado/vcadodotnetsrc.zip关键字 ADO访问数据库大全 原作者姓名 相生昌 介绍 VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。 正文 一、ADO概述 ADO是Microsoft为最翻译 2011-12-20 16:26:07 · 3139 阅读 · 0 评论 -
PostThreadMessage
把window线程间传送消息仔细的看了一遍,觉得以前的理解很不深刻。说一说对PostThreadMessage的理解。PostThreadMessage是一个线程体发送一个消息到指定的线程ID,其原型如下:BOOL PostThreadMessage( DWORD idThread, U原创 2012-01-06 12:22:24 · 748 阅读 · 0 评论 -
MFC最小化到系统托盘
MFC最小化到系统托盘--《VC编程知识总结》之一在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。转载 2012-02-10 17:13:52 · 546 阅读 · 0 评论 -
十四:GDI+ 绘制窗口 感受不一样的神奇
第一:在stdafx.h中加上下列GDI的头文件#include "c:/GDIPlus/includes/gdiplus.h" ////请修改为你的头文件路径using namespace Gdiplus; #pragma comment(lib, "c://GDIPlus//lib//gdiplus.lib") ////请修改为你的.lib文件路径第二:在GDIPClock.cpp 中加上下列显示成功加载资源, 资源成功载入内存, 但是加载到Image类的时候, 返回空指针.答: 可能是忘了 初始原创 2011-03-22 17:51:00 · 3186 阅读 · 0 评论 -
十一:MFC关于读写TXT文件
写txt文件第一: CString sss; sss.Append(_T(" lijiandong")); CString ab = _T("/r/n");//换行 sss.Append(ab); CFile f; f.Open(_T("F://222e.txt"),CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);//modeNoTruncate 追原创 2011-03-17 17:56:00 · 5339 阅读 · 0 评论 -
二:在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口作者:邵凯锋下载源代码一、概述 GDI+的应用使得平面图形图象编程变的更加容易,本文以一个基于对话框的时钟程序为例,在VC6.0中调用*.png图片实现半透明渐变窗口,该程序实现了指针式和数字式两种时钟显示方式。窗口实现了半透明渐变窗口、窗口拖动无移动矩形框、隐藏了任务栏窗体按钮等。效果图如下:图一 程序执行后与WindowXP桌面背景效果图二、准备工作1、图片资源准备工作。首先在Photoshop中编辑好时钟的背景、时针、分针以及数字时钟显示转载 2011-03-14 15:06:00 · 1582 阅读 · 0 评论 -
三:在VC++中读写INI文件
在VC++中读写INI文件////写ini文件CString path,index;int i;path="D:/qc_download/bin_code/TEU800_long_sms/";i=1;index.Format(_T("%d"),i);::WritePrivateProfileString(_T("successcompath"), index,_T("D:/qc_download/bin_code/TEU800_long_sms/"),_T(".//ex1.ini"));在ini 文件里原创 2011-03-14 15:28:00 · 581 阅读 · 0 评论 -
六:接收消息 GetMessage()和PeekMessage()
GetMessage()和PeekMessage()几个主要区别: 1。GetMessage()只有在接收到消息后才将控制权转给你的程序,而PeekMessage()无论有没有消息都会将控制权转给你的程序:如果有消息,返回真,没有消息返回假。 2。GetMessage()的主要功能是从消息队列中“取出”消息,消息被取出后,消息队列中就不再由该消息了;而PeekMessage()的主要功能是“窥视(peek)”消息,如果有消息,返回真,没有返回假。但PeekMessage()允许你从消息队列中“取出”消息,这原创 2011-03-14 16:17:00 · 570 阅读 · 0 评论 -
九:[VC++]MFC操作注册表
[VC++]MFC操作注册表MFC操作注册表一:打开注册表键LONG RegOpenKeyEx( HKEY hKey, // handle to open key主键 LPCTSTR lpSubKey, // subkey name子键 DWORD ulOptions, // reserved。必须是0 REGSAM samDesired, // security access mask读写标识 PHKEY phkResult // handle to open key原创 2011-03-14 16:33:00 · 1651 阅读 · 0 评论 -
四:vc++在文件夹下寻找文件
vc++在文件夹下寻找文件方法一:BOOL FindAllFiles (CString szDir){ CFileFind ff; CString filePath; CString fileName; if(szDir.Right(1) !="//") szDir +="//"; szDir +="*.*"; BOOL res = ff.FindFile (szDir); while (res) { res = ff.FindNextFi原创 2011-03-14 15:37:00 · 927 阅读 · 0 评论 -
五:API函数-WaitForMultipleObjects
七:API函数-WaitForMultipleObjects2010-11-05 10:45API函数-WaitForMultipleObjects如果需要在一个线程中等待多个事件,则用WaitForMultipleObjects()来等待。WaitForMultipleObjects()与WaitForSingleObject()类似,同时监视位于句柄数组中的所有句柄。这些被监视对象的句柄享有平等的优先权,任何一个句柄都不可能比其他句柄具有更高的优先权。WaitForMultipleObjects()的函原创 2011-03-14 16:10:00 · 669 阅读 · 0 评论 -
七:VC串口通信(2)
VC串口通信(2) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用转载 2011-03-14 16:28:00 · 579 阅读 · 0 评论 -
八:Win32 SDK注册表操作——RegQueryValueEx
Win32 SDK注册表操作——RegQueryValueExRegQueryValueEx找回所打开注册表键所关联的一个给定值的类型和数据。LONG RegQueryValueEx( HKEY hKey, // 要查询键的句柄 LPTSTR lpValueName, // 要查询值的名字的地址 LPDWORD lpReserved, // 保留 LPDWORD lpType, // 值类型缓存地址 LPBYTE lpData, /原创 2011-03-14 16:31:00 · 1015 阅读 · 0 评论 -
十三:谈谈MSG中的 WPARAM 和 LPARAM
第一:WPARAM 和 LPARAM 是什么东西 typedef uint wparam;//就是无符号整形 typedef long lparam;//就是长整形 typedef struct tagMSG { // msg HWND hwnd; //窗口句柄原创 2011-03-18 11:45:00 · 15869 阅读 · 0 评论 -
十二:MFC读取XML
Markup.cpp#include "stdafx.h"#include #include "Markup.h"#ifdef MCD_STRERROR#include #include #else#include #endif#if defined(_DEBUG) && ! defined(MARKUP_STL) && ! defined(MARKUP_STDC)#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#e原创 2011-03-17 18:06:00 · 3119 阅读 · 1 评论 -
MFC开机启动写注册表
void CMfcUdpSvrDlg::OnBnClickedPs2(){ // TODO: 在此添加控件通知处理程序代码 //写文件 CString strWorkPath; TCHAR tszWorkPath[MAX_PATH]; GetModuleFileName(NULL, tszWorkPath, MAX_PATH); s原创 2012-03-15 10:21:26 · 847 阅读 · 0 评论