2010年5月12日星期三

DrawText 与 DraqTextEx的区别

在第2个函数第二个参数的地方 Drawtext 是 LPCTSTR 而 DrawtextEx是 LPTSTR在使用 CString的时候 需要转换Drawtext 可以直接引用CString型变量 而DrawtextEx 需要做一个转换DrawTextEx(hdc, (LPTSTR)(LPCTSTR)szTextJP, -1, &myRect, MY_TEXT_FORMAT, &dtp);


参考引文:CString LPCTSTR LPTSTR 类型的相互转化
  // 変数定義
  LPTSTR s_t;
  LPCTSTR s_ct;
  CString str;
  CString sResult;
  
  const i_ct = 5;
  int i = 10;
  const int *p_ct = &i_ct;
  int *p = &i;
  //メンッド1.CString -> LPTSTR
  //初期化する
  s_t="NULL";
  s_ct="NULL";
  str="SecBug";
  
  //変換する
  s_t = (LPTSTR)(LPCTSTR)str;
  //結果お表示する
  sResult = CString("変換 CString から LPTSTRまで, OK : ") + s_t;
  MessageBox(sResult);
  //メンッド2.CString -> LPCTSTR
  //初期化する
  s_t="NULL";
  s_ct="NULL";
  str="SecBug";
  
  //変換する
  s_ct = str;
  //結果を表示する
  sResult = CString("変換 CString から LPCTSTRまで, OK : ") +s_ct;
  MessageBox(sResult);
  //メンッド3.LPCTSTR -> LPTSTR
  //初期化する
  s_t="NULL";
  s_ct="NULL";
  str="SecBug";
  
  //変換する
  s_ct = str;
  // s_t = s_ct; //error , the same with p = p_ct;
  //結果を表示する
  sResult = CString("変換 LPCTSTR から LPTSTRまで, NG ") ;
  MessageBox(sResult);
  //メンッド4.LPTSTR -> LPCTSTR
  //初期化する
  s_t="Sec";
  s_ct="Bug";
  str="SecBug";
  
  //変換する
  s_ct = s_t ;//wright, the same with p_ct=p;
  //結果を表示する
  sResult = CString("変換 LPTSTR から LPCTSTRまで, OK ") + s_ct;
  MessageBox(sResult);

没有评论: