ÈëÃÅÍæ×ªVC++2010 - ͼÎÄ

21

ÎÊÌâµÄ¸ù±¾¾ÍÊÇ×Ö·û¼¯ÎÊÌ⣬ÔÚVC6ÖУ¬ÎÒÃÇĬÈÏʹÓõÄÊǶà×Ö½Ú×Ö·û¼¯£¬¶øÏÖÔÚÎÒÃÇĬÈÏÐèÒªµÄÊÇUNICODE×Ö·û¼¯£¬¼òµ¥µÄ£¬ÎÒÃǰÑÕâ¸ö×Ö·û¼¯¸Ä³É¶à×Ö½Ú×Ö·û¼¯Õâ¸öÎÊÌâ¾Í½â¾öÁË£º

ÔÙÊÔÊÔÓ¦¸Ã¾Í¿ÉÒÔÁ˰ɣ¿µ«ÊÇÎÒ²¢²»ÍƼö´ó¼ÒÕâô×ö£¬ÒòΪÈÃ×Ô¼ºµÄ³ÌÐòÊÊÓ¦¸÷ÖÖ×Ö·û¼¯ÊÇÎÒÃÇд´úÂëµÄÈËÒå²»ÈݴǵÄÒåÎñ¡£ ÎÒÃǰѳÌÐò¸Ä³ÉÏÂÃæÕâÑù£º #include #include #include using namespace std;

