MFC操作

小编 2026-06-05 阅读:615 评论:0
如何在vs中新建一个MFC Application项目: http://jingyan.baidu.com/album/3ea51489cd23d352e71bba71.html?picind...

如何在vs中新建一个MFC Application项目:
http://jingyan.baidu.com/album/3ea51489cd23d352e71bba71.html?picindex=4
http://www.jizhuomi.com/school/c/190.html

插入符的显示
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

int CMFCApplication1_5View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

//创建设备描述表
CClientDC dc(this);
//定义文本信息结构体变量
TEXTMETRIC tm;
//获得设备描述表中的文本信息
dc.GetTextMetrics(&tm);
//根据字体大小,创建合适的插入符
CreateSolidCaret(tm.tmAveCharWidth/8, tm.tmHeight);
//显示插入符
ShowCaret();

return 0;

}
//插入符随鼠标的移动
void CMFCApplication1_5View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetCaretPos(point);//插入符移动到鼠标左键单击处

m_strLine.Empty();//清空内容
m_ptOrigin = point;//保存鼠标的坐标值
CView::OnLButtonDown(nFlags, point);

}

如果希望输入的图形或者文字始终都在窗口上显示的话,就应该在OnDraw里面操作
void CMFCApplication1_5View::OnDraw(CDC* pDC)
{
CMFCApplication1_5Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CString str(“11111111111111111”);
pDC->TextOut(0,0,str);

if (!pDoc)
	return;

// TODO: add draw code for native data here

}

//设置可以在视图框中输入的功能
CMFCApplication1_5View::CMFCApplication1_5View()
{
// TODO: add construction code here
m_strLine = “”;
m_ptOrigin = 0;
m_nWidth = 0;
}
void CMFCApplication1_5View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//设置可以在视图框中输入的功能
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if (0x0d == nChar)
{
m_strLine.Empty();
m_ptOrigin.y += tm.tmHeight;
}
else if (0x08 == nChar)
{
COLORREF clr = dc.SetTextColor(dc.GetBkColor());//这个函数将会返回文本先前的颜色
dc.TextOut(m_ptOrigin.x, m_ptOrigin.y, m_strLine);
m_strLine = m_strLine.Left(m_strLine.GetLength() - 1);
dc.SetTextColor(clr);
}
else
{
m_strLine += (TCHAR)nChar;
}

//设置插入符随字符的输入而移动的功能
CSize sz = dc.GetTextExtent(m_strLine);//GetTextExtent函数就可以得到字符串的宽度
CPoint pt;
pt.x = m_ptOrigin.x + sz.cx;
pt.y = m_ptOrigin.y;
SetCaretPos(pt);


dc.TextOut(m_ptOrigin.x, m_ptOrigin.y, m_strLine);

CView::OnChar(nChar, nRepCnt, nFlags);

}

AfxMessageBox((“click”));
错误 error C2665: ‘AfxMessageBox’ : None of the 2 overloads could convert all the argument types
解决方法:
AfxMessageBox(_T(“click”));

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//设置某个菜单项复选
GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);
//GetSubMenu找到子菜单的作用
//MF_BYPOSITION表示根据索引号来访问菜单项
//MF_CHECKED设置菜单项的复选标志

GetMenu()->GetSubMenu(0)->SetDefaultItem(1, TRUE);//设置某个菜单项变粗
//设置禁用菜单项
GetMenu()->GetSubMenu(0)->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED);

SetMenu(NULL);//移除当前的菜单
//重新装载菜单
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
SetMenu(&menu);
menu.Detach();//将菜单句柄与菜单对象分离

//在子菜单中添加菜单
CMenu menu1;
menu1.CreateMenu();
menu1.AppendMenu(MF_POPUP, (UINT)menu1.m_hMenu, _T(\"Hello33\"));
//在已有的菜单项目中插入 菜单项目
GetMenu()->InsertMenu(2, MF_POPUP | MF_BYPOSITION, (UINT)menu1.m_hMenu, _T(\"Hello1\"));
menu1.Detach();

//根据位置索引并删除它
GetMenu()->GetSubMenu(2)->DeleteMenu(0, MF_BYPOSITION);
return 0;

}

void CTestDlg::OnClickedBtnAdd()
{
// TODO: Add your control notification handler code here
int num1, num2, num3;
num1 = GetDlgItemInt(IDC_EDIT1);//获得静态文本框对象
num2 = GetDlgItemInt(IDC_EDIT2);

num3 = num1 + num2;

SetDlgItemInt(IDC_EDIT3, num3);//设置静态文本框对象

}

error C2664: ‘void CWnd::SetDlgItemTextW(int,LPCTSTR)’ : cannot convert argument 2 from ‘const char [7]’ to ‘LPCTSTR’
SetDlgItemText(IDC_BUTTON1, “收缩<<”);改为SetDlgItemText(IDC_BUTTON1, _T(“收缩<<”));
或者在新建项目时,把使用UNICODE字符集取消

//如果希望在程序窗口创建之前修改他的外观和大小,在此函数中修改
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~FWS_ADDTOTITLE;
cs.lpszName = _T(“http://www.tonghao.com”);//修改文档的标题
}

如果出现这种错误:
strResult.Format(\"%d\",\"%c,%f,%s\",i,ch,f,str);
error C2664: ‘void ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Format(UINT,…)’ : cannot convert argument 1 from ‘const char [3]’ to ‘const wchar_t *’ d:\\test\\mfcapplication13_1\\mfcapplication13_1\\mfcapplication13_1view.cpp 117 1 MFCApplication13_1
改正后:
将项目的格式转化为multi-byte;
//向文件中写入数据
void CMFCApplication13_1View::OnFileWrite()
{
// TODO: Add your command handler code here
//构造CFile文件对象
CFile file(_T(“1.txt”),CFile::modeCreate | CFile::modeWrite);
//构造存档对象
CArchive ar(&file,CArchive::store);
int i = 4;
char ch = ‘a’;
float f = 1.3f;
CString str(_T(“http://www.sunxin.org”));
//保存数据
ar << i << ch << f << str;

}
//向文件中读出数据
void CMFCApplication13_1View::OnFileRead()
{
// TODO: Add your command handler code here
//构造CFile文件对象
CFile file(_T(“1.txt”),CFile::modeRead);
//构造存档对象
CArchive ar(&file,CArchive::load);
int i;
char ch;
float f;
CString str;
CString strResult;
//读取数据
ar >> i >> ch >> f >> str;
strResult.Format(_T(\"%d\"),\"%c,%f,%s\",i,ch,f,str);
//将读取的数据显示出来
MessageBox(strResult);
}

//当自己写一个响应函数的时候
afx_msg void OnFileWrite();//afx_msg表明该标识符表示这个函数确实是一个菜单命令消息响应函数
ON_COMMAND(IDM_FILE_WRITE, &CMFCApplication13_1View::OnFileWrite)
void CMFCApplication13_1View::OnFileWrite()

//当出现这种问题的时候
void CChatDlg::OnSock(WPARAM wParam,LPARAM lParam){}
error C2440: ‘static_cast’ : cannot convert from ‘void (__thiscall CChatDlg:

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

上一篇:koa-router源码分析 下一篇:CSS Content 属性
热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表