小第正在入门VC,问一些问题,可能对你们来说很简单,我的msdn不完全,我是真查不到才问的,只要答一题就可得10分。
问题1:怎么读出列表框中用户选中的行的字符串,我试过了用:GetLBText(),可提示它不是列表框的成员函数。问题2:
怎么得到组合框中用户输入的字符串,我知道它有GetLBText()成员函数,可参数是多少呢?我用GetCurSel()试了,只要不选择,它返回的是-1,所以肯定不行。问题3:
我用MFC建了个基于对话框的工程,于是生成CAboutDlg,CXXXApp,CXXXXDlg三个类,请问他们的关系,谁调用谁,还是并列?问题4:
类似于
//{{AFX_DATA(...)
...
...
}}//AFX_DATA
中的东西是什么,哪些数据会被放在里面?问题5:
类似于enum{IDD=IDD_ABOUTBOX}的语句是什么东西?问题6:
假如我做了三个Edit框,UpDateData()会更新所有三个框中的数据,如果我只要更新一个怎么办?问题7:
请告诉我一个发声函数,越简单越好,没有参数的最好,我只是调试时用。问题8:
LINK:Waring LNK4089:all references to "SHELL32.dll" discarded by OPT:RET
是什么错误,但我用共享dll编译程序时,却没有此错误,只有在用静态时才有。问题9:
AfxMessageBox("xxxx");AfxMessageBox(TEXT("xxxx"));
AfxMessageBox(_T("xxxx"));这三个调用有什么区别?问题10:
在用SDK编程时,消息处理函数前我见过两种标识LRESULT FAR PASCAL和
LRESULT CALLBACK请问他们的区别在哪里,是什么意思?

解决方案 »

  1.   

    问题1:
    int CListBox::GetCurSel();
    int GetText( int nIndex, LPTSTR lpszBuffer ) const;
    void GetText( int nIndex, CString& rString ) const;
    得到当前选择的字符串
    假如你的列表框控件为listbox;
    CString str;
    listbox.GetText(listbox.GetCurSel(),str);问题2:
    响应CComboBox的CBN_EDITCHANGE消息,调用CComboBox::GetWindowText(CString &str)得到输入的字符.
    问题3,建议你看看MFC程序设计之类的书,上面讲的很详细.问题4:
    For dialog boxes, form views, and record views, ClassWizard creates and edits three other sections that are ed with special format comments: Member variable declarations in the class header file: 
    //{{AFX_DATA
    ..
    //}}AFX_DATAMember variable initialization in the class implementation file: 
    //{{AFX_DATA_INIT
    ..
    //}}AFX_DATA_INITData-exchange macros in the implementation file: 
    //{{AFX_DATA_MAP
    ..
    //}}AFX_DATA_MAP
    问题5:
    如果仅从语法角度看,是一个枚举变量的声明,它表示对话框的资源ID.问题6:
    你可以调用任一派生自CWnd的C++类的UpdateData()函数.问题7:
    BOOL MessageBeep(
      UINT uType   // sound type
    );
     
    Parameters
    uType 
    Specifies the sound type, as identified by an entry in the [sounds] section of the registry. This parameter can be one of the following values: Value Sound 
    0xFFFFFFFF Standard beep using the computer speaker 
    MB_ICONASTERISK SystemAsterisk 
    MB_ICONEXCLAMATION SystemExclamation 
    MB_ICONHAND SystemHand 
    MB_ICONQUESTION SystemQuestion 
    MB_OK SystemDefault 没有时间了,剩下的三个一会再帖出来:)
      

  2.   

    回完后我今天晚上给100分,我现在没带笔。谢谢高手指点,我是新手,正入门win编程。什么时候
    我去买部完整的msdn,可能就不会问很低级的问题了,因为有些东西虽然低级,但只要不知道,再
    好的戏也出不来啊!
      

  3.   

    别外enum{IDD=IDD_ABOUTBOX}只有一个变量,怎么枚举呢,如果有多个变量的话,那在一个时刻就只能表达一个变量了,为什么要设置成枚举,有什么好处?
      

  4.   

    此处为枚举常量,使用枚举的好处是只能声明该枚举的类的成员可以使用该枚举变量.问题8:
    OPT:RET ?!
    没有这个选项,应该是OPT:REF吧?
    使用 /OPT:REF 来排除没有引用的函数或数据.是编译器优化的结果.问题9:
    _T和_TEXT是一样的,用以在声明_UNICODE 的情况下把其所映射的字符转化为相应的unicode字符集.问题10:
    CALLBACK 在应用程序回调函数如windows 过程和对话框过程中取代FAR PASCAL .后者现在已经被废弃.讲到这里就一定要谈下calling conventions:
    __cdecl, __stdcall, __fastcall,他们声明的函数在栈的维护和参数入栈顺序方面存在差异以满足不同的需要.规则如下:
      关键字               栈的清空(维护者)                  参数传递
     __cdecl                 调用者                     入栈,反序(右->左) 
     __stdcall              被调用者                    入栈,反序(右->左)
    __fastcall              被调用者                     存寄存器,入栈
    thiscall(不是关键字)    被调用者                    入栈,this指针存入ECX废弃的关键字:
     __pascal, __fortran, 和 __syscall 
      

  5.   

    问题6方法一:
    对三个Edit框设置响应变量(类型为CEdit)m_edit1,m_edit2,m_edit3
    选择你需要更新的(如m_edit1),在代码中m_eidt1.UpdateData();
      

  6.   

    _pascal是指参数传递是从左到右吧
      

  7.   

    风歌,这么说就好了,其实我通过国家计算机水平考试高级程序员,但你也知道,它考的是dos下的编程,目前我正在入门windows编程,定我高兴的是我快要入门成功了!windows的消息驱动我早就明白,不过我不熟悉VC的使用,当然也还有很多windows下的机制也不熟悉,我曾经几次想转向windows编译,可是都失败了,这次我是先从win API开始学习的,这样果然有效,它使我找到了一点在dos下编程感觉!了解了一些API知识,再学MFC,就容易多了。