![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
API/MFC
文章平均质量分 64
chainyu
死ぬ気でやれよ、死なねーから!
展开
-
MFC高级控件学习一
m_ImageList.Create(24,24,ILC_COLOR24|ILC_MASK,1,1); m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1))); m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(ID原创 2010-03-09 14:38:00 · 767 阅读 · 0 评论 -
使用Windows API读注册表
//读取文本值bool ReadString(HKEY key, CStringW valueName, CStringW &value){ DWORD type; BYTE s[_MAX_PATH]; //#define _MAX_PATH 260 /* max. length of full pathname */ DWORD len = _MAX_PATH; if原创 2010-05-07 09:28:00 · 1250 阅读 · 0 评论 -
使用CRegKey读写注册表
//写入文本void WriteString(CRegKey &key, CStringW valueName, CStringW value){ key.SetStringValue(valueName, value);}//写入boolvoid WriteBoolean(CRegKey &key, CStringW valueName, bool value){原创 2010-05-07 10:08:00 · 2788 阅读 · 0 评论 -
系统托盘图标
类中添加变量 NOTIFYICONDATA m_Nid; 在OnInitDialog()中添加TrayIcon m_Nid.cbSize = sizeof(NOTIFYICONDATA); m_Nid.hWnd = GetSafeHwnd(); m_Nid.uID = 0; m_Nid.hIcon = m_hIcon; //设置图标 m_Nid.uFlags =原创 2010-05-09 14:20:00 · 616 阅读 · 0 评论 -
调用函数设定颜色
//设置列表控件属性带有表格线 DWORD NewStyle = m_ListCtrl.GetExtendedStyle(); NewStyle |= LVS_EX_GRIDLINES; m_ListCtrl.SetExtendedStyle(NewStyle); //设置列表控件字体颜色为红色 m_ListCtrl.SetTextColor(RGB(255, 0, 0));原创 2010-05-10 20:58:00 · 671 阅读 · 0 评论 -
使用GDI绘制假按钮
void CFakeButtonView::OnDraw(CDC* /*pDC*/){ CFakeButtonDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; CDC* pDC = GetDC(); //绘制命令按钮 CRect rt(100, 110, 220, 150); p原创 2010-05-10 09:19:00 · 583 阅读 · 0 评论 -
Win32控制台下消息机制的模拟
#include "stdafx.h"#include "SimulateMsg.h"#include "conio.h"#include using namespace std;#define MSG_KEY 0x1224 //有键盘输入#define MSG_CHAR 0x1225 //有字符输入#define MSG_QUIT 0x0001 //退出#原创 2010-05-10 11:37:00 · 1185 阅读 · 0 评论 -
测试MFC的消息路由机制
void CMainFrame::OnFileOpen(){ ::MessageBox(NULL, _T(__FUNCTION__), _T(""), MB_OK);}void CMessageRouteTestApp::OnFileOpen(){ ::MessageBox(NULL, _T(__FUNCTION__), _T(""), MB_OK);}void C原创 2010-05-10 14:21:00 · 573 阅读 · 0 评论 -
使用GDI+绘图
包含头文件和库文件,并使用Gdiplus名称空间#include "gdiplus.h"#pragma comment(lib, "gdiplus.lib")using namespace Gdiplus; 为CGDIplusTestView添加成员protected: ULONG_PTR m_gdiplusToken; 初始化及销毁工作CGDIplusTestView::原创 2010-05-10 10:32:00 · 602 阅读 · 0 评论 -
NM_CUSTOMDRAW消息相应绘制多色列表框
void CNM_CUSTOMDRAWDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult){ LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR); if (pNMHDR->idFrom == IDC_LIST1) { NMLVCUSTOMDRAW* pLVCD = rei原创 2010-05-11 12:04:00 · 2874 阅读 · 1 评论 -
使用文件映射共享数据
服务器端:int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ printf("========我是服务器端========/r/n"); HANDLE hMapFile; LPVOID pBuf; hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, NULL,原创 2010-05-11 15:52:00 · 526 阅读 · 0 评论 -
使用剪贴板传输对象
进程之间采用剪贴板来传输对象{ UpdateData(TRUE); if (OpenClipboard()) { int size = m_Text.GetLength() * sizeof(TCHAR); HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE, size+1 * sizeof(TCHAR)); TCHAR* buffer原创 2010-05-11 16:20:00 · 431 阅读 · 0 评论 -
使用命名管道传输对象
服务端:int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ printf("==============NamedPipe服务端==============/r/n"); //创建管道MyPipe HANDLE hPipe = CreateNamedPipe( _T("////.//pipe//MyPipe"),原创 2010-05-12 11:52:00 · 808 阅读 · 0 评论 -
使用匿名管道传输对象
服务器端:int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ printf("==========这里是服务器端==========/r/n"); //获取标准输入、输出句柄 HANDLE hStdIn = ::GetStdHandle(STD_INPUT_HANDLE); HANDLE hStdOut = ::GetS原创 2010-05-12 10:22:00 · 566 阅读 · 0 评论 -
使用邮槽传输对象
服务端:int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ printf("=============Mailslot服务端=============/r/n"); //创建邮槽 HANDLE hMailslot; hMailslot = CreateMailslot(_T("////.//mailslot//MyMail原创 2010-05-13 09:45:00 · 386 阅读 · 0 评论 -
项目中加入Error Log日志
// 全局变量extern FILE *fp_error; // general error file; extern char error_filename[256]; // err原创 2011-10-12 14:19:09 · 799 阅读 · 0 评论 -
GDI+配置(vs2008)
1 在项目属性中添加GDI+静态库链接打开项目,选择【项目】——》【XXX属性】(XXX为当前项目名称),打开“项目属性”对话框,展开“属性配置”,选择“连接器”下的“输入”,然后在”依赖附加项“中添加“gdiplus.lib”2 添加必要的代码(1)打开“解决方案资源管理器”,打开stdafs。h文件,添加代码如下:#include "gdiplus.h"using name原创 2010-03-15 11:56:00 · 585 阅读 · 0 评论 -
GetExitCodeThread()
BOOL GetExitCodeThread ( HANDLE hThread, // in,线程handle,也就是CreateThread()的返回值 LPDWORD lpExitCode //out,存储线程结束代码,也就是线程的返回值);说明: 此函数调用成功原创 2010-04-29 13:59:00 · 2115 阅读 · 0 评论 -
使用Window API写注册表
//写入文本void WriteString(HKEY key, CStringW valueName, CStringW value){ RegSetValueEx(key, valueName, 0, REG_SZ, (LPBYTE)(LPCTSTR)value, (value.GetLength()+1) * sizeof(TCHAR));}//写入boolvoid原创 2010-05-06 17:10:00 · 557 阅读 · 0 评论 -
读取INI文件
在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使原创 2010-05-05 15:22:00 · 400 阅读 · 0 评论 -
MFC学习笔记二
void CEx1013GetBmpInfoDlg::DrawDlg(){ CDC *pDC = GetWindowDC(); int nTitleHeight = GetSystemMetrics(SM_CYCAPTION); CRect wndRC; GetWindowRect(wndRC); wndRC.OffsetRect(wndRC.Width(),wndRC.H原创 2010-03-12 14:32:00 · 415 阅读 · 0 评论 -
MFC学习笔记三
MFC类层次结构//------------------------------------------------------------------// MFC.H //------------------------------------------------------------------#include using namespace std;clas原创 2010-03-15 10:22:00 · 377 阅读 · 0 评论 -
MFC学习笔记四——动态创建 Dynamic Creation
动态创建 Dynamic Creation//-------------------------------------------------------------------// MFC.H//-------------------------------------------------------------------#define BOOL int#defin原创 2010-03-16 13:32:00 · 617 阅读 · 1 评论 -
MFC学习笔记三——MFC程序的初始化过程
//------------------------------------------------------// MFC.H //------------------------------------------------------#define BOOL int #define TRUE 1 #define FALSE 0 #include using原创 2010-03-15 20:02:00 · 610 阅读 · 0 评论 -
MFC学习实例一——设置不同文本框内字体颜色
HBRUSH CSodukuv2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 if (nCtlColor == CTLCOLOR_EDIT) { sw原创 2010-03-17 10:48:00 · 2841 阅读 · 0 评论 -
MFC学习笔记五——消息映射(Message Mapping)
//-------------------------------------------------------------------// MFC.H//-------------------------------------------------------------------#define TRUE 1#define FALSE 0typedef char*原创 2010-03-17 14:48:00 · 725 阅读 · 0 评论 -
MFC常用技巧
SetTimer(1,1000,NULL); 1表示定时器的ID,1000表示没1000ms也就是1s调用一次处理函数,最后一个参数是处理的函数,如果填NULL表示,使用系统默认的,默认处理函数是OnTimer()那个函数,在这里面写你要执行的操作就可以了,如果你有多个定时器要在这里写if(id == 1)类似的东西去区分不同的定时器,更换贴图最好是在OnTimer里面更换当前显示的图片原创 2010-03-23 15:27:00 · 537 阅读 · 0 评论 -
MFC自制小游戏——躲避球(每日进度)
获得窗口中心点坐标并且画出CRect rect;GetClientRect(&rect);m_plane.x = rect.Width() / 2;m_plane.y = rect.Height() / 2; HDC hDC; hDC=::GetDC(m_hWnd); SetPixel(hDC, m_plane.x, m_plane.y, RGB(0,0,255)原创 2010-04-02 23:47:00 · 672 阅读 · 0 评论 -
输出文件句柄的值
#include "stdafx.h"// 唯一的应用程序对象CWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ HANDLE hFile1 = CreateFile( _T("test1.out"), GENERIC_WRITE, FILE原创 2010-05-03 23:03:00 · 641 阅读 · 0 评论 -
使用auto_ptr自动释放内存
#include #include #include using namespace std;int main(){ int * ip = new int; auto_ptr aip(ip); //new出来的对象不再需要手动销毁 *ip = 100; cout << *aip << endl; string * sp = new string("a st原创 2010-05-03 22:17:00 · 998 阅读 · 0 评论 -
使用CTime操作时间
#include int main(){ int year, month, day; printf("输入出生日期(年 月 日):"); scanf("%d%d%d", &year, &month, &day); CTime birthday(year, month, day, 0, 0, 0); CTime now = CTime::GetCurrentTime();原创 2010-05-03 21:44:00 · 958 阅读 · 0 评论 -
文本与二进制内容的存取操作
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ char s1[4] = "66"; int n1 = 66; char s2[4]; int n2; //write CFile file; file.Open(_T("test.out"), CFile::modeWrite | CFile::modeCre原创 2010-05-05 14:21:00 · 396 阅读 · 0 评论 -
读取CSV格式文件
1)创建CRow类,用来描述每一行的记录class CRow{public: CRow(CStringArray* row); int getColumnCount(void); CString getColumn(int i);private: CStringArray* m_row;};CRow::CRow(CStringArray* row){原创 2010-05-05 16:39:00 · 707 阅读 · 0 评论 -
使用CFile完成变长数据块的读写
//写入字符串void WriteString(CFile &file, CString &s){ int len = s.GetLength(); //写入字符串的长度 file.Write(&len, sizeof(len)); //写入字符串 file.Write(/*(LPCTSTR)*/s, len);}//读取字符串bool ReadString原创 2010-05-06 11:14:00 · 712 阅读 · 0 评论 -
使用MFC::CArchive实现对象的持久化和反持久化
新建一个CPerson类#include class CPerson : public CObject{ DECLARE_SERIAL(CPerson)public: CPerson(void); CPerson(CString name, int age, bool gender = true); CString getName(); CString ge原创 2010-05-06 12:11:00 · 1127 阅读 · 1 评论 -
windows资源文件的读取
演示如何在当前程序中添加一个word资源,并在运行时读取它 1)打开资源视图,导入一个word文档,资源类型定义为“WORD”,资源名不做修改,为“IDR_WORD1”2)测试程序代码int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){ int nRetCode = 0; // 初始化 MFC 并在失败时显示错误 i原创 2010-05-06 14:56:00 · 794 阅读 · 0 评论 -
使用MsXML读写XML文件
// MsXmlTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "MsXmlTest.h"#include #include "comutil.h"#import "msxml4.dll"#ifdef _DEBUG#define new DEBUG_NEW#endif// 唯一的应用程序对象原创 2010-05-06 16:02:00 · 1813 阅读 · 1 评论 -
获取当前工作目录下某个文件的全路径
TCHAR tchBuffer[MAX_PATH]; LPTSTR lpszCurDir = tchBuffer; GetCurrentDirectory(MAX_PATH, lpszCurDir); CString cstrCurDir(lpszCurDir); CString cstrConfPath = cstrCurDir+ _T("\\yourFileName.xxx");原创 2012-03-09 14:15:56 · 588 阅读 · 0 评论