int main() {

MessageBox( NULL, TEXT(\ÄãºÃHelloWorld£¡\MessageBox( NULL, _T(\ÄãºÃHelloWorld£¡\return 0; }

ÓÃÁ½¸öºêTEXT»òÕß_T¶¼¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣬ËüÃÇÁ½¸ö²¢Ã»ÓÐÌ«´óÇø±ð£¬Ò²ÐíÇø±ðÔÚÓÚǰÕßÊÇͨ¹ýwindows.hÍ·ÎļþÒýÈëµÄ£¬¶ø_TÊÇͨ¹ýtchar.hÒýÈëµÄ£¬ÎÒÍÆ¼ö´ó¼ÒʹÓÃ_TºÍtchar.h£¬ÒòΪtchar.h»¹°ïÖúÎÒÃÇÒýÈëÁËÆäËüһЩºÜÓÐÓõĺ꣬±ÈÈç_tcscpy_s£¬Õâ¸öºêÔÚʹÓÃUNICODE×Ö·û¼¯µÄʱºò±»Ìæ»»³Éwcscpy_s£¬ÔÚʹÓöà×Ö½Ú×Ö·û¼¯µÄʹÓñ»Ìæ»»³Éstrcpy_s¡£¹ØÓÚÕⲿ·ÖµÄÄÚÈÝ£¬Çë´ó¼Ò²»Òª´í¹ý¡¶WindowsºËÐıà³Ì¡·µÄµÚ¶þÕÂ(µÚËİæ»òµÚÎå°æ¶¼¿ÉÒÔ£©£¬ÒÔ¼°¡¶ÉîÈëѧϰC++ String2.1°æ¡·¡£ ËüÃǶ¼ÓÐÌáµ½¡£

22

ÓÐÈËÌý˵_T¿ÉÒ԰Ѷà×Ö½Ú×Ö·û´®×ª»»³ÉUNICODE£¬Òò´ËËûдÁËÈçϵĴúÂ룺 const char* pStr = \¹þ¹þ\

MessageBox( NULL, _T(pStr), _T(\

µ±È»£¬³ý·ÇÄãÔËÆøºÃµÄ×¥¿ñ£¬·ñÔòÄãÊDZàÒë²»¹ýÈ¥µÄ£¬ÎªÊ²Ã´ÄØ£¿ÎÒÃÇÏÖÔÚÓ¦¸ÃÖªµÀ¶ÔÓÚ\ÕâÑùµÄ×Ö·û´®£¬VC2010»áĬÈϵĽ«ËüÊÓΪconst char*£¬¼´¶à×Ö½Ú×Ö·û´®£¬¶øL\Ç°ÃæÓиöLǰ׺µÄ±»ÊÓΪUNICODE×Ö·û´®£¬ÕâºÍC#ÊÇÓÐÇø±ðµÄ£¬ÒòΪC#µÄ×Ö·û´®×ÜÊDZ»ÊÓΪUNICODE£¬C++/CLIÏÂÃæ±àÒëÆ÷Ò²»á°ïÖúÎÒÃÇ×öµ½Õâ¼þÊÂÇ飬ËùÒÔËüÃDz»ÐèÒªL(C++/CLI¼æÈÝLÕâÖÖд·¨£©¡£ ÈÃÎÒÃÇ¿´¿´_TµÄ¶¨Òå°É£º

#define wxCONCAT_HELPER(text, line) text ## line

/* could already be defined by tchar.h (it's quasi standard) */ #ifndef _T

#if !wxUSE_UNICODE #define _T(x) x #else /* Unicode */

/* use wxCONCAT_HELPER so that x could be expanded if it's a macro */ #define _T(x) wxCONCAT_HELPER(L, x) #endif /* ASCII/Unicode */ #endif /* !defined(_T) */

_TÔÚUNICODEÏÂÃæ×îÖÕ»á±»Ìæ»»³ÉL ## x¡£ ##ÊÇÒ»¸ö±àÒëÔ¤´¦ÀíÖ¸ÁÒâζ×ÅÈÃLºÍxÌùÔÚÒ»Æð£¬±ÈÈçL ## \×îÖÕ¾ÍÊÇL\£¬Òò´ËËü¿ÉÒÔ°Ñ\ת»»³ÉUNICODE×Ö·û´®¡£ÄÇΪʲôÉÏÃæµÄ³ÌÐò²»ÐÐÄØ£¿ÈÃÎÒÃÇ¿´¿´_T(\»á±»Ìæ»»³Éʲô£ºL ## pStr -> LpStr£¬Å¶£¬LpStrÊÇÒ»¸öеıêʶ·û£¬Èç¹ûÄãûÓж¨Òå¹ýËü£¬Ä㵱Ȼ²»ÄÜͨ¹ý±àÒëÀ²¡£

Òò´ËÎÒÃÇ¿ÉÒÔÁ˽⵽_TÕâÑùµÄºêÖ»ÄÜ´¦ÀíÖ±½ÓµÄ³£Á¿×Ö·û´®£¬²»ÄÜ´¦ÀíÆäËüµÄÇé¿ö¡£¶øÎÒÃÇÉÏÃæÑÝʾµÄÄÇÖÖÇé¿öÐèÒªÎÒÃǶ¯Ì¬µÄȥת»»±àÂ룬WindowsÓÐAPI¿ÉÒÔ°ïÖúÎÒÃÇ×öµ½£¬C¿âÒ²Óк¯Êý¿ÉÒÔ°ïÖúÎÒÃÇ¡£Ç¡ºÃÎÒÔø¾­Ð´¹ýÕâÑùµÄ´úÂ룬»¶Ó­´ó¼Ò²Î¿¼£ºASCII/UNICODE/UTF8×Ö·û´®»¥Ïàת»»µÄC++´úÂë

23

¶ÔÓÚ_Tºê£¬ÔÙ˵һµã¶«Î÷£¬»òÐíÄã»á¸Ðµ½Ææ¹ÖΪʲô_T²»Ö±½Ó¶¨Òå³É#define _T(x) L ## x£¬¶øÒªÈƸöȦ×ÓÈ¥µ÷ÓÃwxCONCAT_HELPERÄØ£¿Õâʵ¼ÊÉÏÉæ¼°µ½ºêÕ¹¿ªË³ÐòºÍ½Ø¶ÏµÄÎÊÌâ¡£ÔÚÕâÀÎÒÃÇÐèҪ˵һ¸öºê²ÎÊýµÄ¸ÅÄÕâºÍº¯ÊýµÄ²ÎÊýÊÇÀàËÆµÄ£¬ÕâÀï_T(x)µÄx¾ÍÊǺê²ÎÊý£¬ºÃ£¬¼ÇסÏÂÃæÒ»¾ä»°£º

Èç¹ûÄ㶨ÒåµÄºêÖÐʹÓÃÁË#»òÕßÊÇ##µÄ»°£¬ºê²ÎÊý½«²»»á±»Õ¹¿ª£¬Ò²¾ÍÊÇ˵_T(x)Èç¹ûÖ±½Ó¶¨Òå³ÉL##xÄÇôÔÚÏÂÃæÕâÖÖÇé¿ö¾Í»á³ö´í( PS: #ÊǸø²ÎÊý¼ÓÒýºÅµÄÒâ˼£©£º

_T(__FUNCTION__)£¬__FUNCTION__ÊÇÒ»¸öÔ¤¶¨ÒåµÄºê£¬Ëü´ú±íÁ˵±Ç°º¯ÊýµÄÃû×Ö£¬Õâ¸öÕ¹¿ª»áÊÇÊ²Ã´ÄØ£¿L__FUNCTION__¡£ÎªÊ²Ã´¼ä½Óµ÷ÓÃwxCONCAT_HELPER¾ÍÄܵõ½ÕýÈ·µÄ½á¹ûÄØ£¿ÒòΪµ±ÎÒÃǵ÷ÓÃwxCONCAT_HELPERµÄʱºò£¬__FUNCTION__ÒѾ­±»_TÕ¹¿ª³ÉÁ˺¯ÊýÃû¡£/*¼´²ÎÊýÈç¹ûÊǺ꣬Ôò²»Äܵõ½ÕýÈ·½á¹û£»Èç¹ûÊÇÖ±½ÓµÄ²ÎÊý£¬Ôò¿ÉÒÔ*/

˵¶àÁË˵¶àÁË£¬Èç¹ûÄã¾õµÃ¸´ÔÓ¿ÉÒÔÔÝÊ±Ìø¹ýÕâЩ¶«Î÷£¬ÎÒÖ»ÊÇ˳±ã˵˵¡£ ÖØ¶¨ÒåµÄ±àÒë´íÎóºÍÁ´½Ó´íÎó

ÈÃÎÒÃÇÔÚÏîÄ¿ÀïÃæÔÙÌí¼ÓÒ»¸öTest.hÍ·Îļþ£¬·½·¨ÊÇÓÒ»÷½â¾ö·½°¸ÖеÄÏîÄ¿£¬Ìí¼Ó£¬Ð½¨ÏC++Í·Îļþ£¬Ãû³ÆÊäÈëtest.h¡£È»ºóÎÒÃÇÔÚtest.hÖÐÊäÈ룺

/*#pragma once*/ void print() { }

»Øµ½main.cppÖУº #include using namespace std; #include \#include \

24

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)