C++(MFC)编程中遇到的的一些函数

时间:2024-08-10 00:03:26

memset

  void *memset( void *dest, int c, size_t count );

  dest:

    Pointer to destination

  c:

    Character to set

  count:

    Number of characters  

     注意:这里count代表字符个数(字节数),如果为整数则为:整数个数*sizeof(int)

_T与L宏

  L宏为宽字节宏,无论什么环境下都能转化为宽字符,即Unicode字符;

  _T宏为一个适配宏,可使编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式(将括号后字符串转化为合适的类型),可增加程序的移植性,一般加上好。如_T('\')

GetClientRect(LPRECT)与GetWindowRect(LPRECT)区别

  GetClientRect(LPRECT):获取控件大小,其left和top一定为0,right和bottom由窗口大小决定(相对于空间本身左上角得到的rect);

  GetWindowRect(LPRECT):获取窗口相对于主程序窗口的位置(坐标),之后调用ScreenToClient(LPRECT)可以把坐标从窗口坐标转化为客户区域坐标;

OnMouseWheel,与OnMButtonDown, OnMButtonUp中输入点坐标的区别

  OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)中pt表示鼠标点在屏幕坐标系中坐标,需要ScreenToClient(pt)才可转化到客户区坐标;

  OnMButtonDown(UINT nFlags, CPoint point), OnMButtonUp(UINT nFlags, CPoint point)等中point表示的就是鼠标位于客户区中坐标;

Tokenize-字符串分割

  声明:CStringT Tokenize( PCXSTR pszTokens , int& iStart ) const;

  功能:从iStart位置取出字符串中含pszTokens分割符间的内容;

  MFC实例:

CString str =_T("abc;efd;mfg");
  vector<CString>s;
int pos = 0;
for(int i=0;i<3;i++)
  {
s.push_back(str.Tokenize( “;” pos));
}

  结果: s[3 ] = {abc,efd,mfg};

  注意:pos值是不断变化的。每调用一地Tokenize,就移动一次,故只能用在提取时,用在其他地方(如判断语句条件中,会导致pos移动从而跳过某些字符串)

atoi与_wtoi——把字符串转换成整型数(ascii to int)

  声明:int atoi(const char *nptr);

    UNICODE中

     _wtoi(const wchar_t *str);

单个Radio控件是否选中设置:

((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);    //TRUE选中,FALSE未选中
((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck(); //状态获取,1——选上,0——没选上