| 337 | } |
| 338 | |
| 339 | void ParseLayout(TiXmlElement *xmlNode,map<wstring,int> &vecName2ID,int & nStartId) |
| 340 | { |
| 341 | if(!xmlNode) return; |
| 342 | |
| 343 | const char * pszAttrName = xmlNode->Attribute("name"); |
| 344 | |
| 345 | if(pszAttrName) |
| 346 | {//��name���ԲŽ���id |
| 347 | wchar_t szName[100]={0}; |
| 348 | int nID = nStartId; |
| 349 | |
| 350 | MultiByteToWideChar(CP_ACP,0,pszAttrName,-1,szName,100); |
| 351 | bool isNameEmpty=true; |
| 352 | for(wchar_t *p=szName;*p;p++) |
| 353 | { |
| 354 | if(*p != L' ' && *p != L'\t') |
| 355 | { |
| 356 | isNameEmpty = false; |
| 357 | break; |
| 358 | } |
| 359 | } |
| 360 | if(!isNameEmpty) |
| 361 | { |
| 362 | if(vecName2ID.find(szName) == vecName2ID.end()) |
| 363 | { |
| 364 | const char *pszID = xmlNode->Attribute("id"); |
| 365 | if(!pszID) |
| 366 | { |
| 367 | nStartId++; |
| 368 | }else if(strnicmp(pszID,"ID",2) == 0) |
| 369 | {//ID����ID����IDOK��IDCANCEL |
| 370 | if(stricmp(pszID,"IDOK")==0) |
| 371 | nID = IDOK; |
| 372 | if(stricmp(pszID,"IDCANCEL")==0) |
| 373 | nID = IDCANCEL; |
| 374 | if(stricmp(pszID,"IDABORT")==0) |
| 375 | nID = IDABORT; |
| 376 | if(stricmp(pszID,"IDRETRY")==0) |
| 377 | nID = IDRETRY; |
| 378 | if(stricmp(pszID,"IDIGNORE")==0) |
| 379 | nID = IDIGNORE; |
| 380 | if(stricmp(pszID,"IDYES")==0) |
| 381 | nID = IDYES; |
| 382 | if(stricmp(pszID,"IDNO")==0) |
| 383 | nID = IDNO; |
| 384 | if(stricmp(pszID,"IDCLOSE")==0) |
| 385 | nID = IDCLOSE; |
| 386 | if(stricmp(pszID,"IDHELP")==0) |
| 387 | nID = IDHELP; |
| 388 | if(stricmp(pszID,"IDTRYAGAIN")==0) |
| 389 | nID = IDTRYAGAIN; |
| 390 | if(stricmp(pszID,"IDCONTINUE")==0) |
| 391 | nID = IDCONTINUE; |
| 392 | }else |
| 393 | { |
| 394 | nID = atoi(pszID); |
| 395 | } |
| 396 | vecName2ID[szName] = nID; |
no test coverage detected