MFC学习问题总结
1.学习MFC添加位图,无法获取其ID
1).点击视图->其他窗口->资源视图,你会发现“无法在此窗口显示”,找到resource.h文件,关闭即可重新走一遍上面的过程就会发现可以打开了。
2).资源视图,右键->添加资源->新建Bitmap,然后在新建的bitmap上随便画点东西,保存,点开bitmap文件,就会看到有了IDB_BITMAP1当然也可以在最下面属性窗口进行修改,保存,完了之后,程序可能仍然会显示“未能识别的标识符”等等,不用管,重新编译,即可通过,重新画图就可以了。
2.如何添加消息响应和成员变量?项目->类向导。
3.MoveToEx()与MoveTo()的区别
CDC::MoveTo
CPoint MoveTo( int x, int y );CPoint MoveTo( POINT point );
Return:The x- and y-coordinates of the previous position as a CPoint object
:MoveTo由CDC类的对象调用,可以输入点的位置或点类,返回前一点的位置。
MoveToEx()
BOOL MoveToEx(
HDC hdc, // handle to device context
int X, // x-coordinate of new current position
int Y, // y-coordinate of new current position
LPPOINT lpPoint // old current position
);
,为全局函数,调用时使用::符号,功能->移动到当前点的位置,保存前一点的位置。
{
CRect rect;
GetClientRect(rect);
ClientToScreen(rect);
point = rect.TopLeft();
point.Offset(5, 5);
}
CMenu menu;
VERIFY(menu.LoadMenu(CG_IDR_POPUP_TYPING_TEST_VIEW)); //CG_IDR_POPUP_TYPING_TEST_VIEW为菜单ID,不唯一每个人建的不一样名称也不一样
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this;
while (pWndPopupOwner->GetStyle() & WS_CHILD) pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,pWndPopupOwner);
}
//{
// // TODO: 在此添加命令处理程序代码
// MessageBox(_T("View Show"));
//}
2)//afx_msg void OnShow();
3)//ON_COMMAND(ID_ABC_32773, &CMFC03View::OnShow)
int num1, num2, num3;
char ch1[], ch2[], ch3[];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1, );
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2, );
num1 = atoi(ch1);
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, );
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
编译出错:
错误 1 error C2664: “void CWnd::GetWindowTextW(CString &) const”: 无法将参数 1 从“char [10]”转换为“LPTSTR” c:\users\documents\visual studio 2013\projects\mfc05\mfc05\mfc05dlg.cpp 97 1 MFC05
错误 2 error C2664: “void CWnd::GetWindowTextW(CString &) const”: 无法将参数 1 从“char [10]”转换为“LPTSTR” c:\users\documents\visual studio 2013\projects\mfc05\mfc05\mfc05dlg.cpp 98 1 MFC05
错误 3 error C2664: “void CWnd::SetWindowTextW(LPCTSTR)”: 无法将参数 1 从“char [10]”转换为“LPCTSTR” c:\users\documents\visual studio 2013\projects\mfc05\mfc05\mfc05dlg.cpp 103 1 MFC05
原因总结:字符集配置不同。
改正方法:
int num1, num2, num3;
TCHAR ch1[], ch2[], ch3[];/*16个字节的字符,宽字符*/
GetDlgItem(IDC_EDIT1)->GetWindowText((ch1), );
GetDlgItem(IDC_EDIT2)->GetWindowText((ch2), );
num1 = _ttoi(ch1);/*转换宽字符的字符串为整数,#define _ttoi _wtoi*/
num2 = _ttoi(ch2);
num3 = num1 + num2;
_itot(num3, ch3, );/*转换整数为宽字符字符串 #define _itot _itow*/
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
9.VS2013里面并没有WM_INITDIALOG消息,怎么添加消息响应函数呢?
方法:选择视图->类视图,其他窗口->属性管理器,在类视图里面找到相应的CDialog类,选中,属性管理器下面显示的内容就会发生变化,点击绿色的小正方体(第六个图标),就会发现很多函数名,其中之一就是OnInitDialog,编辑代码即可。
10.编译出错:Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.
原因:使用的数组越界,如定义ch[5],若使用ch[5],就会出现此问题
修改方法:数组扩大或查看使用数组下标是否越界。
11.使用#include <fstream.h>,运行时会出现error C1083: 无法打开包括文件: “fstream.h”: No such file or directory
修改方法:#include <fstream>
using namespace std;
12.字符常量不能在MessageBox()函数中输出,解决方法char ch[10];CString str(ch);MessageBox(str);
13.在进行socket编程的时候,在同一个解决方案下的客户端和服务端两个程序只能执行一个,解决方法:打开两个VC,分别运行客户端和服务端,则可以实现客户端和服务端之间的通信。
MFC学习问题总结的更多相关文章
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- MFC学习笔记(一)
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...
- MFC学习-第一课 MFC运行机制
最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...
- 初识MFC学习——Hello World
MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...
- 我的MFC学习之路(一)
因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...
- MFC学习指南大纲
最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.
- 【MFC学习笔记-作业7-小型画图软件】【】
作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.n ...
随机推荐
- MyBatis主键生成器SelectKeyGenerator(三)
前面两篇博客我们介绍了MyBatis主键生成器KeyGenerator(一)和MyBatis主键生成器Jdbc3KeyGenerator(二),接下来我们介绍SelectKeyGenerator, 如 ...
- 判断无向图是否有环路的方法 -并查集 -BFS
可以利用并查集或者带颜色标记的BFS(来自算法导论)判断. 首先介绍第一种,用并查集来判断: 首先初始化所有元素的根为-1,-1代表根节点,接下来对于图中的每一条边(v1,v2)都并入集合,并入的方式 ...
- XML解析之SAX解析过程代码详解
上一篇谢了解析原理和过程,这里应用代码直观认识这个原理: 新建Demo1类: import java.io.File; import javax.xml.parsers.SAXParser; impo ...
- JDK6和JDK7中String的substring()方法及其差异
翻译人员: 铁锚 翻译日期: 2013年11月2日 原文链接: The substring() Method in JDK 6 and JDK 7 在JDK6与JDK7这两个版本中,substri ...
- UIPassValue页面传值 UI_08(下)
2.从前一个界面到后一个界面 注意:解题思路 葵花宝典:属性传值 第一步:在下一个界面视图控制器的.h文件中定义一个属性 第二步:在push之前将数据存储到属性中 第三步:取出属性中的值让控件 ...
- 【翻译】Ext JS 5:为不同设备设置不同的主题
原文:Sencha Ext JS 5: Supporting Different Themes for Different Devices 步骤1创建一个应用程序 步骤2定义主题 步骤3编辑Appjs ...
- javascript之DOM编程增加附件
在开始这个案例之前,需要学习一下有关于根据子关系节点获取标签的几个方法.罗列如下 /*通过关系(父子关系.兄弟关系)找标签.parentNode 获取当前元素的父节点.childNodes 获取当前元 ...
- MySQL学习笔记_5_SQL语言的设计与编写(上)
SQL语言的设计与编写(上) 一.SQL语句分类 数据定义语言(DDL): 用于定义和管理数据对象,包括数据库.数据表.视图.索引等.例如:CREATE.DROP.ALTER等语句. 数据操作语言(D ...
- ARM v7汇编与相关练习
程序入口: _startc 语言入口: main@: 注释;main: 标签;伪指令: 给汇编器读的指令;.global main ...
- java数据类型易错点简单总结,欢迎大神前辈补充!谢谢
数据类型那这边看似简单,花了我很长时间也就是才练到几成"功力"吧.还希望路过的大神在下面补充,菜鸟的我深受感谢! 首先看两个思考题 思考题1:请问下面这个有没有问题 double ...