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
);
,为全局函数,调用时使用::符号,功能->移动到当前点的位置,保存前一点的位置。
 4.如何添加PopUpMenu()控件?
VS2008,10,12,13中似乎都没有PopUpMenu控件,如何添加呢?我们可以变通一下,找到类向导->选择View类,添加WM_CONTEXTMENU,编辑代码,就会发现出来了一个OnContextMenu函数(),并在其中添加:
if (point.x == -1 && point.y == -1) 
 { 
  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); 
}
5.如何对新建的IDR_MENU1菜单的菜单项添加响应函数?
:资源视图-》点开IDR_MENU1->显示-》右键-》添加事件处理程序,自行修改类和函数名即可。
6.VS2013无法直接删除成员函数?
:找到指定的成员函数,需要修改三处,
1)//void CMFC03View::OnShow()

//{
// // TODO: 在此添加命令处理程序代码
// MessageBox(_T("View Show"));
//}

2)//afx_msg void OnShow();

3)//ON_COMMAND(ID_ABC_32773, &CMFC03View::OnShow)

 7.类型转换
一般的转换方式,强制转换:如类型T1转换为类型T2,T2=(T2)T1;
非一般的转换方式:
const char->LPCSTR: LPCSTR =_T(const char);
     UINT->CString   :CString=wchar_t(UINT);
 8.在孙鑫的MFC第八讲对话框编程中大家可能会遇到:
     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学习问题总结的更多相关文章

  1. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  2. MFC学习笔记1---准备工作

    什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...

  3. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

  4. MFC学习笔记(一)

    个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...

  5. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  6. 初识MFC学习——Hello World

    MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...

  7. 我的MFC学习之路(一)

    因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...

  8. MFC学习指南大纲

    最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.

  9. 【MFC学习笔记-作业7-小型画图软件】【】

    作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.n ...

随机推荐

  1. ROS_Kinetic_13 ROS数据录制与回放

    ROS_Kinetic_13 ROS数据录制与回放 官网教程:http://wiki.ros.org/cn/ROS/Tutorials/Recording%20and%20playing%20back ...

  2. Cocos2D:塔防游戏制作之旅(十五)

    Yes,貌似添加了好多的代码啊 ;] ,在你添加更多代码时,你可能注意到一些Xcode中的一些警告.首先你先忽略这些警告,我们先添加少量最终缺失的部分,然后再来解释上面代码做了什么! 在Enemy.m ...

  3. Mybatis事务(三)事务工厂

    在前面一篇博客Mybatis事务(一)事务管理方式中我们提到,mybatis及spring提供了三个事务实现类:JdbcTransaction.ManagedTransaction和SpringMan ...

  4. Linux下触摸屏驱动程序分析

    [摘要: 本文以linux3.5--Exynos4412仄台,剖析触摸屏驱动焦点内容.Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos4412 ...

  5. 《java入门第一季》之面向对象(代码块一网打尽)

    上一篇里面对代码块做出介绍,这里给出一个面试题,加深印象. 如有毁三观的地方,请见谅.拒绝黄赌毒 写程序的执行结果. class Student { static { System.out.print ...

  6. Java的依赖注入(控制反转)

    两个主角"依赖注入"和"控制反转": 1.二都说的都是同一件事,只是叫法不同.是一个重要的面向对象编程的法则,也是一种设计模式: 2.英文原称:依赖注入,Dep ...

  7. linux上 java 使用 javasqlite

    linux上 java 使用 javasqlite http://www.ch-werner.de/javasqlite/ 1) 下载: http://www.ch-werner.de/javasql ...

  8. LeetCode之“字符串”:ZigZag Conversion

    题目链接 题目要求: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

  9. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型

    一  .   常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...

  10. iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用

    键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的 ...