您的位置:首页 > 其它

MFC中错误知识总结(一)

2014-10-09 21:02 218 查看
1、在继承与派生中,单目:表示派生,双目::表示继承,例如

class A
{
public:
void c();
};
class B: public A
{};         //类B继承类A

void A:: c()
{

};  //A派生成员函数c


2、获取窗口的指针、句柄以及窗口的指针

CWnd   *pWnd   =   GetDlgItem(ID_***); // 取得控件的指针
HWND hwnd = pWnd->GetSafeHwnd();   // 取得控件的句柄
CDC* pdc = pwnd->GetWindowDC();  //取得CDC的指针


3、CString中的Format()函数的用法:

  CString str;

  int a=3;

  str.Format("%d",a); //这里表示的是str=“3”,3以字符串的形式传给str。

4、在运行其他的地方复制MFC程序,在修改VC++目录的“包含目录”和“库目录”的路径时候,如果原来已经默认设置继承的值(下图),只需要将包含目录下的路径给删除掉,然后包含目录和库目录(红色矩形方框中)右端的下拉菜单中选择“从父级或项目默认设置继承”,就OK了。





5、同名全局变量与局部变量的区别:

实例一:

void function()
{
int x=1; //在这个局部函数中,x的值1,它是个局部变量
}
main()
{
int x=0;
function() ; //执行完function,main函数中,x的值是0,它也是个局部变量
}
//在{}中定义的变量全是局部变量,各函数中的同名变量各不相关。打个比方:就是老张家的小三和老李家的小三同名,但各不相干!


实例二:不处在任何一对{}中的变量,就称之为全局变量,一般我们把这些全局变量定义在文件头。如:

int x=0;
void function()
{
x=1;    //在这个局部函数中,x的值1,而且这个x是全局变量x (因为x在这函数内没有定义,所以它是全局变量)
}

main()
{
int x=9;  //这是个局部变量,全局变量x在这里被隐藏了,你是看不到的。(x在main函数内定义,所以它是局部变量)
function() ; //执行完function,main函数中的x的值是9,而全局变量x的值是1
}
//全局变量遇到同名的局部变量,全局变量在这个函数中暂时消失!只要出了这个函数就会再现


6、wstring与string的区别:wstring是宽char,Unicode编码,一般情况下一个字符占两个字节大小;string是窄char,AscII编码,一个字符占一个字节大小

7、在单文档MFC程序中,如果仅想添加Dialog对话框,那么直接在资源位图中Dialog中点击鼠标右键,选择”插入Dialog“就行,不必选择”添加资源“,在”添加资源“中给出为属性对话框,而采用DoModal是不能显示指定的对话框

8、当VS2010窗口布局打乱后恢复到默认:窗口->重置窗口布局

9、注意printf与sprintf的区别

  int printf (const char* szFormat,......); //第一个参数是一个格式字符串,后面是与格式字符串中的代码相对应的不同类型的多个参数

  int sprintf(char* szBuffer, const char* szFormat,.....);//第一个参数是一个字符缓冲区;后面是一个格式字符串。sprintf并不是将格式化结果写到标准输出,而是将其存入szBuffer。该函数返回字符串的长度,在字符模式编程环境中,

  printf("The sum of %i and %i is %i",5,3,5+3);

的功能等同于以下语句:

char szBuffer[100];

  sprintf(szBuffer,"The sum of %i and %i is %i",5,3,5+3);

10、


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: