MFC
文章平均质量分 52
chinayu2007
这个作者很懒,什么都没留下…
展开
-
MFC线程使用
在BCB6中编译MFC线程方法:unsigned int __cdecl ThreadFun(LPVOID lpParam){ TForm1 * p = (TForm1*)lpParam; int i=0; while(1) { i++; CTime time = CTime::GetCurrentTime(); C原创 2017-06-30 12:24:17 · 447 阅读 · 0 评论 -
MFC分组Radio Button的使用
1、先在窗口上添加一个Group Box控件,然后分别在里面添加多个Radion button控件2、将第一个Radio的Group属性设为true3、为第一个Radio添加数值型关联变量,如下图:在用类向导添加关联变联时,只能看到Group中被设为true的Radio的ID4、添加完成后,CPP中自动产生的代码为:void CtestDlg::DoDataExchange(C原创 2017-07-28 12:29:40 · 1053 阅读 · 0 评论 -
MFC中的CListCtrl控件添加行
m_list.Attach(::GetDlgItem(this->m_hWnd,IDC_LIST1)); m_list.InsertColumn(0,_T("工号"),0,120); m_list.InsertColumn(1,_T("姓名"),0,120); m_list.InsertItem(0,_T("12901")); //插入第0行,且0列为12901 m_list.S原创 2017-07-26 17:46:59 · 7308 阅读 · 0 评论 -
c语言读写文件
char buff[1000]={0}; //以w的方式打开,文件会被清空;文件不存在会创建 //以r的方式打开,文件必先存在,否则会打开错误 //+表示同时可读可写 FILE *fp = fopen("1.txt","r+"); if(fp) { char *p = "hello1"; fwrite(p,1,strlen...原创 2017-08-06 15:24:45 · 224 阅读 · 0 评论 -
VC对话框添加工具栏
在VC对话框中添加工具,要分为几步操作。1、在资源视图中添加toolbar类资源,在工具栏上添加按钮,并命名ID:ID_BTN1,ID_BTN22、对话框头文件中,添加变量CToolBar m_ToolBar;3、在对话框的OnInitDialogh函数中添加如下代码:// TODO: 在此添加额外的初始化代码 if( !m_ToolBar.CreateEx(this, TBS原创 2017-08-21 20:18:13 · 2038 阅读 · 0 评论 -
VC在对话框窗口上添加状态栏
VC在对话框上添加状态栏,没有可视化的控件,要用类来创建。1、在窗口.h文件中添加成员变量 CStatusCtrl m_status;2、在窗口的OnInitDialog函数中添加创建代码: RECT m_Rect; GetClientRect(&m_Rect); //获取对话框的矩形区域 m_Rect.top = m_Rect.bottom-原创 2017-08-22 17:12:33 · 980 阅读 · 0 评论 -
读取注册表内容
#include int main(int argc, char* argv[]){ HKEY hKey; DWORD dwType = REG_SZ; DWORD dwSize = 255;//须指定长度,否则第一次读取RegQueryValueEx不成功,仅返回长度 char data[MAX_PATH]; bool ret;原创 2017-08-26 22:02:58 · 283 阅读 · 0 评论 -
EnumPorts枚举当前计算机端口
//---------------------------------------------------------------------------#include #include #pragma hdrstop//---------------------------------------------------------------------------#pragma原创 2017-09-13 09:37:11 · 1508 阅读 · 0 评论 -
C语言for循环的一些内涵
学习使用C语言有好几年了,还是不敢说精通,这门语言的内涵太丰富了,总有新的发现。单就for循环来说,以前就没有搞清楚,还是有许多内涵值得探讨的。先看一下for循环的汇编代码,如下:1 Unit1.cpp.595: for(int i=0;i<3;i++)2 00402938 33C0 xor eax,eax3 0040293A 8945F4原创 2017-09-09 19:36:18 · 470 阅读 · 0 评论 -
VC中显示ICON和BMP图片
显示ICON图标,如下: static HICON hIcon = (HICON)::LoadImage( AfxGetInstanceHandle(), TEXT("1.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE); CClientDC dc(原创 2017-09-07 19:28:47 · 1462 阅读 · 0 评论 -
MFC串行化类CArchive
将数据串行化写入文件中void __fastcall TForm1::Button9Click(TObject *Sender){ //创建文件 CFile file("1.txt",CFile::modeCreate | CFile::modeWrite); //串行化,存储 CArchive ar(&file,CArchive::store); /原创 2017-07-01 10:52:31 · 372 阅读 · 0 评论 -
VC对话框添加菜单快捷键
要在VC对话框上添加快捷键:1、先创建快捷键资源表IDR_ACCELERATOR12、在对话框.h文件中,声明快捷键资源句柄 HACCEL m_Haccel;3、在OnInitDialog函数中添加代码://加载快捷键资源表m_Haccel = LoadAccelerators(theApp.m_hInstance,(LPCTSTR)IDR_ACCELERATOR1);4、添加原创 2017-09-02 09:59:58 · 624 阅读 · 0 评论 -
VC自绘按钮
看了吕鑫老师的视频,试着自己编写了一个自绘按钮控件。YuButton.h头文件如下:#pragma once#include "afxwin.h"class CYuButton :public CWnd{ private: BOOL m_isDown; BOOL m_isMove; BOOL _bMouseTrack; CString m_sCapti原创 2017-09-07 11:29:51 · 356 阅读 · 0 评论 -
重载>>运算符
#include #include using namespace std;class Input{ public: Input & operator >> (int &a) { scanf("%d",&a); fflush(stdin);//去掉回车 return *this;原创 2017-09-16 16:53:37 · 357 阅读 · 0 评论 -
VC2010调用DLL及调试DLL
用VC2010生成DLL及lib文件。DLL中只有一个函数,用来测试用的,如下:extern "C" __declspec(dllexport) int __stdcall add(int a,int b){ return a+b;}调试DLL代码,如下:项目-->属性-->配置属性-->调试->命令:$(TargetDir)\testdll.exe 即testdll.exe原创 2017-08-18 09:54:38 · 1900 阅读 · 0 评论 -
VC2010中自定义消息
VC中自定义消息步骤如下:1、打开类向导,添加自定义消息,如下图:点击“确定”,“确定”关闭向导。2、在窗口头文件中,添加消息常量#define WM_MYMESSAGE WM_USER + 101头文件中由向导自动产生消息映射函数protected:afx_msg LRESULT OnMymessage(WPARAM wParam, LPARAM lParam);原创 2017-07-20 11:51:12 · 335 阅读 · 0 评论 -
MFC之CBitmap类的使用
类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先构造CBitmap对象,调用其中的一个初始化成员函数设置位图对象的句柄。此后就可以调用其它成员函数了。要了解有关使用像CBitmap这样的图形对象的详细信息,请参阅联机文档“Visual C++ 程序员指南”中的“图形对象”。#include CDC原创 2017-07-03 13:39:01 · 12677 阅读 · 0 评论 -
MFC之CBrush和CPen
CDC cdc; HDC hdc = GetDC(this->Handle); cdc.m_hDC = hdc; CBrush brush; brush.CreateSolidBrush(clRed); cdc.SelectObject(&brush); CPen pen; pen.CreatePen(PS_NULL,0,c原创 2017-07-04 10:02:41 · 866 阅读 · 0 评论 -
MFC内存读写CMemFile类的使用
CMemFile是MFC中的内存读写类,可以以文件操作的习惯的读写内存。 byte * pBuf = new byte [1024]; memset(pBuf,0,1024); memcpy(pBuf,"hello",5); CMemFile g;//创建对象 g.Write(pBuf,5);//内部开始分配内存,并将外部的pBuf内容复制进去原创 2017-06-29 15:04:45 · 3526 阅读 · 0 评论 -
CAsyncSocket
CAsyncSocket对象表示一个Windows Socket--一个网络通信的末端。CAsyncSocket类封闭了Windows套接字API,对想使用与MFC连接的Windows套接字的程序员提供了一个面向对象的抽象化概念。此类是假设已经理解了网络的通信的前提下的。负责处理块、字节排序差异以及Unicode和多个字符集(MBCS)串的对话。如果想要一个更方便的处理这些问题的接口,请参阅C原创 2017-07-05 11:31:28 · 795 阅读 · 0 评论 -
MFC中的CMap类使用
#include CMapmy_Map; CString strKey = _T(""); CString strValue = _T(""); my_Map.SetAt("1","hello");//添加元素 CString pLook; my_Map.Lookup("1",pLook);//查找元素 ShowMessage原创 2017-07-14 15:14:30 · 3857 阅读 · 1 评论 -
MFC中的CArray数组使用
CArray类支持与CArray相似的数组,但是必要时可以动态压缩并扩展。数组索引从0开始。可以决定是固定数组上界还是允许当添加元素时扩展当前的边界。内存对上界是连续地分配空间,甚至一些元素可为空。和CArray一样,CArray索引元素的访问时间是不变的,与数组大小无关。提示:在使用一个数组之前,使用SetSize建立它的大小和为它分配内存。如果不使用SetSize,则为数组添加原创 2017-06-29 16:31:54 · 5067 阅读 · 0 评论 -
MFC整型和字符串互相转换
CString d; d.Format(_T("%d"),c);//整型转字符串 AfxMessageBox(d); int e = _ttoi(_T("123"));//字符串转整型原创 2017-07-18 12:31:14 · 11696 阅读 · 0 评论 -
SetRegistryKey函数
在MFC的CWinApp类的启动成员函数中,会一个SetRegistryKey函数,他的作用是在程序启动时读写注册表数据 SetRegistryKey(_T(""));//这一句必须有,否则下面语句无效,创建一个主键,可以为空,即以应用程序名为主键 CString a=_T("hello"); WriteProfileString(_T("Login"),_T("UserName"),a)原创 2017-07-17 11:51:21 · 2073 阅读 · 0 评论 -
MFC创建非模态子窗口
在第一个窗口中,创建第二个窗口,代码如下:#include "second.h"//第二个窗口头文件void CtestDlg::OnBnClickedButton6(){ SecondDig *pDig = new SecondDig; pDig->Create(IDD_Second); pDig->ShowWindow(SW_SHOWNORMAL);}如果想在第二个窗口原创 2017-07-21 19:33:10 · 864 阅读 · 0 评论 -
MFC的COleDateTime类的使用
COleDateTime a; CString b = _T("2012-12-24 15:30:48"); bool f = a.ParseDateTime(b,LOCALE_NOUSEROVERRIDE);//字符串转日期 int c = a.GetHour();//取出时间 //获取系统当前时间 COleDateTime dateTest; dateTe原创 2017-07-18 12:28:30 · 2702 阅读 · 0 评论 -
UDP通信
UDP服务器代码如下:#include "stdafx.h"#include #include #pragma comment(lib,"ws2_32.lib")#define PORT 9000 //对外服务端口using namespace std;int _tmain(int argc, _TCHAR* argv[]){ WSADATA wsaData={0};原创 2017-08-02 17:53:57 · 246 阅读 · 0 评论 -
VS2010常用快捷键
F10 单步调试F11 步入调试Shift+F10跳出过程F5 启动调试Shift+F5 停止调试F7 生成方案Ctrl+F7 编译生成Shift+Alt+Enter 全屏/退出Shift+Ctrl+u 大写Ctrl+u 小写Shift+Ctrl+F9 删除所有断点Ctrl+k+C原创 2017-07-21 14:38:30 · 169 阅读 · 0 评论 -
C++Builder6 for SDK窗口编程
SDK窗口编程,在C++builer6上编译通过//---------------------------------------------------------------------------#include #include #pragma hdrstop//----------------------------------------------------------原创 2017-07-31 18:51:57 · 609 阅读 · 0 评论 -
TCP通信
C语言编写TCP通信,TCP服务器端代码如下:#include "stdafx.h"#include #include #pragma comment(lib,"ws2_32.lib")#define PORT 9000 //对外服务端口using namespace std;int _tmain(int argc, _TCHAR* argv[]){ WSADATA原创 2017-08-03 14:41:47 · 215 阅读 · 0 评论 -
VC中的Tab控件使用
VC中的Tab控件调用与VB、C++buider有点不一样。在VB或C++builder中,添加标签的时候,同时创建了页面窗口。在VC中,添加页标签时,要自己创建无边框窗口,嵌入到Tab控件中。步骤如下:1、在主窗口上,放上Tab控件,并关联变量m_tab2、在资源中,创建两个无边框窗口,创建相应的窗体类Dlg_page1,Dlg_Page2。窗口属性Border:None,Style原创 2017-08-11 09:17:48 · 740 阅读 · 0 评论 -
在内存中显示位图
在内存位图中绘图,并显示。代码如下: HDC hdc=GetDC(hwnd); RECT rect; GetClientRect(hwnd,&rect); int cxClient = rect.right; int cyClient = rect.bottom; //为显示设备创建一块相应的内存 HDC hdcmem = Cre原创 2017-08-07 21:12:58 · 748 阅读 · 0 评论