zoukankan      html  css  js  c++  java
  • VC++学习/MFC (1)

      博客也落下好长时间了,之前有过c++学习和java学习的几篇,偶尔拿出来翻翻,对自己还蛮有帮助,上学期买了本孙鑫老师的《VC++深入详解》,看了4个单元然后就放寒假了,可能寒假期间一点都没有想到学习(惭愧),加上当时学的不深入,现在看起这本书居然感觉和没看过差不多!鉴于这样,我就打算重新认真的把这本书好好看一下,平时遇到什么问题我会在博客中写下,也方便我以后自己温故而知新。

       前面两个但愿重要讲了Windows程序内部运行机制,以及对C++的复习,书上是以vc6.0为平台的,我今天下载了一个visual studio2010,感觉还不错,然后就自己实践了一下书本上讲的 创建按钮。

        首先了解了父窗口和视窗口的概念,就会知道,CButton实在VIEW中创建的。

    然后在VIEW中添加一个类向导,VC6.0中是Add member variable...选择WM_CREATE,然后编辑

    在编辑过程中,我遇到了问题,在完成这段代码后在CV6.0中是正确的,在studio2010中会显示

    错误 1 error C2664: “CButton::Create”: 不能将参数 1 从“const char [9]”转换为“LPCTSTR” c:\users\administrator\desktop\test\test\test\testview.cpp 138 1 TEST

    int CTESTView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	// TODO:  在此添加您专用的创建代码
    	btn.Create("sdfwsfsd",WS_CHILD | BS_PUSHBUTTON,
    			CRect(0,0,100,100),this,123);
    	btn.ShowWindow(SW_SHOWNORMAL);
    	return 0;
    }
    

      

        上网查看后才发现,create函数第一个参数须为长指针,必须将“sdfwsfsd”改成_T("sdfwsfsd")才行,于是编译通过。

    关于_T():转载(http://hi.baidu.com/liuhuishan/blog/item/72dc921c90d54d8e87d6b687.html

    1\C++语言中“_T”是什么意思?

    Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。 

    如果将来你不打算升级到unicode,那么也不需要_T,

    ---------------------------------------------------------

    _t("hello world") 
    在ansi的环境下,它是ansi的,如果在unicode下,那么它将自动解释为双字节字符串,既unicode编码。 
    这样做的好处,不管是ansi环境,还是unicode环境,都适用。

    2\请问在vc++中的字符串_T("ABC")和一个普通的字符串“ABC”有什么区别。

    _T("ABC") 
    表示如果定义了unicode 
    它表示 L"ABC",每个字符为16位,宽字符字符串 
    ---------------------------------------------------------
    if not UNICODE 
    它就是ascii的"ABC",每个字符为8位 
    "ABC"就是指ascii字符串"ABC"

    ----------------------------------------------------------

    相当于 
    #ifdef _UNICODE 
    #define _T("ABC") L"ABC" 
    #else 
    #define _T("ABC") "ABC" 
    #endif

    ----------------------------------------------------------

    _T("ABC")中的一个字符和汉字一样,占两个字节,而在"ABC"中,英文字符占一个字节,汉字占两个字节

  • 相关阅读:
    Java程序员必知的8大排序(转载)
    Eclipse快捷键大全(转载)
    Java强引用、 软引用、 弱引用、虚引用(转)
    java数据类型二(转)
    为什么静态成员、静态方法中不能用this和super关键字(转)
    POJ 2002
    POJ 3126的教训
    POJ 3349
    POj 1105解题报告
    POJ 3278
  • 原文地址:https://www.cnblogs.com/shenshuyang/p/2977236.html
Copyright © 2011-2022 走看看