Hex Artifact Content Вы: nobody
Вход

Artifact 1ac63f8394f438c3733cb961d6cf77265d17177f:


0000: 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 66 78  #include "stdafx
0010: 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 64  .h"..#include "d
0020: 65 76 5f 73 65 72 76 2e 68 22 0d 0a 0d 0a 76 6f  ev_serv.h"....vo
0030: 69 64 20 44 6f 4d 73 67 4c 69 6e 65 28 4c 50 43  id DoMsgLine(LPC
0040: 53 54 52 20 66 6f 72 6d 61 74 2c 20 4d 65 73 73  STR format, Mess
0050: 61 67 65 4d 61 72 6b 65 72 20 6d 61 72 6b 65 72  ageMarker marker
0060: 2f 2a 3d 6d 6d 4e 6f 6e 65 2a 2f 2c 2e 2e 2e 29  /*=mmNone*/,...)
0070: 0d 0a 7b 0d 0a 09 76 61 5f 6c 69 73 74 20 61 72  ..{...va_list ar
0080: 67 3b 0d 0a 09 76 61 5f 73 74 61 72 74 28 61 72  g;...va_start(ar
0090: 67 2c 6d 61 72 6b 65 72 29 3b 0d 0a 09 43 53 74  g,marker);...CSt
00a0: 72 69 6e 67 20 74 78 74 3b 0d 0a 09 74 78 74 2e  ring txt;...txt.
00b0: 46 6f 72 6d 61 74 56 28 66 6f 72 6d 61 74 2c 61  FormatV(format,a
00c0: 72 67 29 3b 0d 0a 09 70 42 6b 45 6e 64 55 49 2d  rg);...pBkEndUI-
00d0: 3e 44 6f 4d 65 73 73 61 67 65 4c 69 6e 65 28 74  >DoMessageLine(t
00e0: 78 74 2c 6d 61 72 6b 65 72 29 3b 0d 0a 7d 0d 0a  xt,marker);..}..
00f0: 0d 0a 76 6f 69 64 20 47 65 74 52 54 43 46 75 6c  ..void GetRTCFul
0100: 6c 28 43 52 75 6e 74 69 6d 65 43 6c 61 73 73 2a  l(CRuntimeClass*
0110: 20 72 74 63 2c 20 43 53 74 72 69 6e 67 26 20 53   rtc, CString& S
0120: 74 72 29 0d 0a 7b 0d 0a 20 20 20 20 69 66 20 28  tr)..{..    if (
0130: 72 74 63 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  rtc)..    {..   
0140: 20 20 20 20 20 53 74 72 2e 46 6f 72 6d 61 74 28       Str.Format(
0150: 22 25 73 25 73 25 73 28 25 58 68 2f 25 58 68 29  "%s%s%s(%Xh/%Xh)
0160: 22 2c 20 53 74 72 2c 20 22 3c 2d 22 2c 20 72 74  ", Str, "<-", rt
0170: 63 2d 3e 6d 5f 6c 70 73 7a 43 6c 61 73 73 4e 61  c->m_lpszClassNa
0180: 6d 65 2c 20 72 74 63 2d 3e 6d 5f 6e 4f 62 6a 65  me, rtc->m_nObje
0190: 63 74 53 69 7a 65 2c 20 72 74 63 2d 3e 6d 5f 6e  ctSize, rtc->m_n
01a0: 4f 62 6a 65 63 74 53 69 7a 65 20 2d 20 28 72 74  ObjectSize - (rt
01b0: 63 2d 3e 6d 5f 70 66 6e 47 65 74 42 61 73 65 43  c->m_pfnGetBaseC
01c0: 6c 61 73 73 28 29 20 3f 20 72 74 63 2d 3e 6d 5f  lass() ? rtc->m_
01d0: 70 66 6e 47 65 74 42 61 73 65 43 6c 61 73 73 28  pfnGetBaseClass(
01e0: 29 2d 3e 6d 5f 6e 4f 62 6a 65 63 74 53 69 7a 65  )->m_nObjectSize
01f0: 20 3a 20 30 29 29 3b 0d 0a 20 20 20 20 20 20 20   : 0));..       
0200: 20 47 65 74 52 54 43 46 75 6c 6c 28 72 74 63 2d   GetRTCFull(rtc-
0210: 3e 6d 5f 70 66 6e 47 65 74 42 61 73 65 43 6c 61  >m_pfnGetBaseCla
0220: 73 73 28 29 2c 20 53 74 72 29 3b 0d 0a 20 20 20  ss(), Str);..   
0230: 20 7d 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 4d 65   }..}....void Me
0240: 73 73 61 67 65 46 75 6c 6c 52 54 43 28 43 4f 62  ssageFullRTC(COb
0250: 6a 65 63 74 2a 20 6f 62 6a 2c 20 43 53 74 72 69  ject* obj, CStri
0260: 6e 67 20 49 6e 64 65 6e 74 2f 2a 3d 22 22 2a 2f  ng Indent/*=""*/
0270: 29 0d 0a 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  )..{..        if
0280: 20 28 6f 62 6a 29 0d 0a 09 09 09 4d 65 73 73 61   (obj).....Messa
0290: 67 65 46 75 6c 6c 52 54 43 28 6f 62 6a 2d 3e 47  geFullRTC(obj->G
02a0: 65 74 52 75 6e 74 69 6d 65 43 6c 61 73 73 28 29  etRuntimeClass()
02b0: 2c 20 49 6e 64 65 6e 74 29 3b 0d 0a 7d 0d 0a 0d  , Indent);..}...
02c0: 0a 76 6f 69 64 20 4d 65 73 73 61 67 65 46 75 6c  .void MessageFul
02d0: 6c 52 54 43 28 43 52 75 6e 74 69 6d 65 43 6c 61  lRTC(CRuntimeCla
02e0: 73 73 2a 20 72 74 63 2c 20 43 53 74 72 69 6e 67  ss* rtc, CString
02f0: 20 49 6e 64 65 6e 74 2f 2a 3d 22 22 2a 2f 29 0d   Indent/*=""*/).
0300: 0a 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  .{..        if (
0310: 72 74 63 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  rtc)..        {.
0320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0330: 20 43 53 74 72 69 6e 67 20 53 74 72 3b 0d 0a 20   CString Str;.. 
0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
0350: 65 74 52 54 43 46 75 6c 6c 28 72 74 63 2c 20 53  etRTCFull(rtc, S
0360: 74 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  tr);..          
0370: 20 20 20 20 20 20 44 6f 4d 73 67 4c 69 6e 65 28        DoMsgLine(
0380: 22 25 73 25 73 22 2c 20 6d 6d 4e 6f 6e 65 2c 20  "%s%s", mmNone, 
0390: 49 6e 64 65 6e 74 2c 20 53 74 72 29 3b 0d 0a 20  Indent, Str);.. 
03a0: 20 20 20 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 76         }..}....v
03b0: 6f 69 64 20 54 72 61 63 65 50 72 6f 66 69 6c 65  oid TraceProfile
03c0: 28 43 50 72 6f 66 69 6c 65 37 2a 20 70 50 72 6f  (CProfile7* pPro
03d0: 66 2c 20 43 53 74 72 69 6e 67 20 49 6e 64 65 6e  f, CString Inden
03e0: 74 29 0d 0a 7b 0d 0a 20 20 20 20 20 20 20 20 69  t)..{..        i
03f0: 66 20 28 21 70 50 72 6f 66 29 0d 0a 20 20 20 20  f (!pProf)..    
0400: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
0410: 20 20 20 20 20 20 20 43 41 70 70 37 2a 20 70 41         CApp7* pA
0420: 70 70 37 20 3d 20 28 43 41 70 70 37 2a 29 41 66  pp7 = (CApp7*)Af
0430: 78 47 65 74 41 70 70 28 29 3b 0d 0a 20 20 20 20  xGetApp();..    
0440: 20 20 20 20 20 20 20 20 20 20 20 20 70 50 72 6f              pPro
0450: 66 20 3d 20 70 41 70 70 37 2d 3e 47 65 74 50 72  f = pApp7->GetPr
0460: 6f 70 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ops();..        
0470: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 44 6f 4d  }....        DoM
0480: 73 67 4c 69 6e 65 28 22 25 73 25 73 20 23 20 25  sgLine("%s%s # %
0490: 73 20 23 20 25 64 22 2c 20 6d 6d 4e 6f 6e 65 2c  s # %d", mmNone,
04a0: 20 49 6e 64 65 6e 74 2c 20 70 50 72 6f 66 2d 3e   Indent, pProf->
04b0: 6d 5f 73 74 72 4b 65 79 2c 20 70 50 72 6f 66 2d  m_strKey, pProf-
04c0: 3e 6d 5f 73 74 72 50 61 74 68 2c 20 70 50 72 6f  >m_strPath, pPro
04d0: 66 2d 3e 47 65 74 45 6e 74 72 79 43 6f 75 6e 74  f->GetEntryCount
04e0: 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 43 53  ());..        CS
04f0: 74 72 69 6e 67 20 73 74 72 3b 0d 0a 20 20 20 20  tring str;..    
0500: 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 3d 30      for (int i=0
0510: 3b 20 69 3c 70 50 72 6f 66 2d 3e 47 65 74 45 6e  ; i<pProf->GetEn
0520: 74 72 79 43 6f 75 6e 74 28 29 3b 20 69 2b 2b 29  tryCount(); i++)
0530: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0540: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 43               ((C
0550: 50 72 6f 66 69 6c 65 37 5f 2a 29 70 50 72 6f 66  Profile7_*)pProf
0560: 29 2d 3e 50 72 6f 70 54 6f 53 74 72 69 6e 67 28  )->PropToString(
0570: 69 2c 20 73 74 72 29 3b 0d 0a 20 20 20 20 20 20  i, str);..      
0580: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20            const 
0590: 43 50 72 6f 66 69 6c 65 45 6e 74 72 79 37 2a 20  CProfileEntry7* 
05a0: 70 50 45 20 3d 20 70 50 72 6f 66 2d 3e 47 65 74  pPE = pProf->Get
05b0: 45 6e 74 72 79 41 74 28 69 29 3b 0d 0a 20 20 20  EntryAt(i);..   
05c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 6f 4d               DoM
05d0: 73 67 4c 69 6e 65 28 22 25 73 25 73 5b 25 64 5d  sgLine("%s%s[%d]
05e0: 20 25 64 20 25 73 3a 20 25 73 22 2c 20 6d 6d 4e   %d %s: %s", mmN
05f0: 6f 6e 65 2c 22 20 22 2c 49 6e 64 65 6e 74 2c 20  one," ",Indent, 
0600: 69 2c 20 70 50 45 2d 3e 74 79 70 65 2c 20 70 50  i, pPE->type, pP
0610: 45 2d 3e 45 6e 74 72 79 4e 61 6d 65 2c 20 73 74  E->EntryName, st
0620: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  r);..        }..
0630: 0d 0a 20 20 20 20 20 20 20 20 50 4f 53 49 54 49  ..        POSITI
0640: 4f 4e 20 70 6f 73 20 3d 20 70 50 72 6f 66 2d 3e  ON pos = pProf->
0650: 47 65 74 46 69 72 73 74 50 72 6f 66 69 6c 65 28  GetFirstProfile(
0660: 29 3b 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c  );..        whil
0670: 65 28 70 6f 73 29 0d 0a 20 20 20 20 20 20 20 20  e(pos)..        
0680: 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 6f          TracePro
0690: 66 69 6c 65 28 70 50 72 6f 66 2d 3e 47 65 74 4e  file(pProf->GetN
06a0: 65 78 74 50 72 6f 66 69 6c 65 28 70 6f 73 29 2c  extProfile(pos),
06b0: 20 49 6e 64 65 6e 74 2b 22 20 20 22 29 3b 0d 0a   Indent+"  ");..
06c0: 7d 0d 0a 0d 0a 76 6f 69 64 20 54 72 61 63 65 57  }....void TraceW
06d0: 69 6e 64 6f 77 73 28 43 57 6e 64 2a 20 70 57 6e  indows(CWnd* pWn
06e0: 64 2c 20 42 4f 4f 4c 20 62 57 69 74 68 4d 73 67  d, BOOL bWithMsg
06f0: 4d 61 70 2c 20 55 49 4e 54 20 6e 4d 65 73 73 61  Map, UINT nMessa
0700: 67 65 46 69 6c 74 65 72 2c 20 55 49 4e 54 20 6e  geFilter, UINT n
0710: 49 44 46 69 6c 74 65 72 2c 20 43 53 74 72 69 6e  IDFilter, CStrin
0720: 67 20 49 6e 64 65 6e 74 29 0d 0a 7b 0d 0a 20 20  g Indent)..{..  
0730: 20 20 20 20 20 20 43 53 74 72 69 6e 67 20 53 74        CString St
0740: 72 3b 0d 0a 20 20 20 20 20 20 20 20 47 65 74 52  r;..        GetR
0750: 54 43 46 75 6c 6c 28 70 57 6e 64 2d 3e 47 65 74  TCFull(pWnd->Get
0760: 52 75 6e 74 69 6d 65 43 6c 61 73 73 28 29 2c 20  RuntimeClass(), 
0770: 53 74 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 44  Str);..        D
0780: 6f 4d 73 67 4c 69 6e 65 28 22 25 73 28 25 58 29  oMsgLine("%s(%X)
0790: 25 73 22 2c 20 6d 6d 4e 6f 6e 65 2c 20 49 6e 64  %s", mmNone, Ind
07a0: 65 6e 74 2c 20 70 57 6e 64 2d 3e 6d 5f 68 57 6e  ent, pWnd->m_hWn
07b0: 64 2c 20 53 74 72 29 3b 0d 0a 09 09 0d 0a 09 09  d, Str);........
07c0: 69 66 20 28 62 57 69 74 68 4d 73 67 4d 61 70 29  if (bWithMsgMap)
07d0: 0d 0a 09 09 09 54 72 61 63 65 4d 65 73 73 61 67  .....TraceMessag
07e0: 65 4d 61 70 28 70 57 6e 64 2c 20 6e 4d 65 73 73  eMap(pWnd, nMess
07f0: 61 67 65 46 69 6c 74 65 72 2c 20 6e 49 44 46 69  ageFilter, nIDFi
0800: 6c 74 65 72 2c 49 6e 64 65 6e 74 29 3b 0d 0a 0d  lter,Indent);...
0810: 0a 09 09 69 66 20 28 70 57 6e 64 2d 3e 49 73 4b  ...if (pWnd->IsK
0820: 69 6e 64 4f 66 28 52 55 4e 54 49 4d 45 5f 43 4c  indOf(RUNTIME_CL
0830: 41 53 53 28 43 56 69 65 77 29 29 29 0d 0a 09 09  ASS(CView)))....
0840: 7b 0d 0a 09 09 09 43 56 69 65 77 2a 20 70 56 69  {.....CView* pVi
0850: 65 77 20 3d 20 28 43 56 69 65 77 2a 29 70 57 6e  ew = (CView*)pWn
0860: 64 3b 0d 0a 09 09 09 53 74 72 2e 45 6d 70 74 79  d;.....Str.Empty
0870: 28 29 3b 0d 0a 09 09 09 47 65 74 52 54 43 46 75  ();.....GetRTCFu
0880: 6c 6c 28 70 56 69 65 77 2d 3e 47 65 74 50 61 72  ll(pView->GetPar
0890: 65 6e 74 46 72 61 6d 65 28 29 2d 3e 47 65 74 52  entFrame()->GetR
08a0: 75 6e 74 69 6d 65 43 6c 61 73 73 28 29 2c 20 53  untimeClass(), S
08b0: 74 72 29 3b 0d 0a 09 20 20 20 20 20 20 20 20 44  tr);...        D
08c0: 6f 4d 73 67 4c 69 6e 65 28 22 25 73 28 25 58 29  oMsgLine("%s(%X)
08d0: 28 46 72 61 6d 65 3a 25 73 29 22 2c 20 6d 6d 4e  (Frame:%s)", mmN
08e0: 6f 6e 65 2c 20 49 6e 64 65 6e 74 2c 20 70 56 69  one, Indent, pVi
08f0: 65 77 2d 3e 47 65 74 50 61 72 65 6e 74 46 72 61  ew->GetParentFra
0900: 6d 65 28 29 2d 3e 6d 5f 68 57 6e 64 2c 20 53 74  me()->m_hWnd, St
0910: 72 29 3b 0d 0a 09 09 09 53 74 72 2e 45 6d 70 74  r);.....Str.Empt
0920: 79 28 29 3b 0d 0a 09 09 09 47 65 74 52 54 43 46  y();.....GetRTCF
0930: 75 6c 6c 28 70 56 69 65 77 2d 3e 47 65 74 44 6f  ull(pView->GetDo
0940: 63 75 6d 65 6e 74 28 29 2d 3e 47 65 74 52 75 6e  cument()->GetRun
0950: 74 69 6d 65 43 6c 61 73 73 28 29 2c 20 53 74 72  timeClass(), Str
0960: 29 3b 0d 0a 09 20 20 20 20 20 20 20 20 44 6f 4d  );...        DoM
0970: 73 67 4c 69 6e 65 28 22 25 73 28 44 6f 63 75 6d  sgLine("%s(Docum
0980: 65 6e 74 3a 25 73 29 22 2c 20 6d 6d 4e 6f 6e 65  ent:%s)", mmNone
0990: 2c 20 49 6e 64 65 6e 74 2c 20 53 74 72 29 3b 0d  , Indent, Str);.
09a0: 0a 09 09 09 69 66 20 28 62 57 69 74 68 4d 73 67  ....if (bWithMsg
09b0: 4d 61 70 29 0d 0a 09 09 09 09 54 72 61 63 65 4d  Map)......TraceM
09c0: 65 73 73 61 67 65 4d 61 70 28 70 56 69 65 77 2d  essageMap(pView-
09d0: 3e 47 65 74 44 6f 63 75 6d 65 6e 74 28 29 2c 20  >GetDocument(), 
09e0: 6e 4d 65 73 73 61 67 65 46 69 6c 74 65 72 2c 20  nMessageFilter, 
09f0: 6e 49 44 46 69 6c 74 65 72 2c 20 49 6e 64 65 6e  nIDFilter, Inden
0a00: 74 29 3b 0d 0a 09 09 7d 3b 0d 0a 20 20 20 20 20  t);....};..     
0a10: 20 20 20 66 6f 72 20 28 70 57 6e 64 20 3d 20 70     for (pWnd = p
0a20: 57 6e 64 2d 3e 47 65 74 57 69 6e 64 6f 77 28 47  Wnd->GetWindow(G
0a30: 57 5f 43 48 49 4c 44 29 3b 20 70 57 6e 64 3b 20  W_CHILD); pWnd; 
0a40: 70 57 6e 64 20 3d 20 70 57 6e 64 2d 3e 47 65 74  pWnd = pWnd->Get
0a50: 57 69 6e 64 6f 77 28 47 57 5f 48 57 4e 44 4e 45  Window(GW_HWNDNE
0a60: 58 54 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  XT))..          
0a70: 20 20 20 20 20 20 54 72 61 63 65 57 69 6e 64 6f        TraceWindo
0a80: 77 73 28 70 57 6e 64 2c 20 62 57 69 74 68 4d 73  ws(pWnd, bWithMs
0a90: 67 4d 61 70 2c 20 6e 4d 65 73 73 61 67 65 46 69  gMap, nMessageFi
0aa0: 6c 74 65 72 2c 20 6e 49 44 46 69 6c 74 65 72 2c  lter, nIDFilter,
0ab0: 20 49 6e 64 65 6e 74 2b 22 20 20 22 29 3b 0d 0a   Indent+"  ");..
0ac0: 7d 0d 0a 0d 0a 76 6f 69 64 20 54 72 61 63 65 4d  }....void TraceM
0ad0: 65 6e 75 28 43 4d 65 6e 75 2a 20 4d 65 6e 75 2c  enu(CMenu* Menu,
0ae0: 20 43 53 74 72 69 6e 67 20 49 6e 64 65 6e 74 29   CString Indent)
0af0: 0d 0a 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ..{..        if 
0b00: 28 4d 65 6e 75 29 0d 0a 20 20 20 20 20 20 20 20  (Menu)..        
0b10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
0b20: 20 20 20 43 53 74 72 69 6e 67 20 73 74 72 3b 0d     CString str;.
0b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0b40: 20 4d 45 4e 55 49 54 45 4d 49 4e 46 4f 20 6d 69   MENUITEMINFO mi
0b50: 69 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  i;..            
0b60: 20 20 20 20 66 6f 72 20 28 55 49 4e 54 20 69 3d      for (UINT i=
0b70: 30 3b 20 69 20 3c 20 4d 65 6e 75 2d 3e 47 65 74  0; i < Menu->Get
0b80: 4d 65 6e 75 49 74 65 6d 43 6f 75 6e 74 28 29 3b  MenuItemCount();
0b90: 20 69 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20   i++)..         
0ba0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0bc0: 20 20 4d 65 6e 75 2d 3e 47 65 74 4d 65 6e 75 53    Menu->GetMenuS
0bd0: 74 72 69 6e 67 28 69 2c 20 73 74 72 2c 20 4d 46  tring(i, str, MF
0be0: 5f 42 59 50 4f 53 49 54 49 4f 4e 29 3b 0d 0a 20  _BYPOSITION);.. 
0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c00: 20 20 20 20 20 20 20 44 57 4f 52 44 20 69 64 20         DWORD id 
0c10: 3d 20 4d 65 6e 75 2d 3e 47 65 74 4d 65 6e 75 49  = Menu->GetMenuI
0c20: 74 65 6d 49 44 28 69 29 3b 0d 0a 20 20 20 20 20  temID(i);..     
0c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c40: 20 20 20 4d 65 6e 75 2d 3e 47 65 74 4d 65 6e 75     Menu->GetMenu
0c50: 49 74 65 6d 49 6e 66 6f 28 69 2c 20 26 6d 69 69  ItemInfo(i, &mii
0c60: 2c 20 4d 46 5f 42 59 50 4f 53 49 54 49 4f 4e 29  , MF_BYPOSITION)
0c70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
0c80: 20 20 20 20 20 20 20 20 20 20 20 44 6f 4d 73 67             DoMsg
0c90: 4c 69 6e 65 28 22 25 73 25 30 38 58 20 25 30 38  Line("%s%08X %08
0ca0: 58 20 25 73 22 2c 20 6d 6d 4e 6f 6e 65 2c 20 49  X %s", mmNone, I
0cb0: 6e 64 65 6e 74 2c 20 69 64 2c 20 6d 69 69 2e 66  ndent, id, mii.f
0cc0: 53 74 61 74 65 2c 20 73 74 72 29 3b 0d 0a 20 20  State, str);..  
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ce0: 20 20 20 20 20 20 54 72 61 63 65 4d 65 6e 75 28        TraceMenu(
0cf0: 4d 65 6e 75 2d 3e 47 65 74 53 75 62 4d 65 6e 75  Menu->GetSubMenu
0d00: 28 69 29 2c 20 49 6e 64 65 6e 74 2b 22 20 20 22  (i), Indent+"  "
0d10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
0d20: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
0d30: 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 54 72 61 63  ..}....void Trac
0d40: 65 4d 65 73 73 61 67 65 4d 61 70 28 63 6f 6e 73  eMessageMap(cons
0d50: 74 20 41 46 58 5f 4d 53 47 4d 41 50 2a 20 70 4d  t AFX_MSGMAP* pM
0d60: 53 47 4d 41 50 2c 20 55 49 4e 54 20 6e 4d 65 73  SGMAP, UINT nMes
0d70: 73 61 67 65 46 69 6c 74 65 72 2c 20 55 49 4e 54  sageFilter, UINT
0d80: 20 6e 49 44 46 69 6c 74 65 72 2c 20 43 53 74 72   nIDFilter, CStr
0d90: 69 6e 67 20 49 6e 64 65 6e 74 29 0d 0a 7b 0d 0a  ing Indent)..{..
0da0: 09 69 66 20 28 70 4d 53 47 4d 41 50 29 0d 0a 09  .if (pMSGMAP)...
0db0: 7b 0d 0a 09 09 63 6f 6e 73 74 20 41 46 58 5f 4d  {....const AFX_M
0dc0: 53 47 4d 41 50 5f 45 4e 54 52 59 2a 20 6c 70 45  SGMAP_ENTRY* lpE
0dd0: 6e 74 72 69 65 73 20 3d 20 70 4d 53 47 4d 41 50  ntries = pMSGMAP
0de0: 2d 3e 6c 70 45 6e 74 72 69 65 73 3b 0d 0a 09 09  ->lpEntries;....
0df0: 77 68 69 6c 65 20 28 6c 70 45 6e 74 72 69 65 73  while (lpEntries
0e00: 2d 3e 6e 4d 65 73 73 61 67 65 29 0d 0a 09 09 7b  ->nMessage)....{
0e10: 0d 0a 09 09 09 69 66 20 28 21 6e 4d 65 73 73 61  .....if (!nMessa
0e20: 67 65 46 69 6c 74 65 72 20 7c 7c 20 6e 4d 65 73  geFilter || nMes
0e30: 73 61 67 65 46 69 6c 74 65 72 20 3d 3d 20 6c 70  sageFilter == lp
0e40: 45 6e 74 72 69 65 73 2d 3e 6e 4d 65 73 73 61 67  Entries->nMessag
0e50: 65 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66  e).....{......if
0e60: 20 28 21 6e 49 44 46 69 6c 74 65 72 20 7c 7c 20   (!nIDFilter || 
0e70: 6e 49 44 46 69 6c 74 65 72 3e 3d 6c 70 45 6e 74  nIDFilter>=lpEnt
0e80: 72 69 65 73 2d 3e 6e 49 44 20 26 26 20 6e 49 44  ries->nID && nID
0e90: 46 69 6c 74 65 72 3c 3d 6c 70 45 6e 74 72 69 65  Filter<=lpEntrie
0ea0: 73 2d 3e 6e 4c 61 73 74 49 44 29 0d 0a 09 09 09  s->nLastID).....
0eb0: 09 7b 0d 0a 09 09 09 09 09 44 6f 4d 73 67 4c 69  .{.......DoMsgLi
0ec0: 6e 65 28 22 25 73 4d 65 73 73 61 67 65 3a 25 30  ne("%sMessage:%0
0ed0: 38 58 20 43 6f 64 65 3a 25 30 38 58 20 49 44 3a  8X Code:%08X ID:
0ee0: 25 30 38 58 20 4c 61 73 74 49 44 3a 25 30 38 58  %08X LastID:%08X
0ef0: 20 53 69 67 3a 25 30 38 58 22 2c 20 6d 6d 4e 6f   Sig:%08X", mmNo
0f00: 6e 65 2c 20 49 6e 64 65 6e 74 2c 0d 0a 09 09 09  ne, Indent,.....
0f10: 09 09 09 6c 70 45 6e 74 72 69 65 73 2d 3e 6e 4d  ...lpEntries->nM
0f20: 65 73 73 61 67 65 2c 20 6c 70 45 6e 74 72 69 65  essage, lpEntrie
0f30: 73 2d 3e 6e 43 6f 64 65 2c 20 6c 70 45 6e 74 72  s->nCode, lpEntr
0f40: 69 65 73 2d 3e 6e 49 44 2c 20 6c 70 45 6e 74 72  ies->nID, lpEntr
0f50: 69 65 73 2d 3e 6e 4c 61 73 74 49 44 2c 20 6c 70  ies->nLastID, lp
0f60: 45 6e 74 72 69 65 73 2d 3e 6e 53 69 67 29 3b 0d  Entries->nSig);.
0f70: 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 09 09  .....}.....}....
0f80: 09 6c 70 45 6e 74 72 69 65 73 2b 2b 3b 0d 0a 09  .lpEntries++;...
0f90: 09 7d 0d 0a 09 09 54 72 61 63 65 4d 65 73 73 61  .}....TraceMessa
0fa0: 67 65 4d 61 70 28 70 4d 53 47 4d 41 50 2d 3e 70  geMap(pMSGMAP->p
0fb0: 66 6e 47 65 74 42 61 73 65 4d 61 70 28 29 2c 20  fnGetBaseMap(), 
0fc0: 6e 4d 65 73 73 61 67 65 46 69 6c 74 65 72 2c 20  nMessageFilter, 
0fd0: 6e 49 44 46 69 6c 74 65 72 2c 20 49 6e 64 65 6e  nIDFilter, Inden
0fe0: 74 2b 22 20 20 22 29 3b 0d 0a 09 7d 0d 0a 7d 0d  t+"  ");...}..}.
0ff0: 0a 0d 0a 76 6f 69 64 20 54 72 61 63 65 4d 65 73  ...void TraceMes
1000: 73 61 67 65 4d 61 70 28 43 43 6d 64 54 61 72 67  sageMap(CCmdTarg
1010: 65 74 2a 20 70 54 61 72 67 65 74 2c 20 55 49 4e  et* pTarget, UIN
1020: 54 20 6e 4d 65 73 73 61 67 65 46 69 6c 74 65 72  T nMessageFilter
1030: 2c 20 55 49 4e 54 20 6e 49 44 46 69 6c 74 65 72  , UINT nIDFilter
1040: 2c 20 43 53 74 72 69 6e 67 20 49 6e 64 65 6e 74  , CString Indent
1050: 29 0d 0a 7b 0d 0a 09 63 6c 61 73 73 20 43 43 6d  )..{...class CCm
1060: 64 54 61 72 67 65 74 5f 20 3a 20 70 75 62 6c 69  dTarget_ : publi
1070: 63 20 43 43 6d 64 54 61 72 67 65 74 0d 0a 09 7b  c CCmdTarget...{
1080: 0d 0a 09 09 66 72 69 65 6e 64 20 76 6f 69 64 20  ....friend void 
1090: 54 72 61 63 65 4d 65 73 73 61 67 65 4d 61 70 28  TraceMessageMap(
10a0: 43 43 6d 64 54 61 72 67 65 74 2a 20 70 54 61 72  CCmdTarget* pTar
10b0: 67 65 74 2c 20 55 49 4e 54 20 6e 4d 65 73 73 61  get, UINT nMessa
10c0: 67 65 46 69 6c 74 65 72 2c 20 55 49 4e 54 20 6e  geFilter, UINT n
10d0: 49 44 46 69 6c 74 65 72 2c 20 43 53 74 72 69 6e  IDFilter, CStrin
10e0: 67 20 49 6e 64 65 6e 74 29 3b 0d 0a 09 7d 3b 0d  g Indent);...};.
10f0: 0a 09 69 66 20 28 70 54 61 72 67 65 74 29 0d 0a  ..if (pTarget)..
1100: 09 09 54 72 61 63 65 4d 65 73 73 61 67 65 4d 61  ..TraceMessageMa
1110: 70 28 28 28 43 43 6d 64 54 61 72 67 65 74 5f 2a  p(((CCmdTarget_*
1120: 29 70 54 61 72 67 65 74 29 2d 3e 47 65 74 4d 65  )pTarget)->GetMe
1130: 73 73 61 67 65 4d 61 70 28 29 2c 20 6e 4d 65 73  ssageMap(), nMes
1140: 73 61 67 65 46 69 6c 74 65 72 2c 20 6e 49 44 46  sageFilter, nIDF
1150: 69 6c 74 65 72 2c 20 49 6e 64 65 6e 74 29 3b 0d  ilter, Indent);.
1160: 0a 7d 0d 0a 0d 0a 0d 0a 76 6f 69 64 20 54 72 61  .}......void Tra
1170: 63 65 42 4c 43 6f 6e 74 65 78 74 28 43 42 4c 43  ceBLContext(CBLC
1180: 6f 6e 74 65 78 74 2a 20 70 42 4c 43 2c 20 43 53  ontext* pBLC, CS
1190: 74 72 69 6e 67 20 49 6e 64 65 6e 74 29 0d 0a 7b  tring Indent)..{
11a0: 0d 0a 09 4d 65 73 73 61 67 65 46 75 6c 6c 52 54  ...MessageFullRT
11b0: 43 28 70 42 4c 43 2c 20 49 6e 64 65 6e 74 29 3b  C(pBLC, Indent);
11c0: 0d 0a 09 49 6e 64 65 6e 74 20 2b 3d 20 22 20 20  ...Indent += "  
11d0: 22 3b 0d 0a 09 44 6f 4d 73 67 4c 69 6e 65 28 22  ";...DoMsgLine("
11e0: 25 73 4e 50 72 6f 70 73 3a 25 64 20 4e 4d 65 74  %sNProps:%d NMet
11f0: 68 6f 64 73 3a 25 64 22 2c 20 6d 6d 4e 6f 6e 65  hods:%d", mmNone
1200: 2c 49 6e 64 65 6e 74 2c 20 70 42 4c 43 2d 3e 47  ,Indent, pBLC->G
1210: 65 74 4e 50 72 6f 70 73 28 29 2c 20 70 42 4c 43  etNProps(), pBLC
1220: 2d 3e 47 65 74 4e 4d 65 74 68 6f 64 73 28 29 29  ->GetNMethods())
1230: 3b 0d 0a 09 69 6e 74 20 69 3b 0d 0a 09 66 6f 72  ;...int i;...for
1240: 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 70 42 4c   (i = 0; i < pBL
1250: 43 2d 3e 47 65 74 4e 50 72 6f 70 73 28 29 3b 20  C->GetNProps(); 
1260: 69 2b 2b 29 0d 0a 09 7b 0d 0a 09 09 44 6f 4d 73  i++)...{....DoMs
1270: 67 4c 69 6e 65 28 22 25 73 25 30 32 64 20 25 73  gLine("%s%02d %s
1280: 25 73 20 25 73 2f 25 73 22 2c 20 6d 6d 4e 6f 6e  %s %s/%s", mmNon
1290: 65 2c 0d 0a 09 09 09 49 6e 64 65 6e 74 2b 22 20  e,.....Indent+" 
12a0: 20 22 2c 0d 0a 09 09 09 69 2c 0d 0a 09 09 09 70   ",.....i,.....p
12b0: 42 4c 43 2d 3e 49 73 50 72 6f 70 52 65 61 64 61  BLC->IsPropReada
12c0: 62 6c 65 28 69 29 3f 22 72 22 3a 22 22 2c 0d 0a  ble(i)?"r":"",..
12d0: 09 09 09 70 42 4c 43 2d 3e 49 73 50 72 6f 70 57  ...pBLC->IsPropW
12e0: 72 69 74 61 62 6c 65 28 69 29 3f 22 77 22 3a 22  ritable(i)?"w":"
12f0: 22 2c 0d 0a 09 09 09 70 42 4c 43 2d 3e 47 65 74  ",.....pBLC->Get
1300: 50 72 6f 70 4e 61 6d 65 28 69 2c 30 29 2c 0d 0a  PropName(i,0),..
1310: 09 09 09 70 42 4c 43 2d 3e 47 65 74 50 72 6f 70  ...pBLC->GetProp
1320: 4e 61 6d 65 28 69 2c 31 29 0d 0a 09 09 09 29 3b  Name(i,1).....);
1330: 0d 0a 09 7d 0d 0a 09 66 6f 72 20 28 69 20 3d 20  ...}...for (i = 
1340: 30 3b 20 69 20 3c 20 70 42 4c 43 2d 3e 47 65 74  0; i < pBLC->Get
1350: 4e 4d 65 74 68 6f 64 73 28 29 3b 20 69 2b 2b 29  NMethods(); i++)
1360: 0d 0a 09 7b 0d 0a 09 09 44 6f 4d 73 67 4c 69 6e  ...{....DoMsgLin
1370: 65 28 22 25 73 25 30 32 64 20 25 73 20 25 73 2f  e("%s%02d %s %s/
1380: 25 73 28 25 64 29 22 2c 20 6d 6d 4e 6f 6e 65 2c  %s(%d)", mmNone,
1390: 0d 0a 09 09 09 49 6e 64 65 6e 74 2b 22 20 20 22  .....Indent+"  "
13a0: 2c 0d 0a 09 09 09 69 2c 0d 0a 09 09 09 70 42 4c  ,.....i,.....pBL
13b0: 43 2d 3e 48 61 73 52 65 74 56 61 6c 28 69 29 3f  C->HasRetVal(i)?
13c0: 22 3d 22 3a 22 20 22 2c 0d 0a 09 09 09 70 42 4c  "=":" ",.....pBL
13d0: 43 2d 3e 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  C->GetMethodName
13e0: 28 69 2c 30 29 2c 0d 0a 09 09 09 70 42 4c 43 2d  (i,0),.....pBLC-
13f0: 3e 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 69  >GetMethodName(i
1400: 2c 31 29 2c 0d 0a 09 09 09 70 42 4c 43 2d 3e 47  ,1),.....pBLC->G
1410: 65 74 4e 50 61 72 61 6d 73 28 69 29 0d 0a 09 09  etNParams(i)....
1420: 09 29 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 76 6f  .);...}..}....vo
1430: 69 64 20 54 72 61 63 65 47 43 28 43 42 4c 43 6f  id TraceGC(CBLCo
1440: 6e 74 65 78 74 2a 20 70 42 4c 43 2c 20 43 53 74  ntext* pBLC, CSt
1450: 72 69 6e 67 20 49 6e 64 65 6e 74 2c 20 42 4f 4f  ring Indent, BOO
1460: 4c 20 44 65 74 61 69 6c 29 0d 0a 7b 0d 0a 09 69  L Detail)..{...i
1470: 66 20 28 70 42 4c 43 29 0d 0a 09 7b 0d 0a 09 09  f (pBLC)...{....
1480: 43 52 75 6e 74 69 6d 65 43 6c 61 73 73 2a 20 70  CRuntimeClass* p
1490: 52 54 43 20 3d 20 70 42 4c 43 2d 3e 47 65 74 52  RTC = pBLC->GetR
14a0: 75 6e 74 69 6d 65 43 6c 61 73 73 28 29 3b 0d 0a  untimeClass();..
14b0: 09 09 69 66 20 28 70 52 54 43 20 3d 3d 20 52 55  ..if (pRTC == RU
14c0: 4e 54 49 4d 45 5f 43 4c 41 53 53 28 43 47 72 6f  NTIME_CLASS(CGro
14d0: 75 70 43 6f 6e 74 65 78 74 29 20 7c 7c 20 21 73  upContext) || !s
14e0: 74 72 63 6d 70 28 22 43 41 75 74 6f 47 72 6f 75  trcmp("CAutoGrou
14f0: 70 43 6f 6e 74 65 78 74 22 2c 20 70 42 4c 43 2d  pContext", pBLC-
1500: 3e 47 65 74 52 75 6e 74 69 6d 65 43 6c 61 73 73  >GetRuntimeClass
1510: 28 29 2d 3e 6d 5f 6c 70 73 7a 43 6c 61 73 73 4e  ()->m_lpszClassN
1520: 61 6d 65 29 29 0d 0a 09 09 7b 0d 0a 09 09 09 43  ame))....{.....C
1530: 47 72 6f 75 70 43 6f 6e 74 65 78 74 2a 20 70 47  GroupContext* pG
1540: 43 20 3d 20 28 43 47 72 6f 75 70 43 6f 6e 74 65  C = (CGroupConte
1550: 78 74 2a 29 70 42 4c 43 3b 0d 0a 09 09 09 4d 65  xt*)pBLC;.....Me
1560: 73 73 61 67 65 46 75 6c 6c 52 54 43 28 70 42 4c  ssageFullRTC(pBL
1570: 43 2c 20 49 6e 64 65 6e 74 29 3b 0d 0a 09 09 09  C, Indent);.....
1580: 49 6e 64 65 6e 74 20 2b 3d 20 22 20 20 22 3b 0d  Indent += "  ";.
1590: 0a 09 09 09 44 6f 4d 73 67 4c 69 6e 65 28 22 25  ....DoMsgLine("%
15a0: 73 4e 43 6f 6e 74 65 78 74 73 3a 25 64 20 4e 50  sNContexts:%d NP
15b0: 72 6f 70 73 3a 25 64 20 4e 4d 65 74 68 6f 64 73  rops:%d NMethods
15c0: 3a 25 64 22 2c 20 6d 6d 4e 6f 6e 65 2c 49 6e 64  :%d", mmNone,Ind
15d0: 65 6e 74 2c 20 70 47 43 2d 3e 47 65 74 53 69 7a  ent, pGC->GetSiz
15e0: 65 28 29 2c 20 70 47 43 2d 3e 47 65 74 4e 50 72  e(), pGC->GetNPr
15f0: 6f 70 73 28 29 2c 20 70 47 43 2d 3e 47 65 74 4e  ops(), pGC->GetN
1600: 4d 65 74 68 6f 64 73 28 29 29 3b 0d 0a 09 09 09  Methods());.....
1610: 66 6f 72 28 69 6e 74 20 69 20 3d 20 30 3b 20 44  for(int i = 0; D
1620: 65 74 61 69 6c 20 26 26 20 69 20 3c 20 70 47 43  etail && i < pGC
1630: 2d 3e 47 65 74 53 69 7a 65 28 29 3b 20 69 2b 2b  ->GetSize(); i++
1640: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 09 54 72  ).....{.......Tr
1650: 61 63 65 42 4c 43 6f 6e 74 65 78 74 28 70 47 43  aceBLContext(pGC
1660: 2d 3e 47 65 74 43 6f 6e 74 65 78 74 28 69 29 2c  ->GetContext(i),
1670: 20 49 6e 64 65 6e 74 2b 22 20 20 22 29 3b 0d 0a   Indent+"  ");..
1680: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 7d  ...}....}...}..}
1690: 0d 0a 0d 0a 43 42 4c 43 6f 6e 74 65 78 74 2a 20  ....CBLContext* 
16a0: 47 65 74 43 6f 6e 74 46 72 6f 6d 47 43 28 43 47  GetContFromGC(CG
16b0: 72 6f 75 70 43 6f 6e 74 65 78 74 2a 20 70 47 43  roupContext* pGC
16c0: 2c 20 43 52 75 6e 74 69 6d 65 43 6c 61 73 73 2a  , CRuntimeClass*
16d0: 20 70 52 54 43 29 0d 0a 7b 0d 0a 09 69 66 20 28   pRTC)..{...if (
16e0: 70 47 43 29 0d 0a 09 7b 0d 0a 09 09 69 66 20 28  pGC)...{....if (
16f0: 70 47 43 2d 3e 49 73 4b 69 6e 64 4f 66 28 52 55  pGC->IsKindOf(RU
1700: 4e 54 49 4d 45 5f 43 4c 41 53 53 28 43 47 72 6f  NTIME_CLASS(CGro
1710: 75 70 43 6f 6e 74 65 78 74 29 29 29 0d 0a 09 09  upContext)))....
1720: 7b 0d 0a 09 09 09 66 6f 72 28 69 6e 74 20 69 20  {.....for(int i 
1730: 3d 20 30 3b 20 69 20 3c 20 70 47 43 2d 3e 47 65  = 0; i < pGC->Ge
1740: 74 53 69 7a 65 28 29 3b 20 69 2b 2b 29 0d 0a 09  tSize(); i++)...
1750: 09 09 7b 0d 0a 09 09 09 09 43 42 4c 43 6f 6e 74  ..{......CBLCont
1760: 65 78 74 2a 20 70 43 6f 6e 74 20 3d 20 70 47 43  ext* pCont = pGC
1770: 2d 3e 47 65 74 43 6f 6e 74 65 78 74 28 69 29 3b  ->GetContext(i);
1780: 0d 0a 09 09 09 09 69 66 20 28 70 43 6f 6e 74 2d  ......if (pCont-
1790: 3e 47 65 74 52 75 6e 74 69 6d 65 43 6c 61 73 73  >GetRuntimeClass
17a0: 28 29 20 3d 3d 20 70 52 54 43 29 0d 0a 09 09 09  () == pRTC).....
17b0: 09 7b 0d 0a 09 09 09 09 09 72 65 74 75 72 6e 20  .{.......return 
17c0: 70 43 6f 6e 74 3b 0d 0a 09 09 09 09 7d 0d 0a 09  pCont;......}...
17d0: 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 09 72  ..}....}...}...r
17e0: 65 74 75 72 6e 20 4e 55 4c 4c 3b 0d 0a 7d 0d 0a  eturn NULL;..}..
17f0: 0d 0a 43 42 4c 43 6f 6e 74 65 78 74 2a 20 47 65  ..CBLContext* Ge
1800: 74 43 6f 6e 74 46 72 6f 6d 47 43 28 43 47 72 6f  tContFromGC(CGro
1810: 75 70 43 6f 6e 74 65 78 74 2a 20 70 47 43 2c 20  upContext* pGC, 
1820: 43 53 74 72 69 6e 67 20 52 54 43 4e 61 6d 65 29  CString RTCName)
1830: 0d 0a 7b 0d 0a 09 69 66 20 28 70 47 43 29 0d 0a  ..{...if (pGC)..
1840: 09 7b 0d 0a 09 09 69 66 20 28 70 47 43 2d 3e 49  .{....if (pGC->I
1850: 73 4b 69 6e 64 4f 66 28 52 55 4e 54 49 4d 45 5f  sKindOf(RUNTIME_
1860: 43 4c 41 53 53 28 43 47 72 6f 75 70 43 6f 6e 74  CLASS(CGroupCont
1870: 65 78 74 29 29 29 0d 0a 09 09 7b 0d 0a 09 09 09  ext)))....{.....
1880: 66 6f 72 28 69 6e 74 20 69 20 3d 20 30 3b 20 69  for(int i = 0; i
1890: 20 3c 20 70 47 43 2d 3e 47 65 74 53 69 7a 65 28   < pGC->GetSize(
18a0: 29 3b 20 69 2b 2b 29 0d 0a 09 09 09 7b 0d 0a 09  ); i++).....{...
18b0: 09 09 09 43 42 4c 43 6f 6e 74 65 78 74 2a 20 70  ...CBLContext* p
18c0: 43 6f 6e 74 20 3d 20 70 47 43 2d 3e 47 65 74 43  Cont = pGC->GetC
18d0: 6f 6e 74 65 78 74 28 69 29 3b 0d 0a 09 09 09 09  ontext(i);......
18e0: 69 66 20 28 21 73 74 72 63 6d 70 28 52 54 43 4e  if (!strcmp(RTCN
18f0: 61 6d 65 2c 20 70 43 6f 6e 74 2d 3e 47 65 74 52  ame, pCont->GetR
1900: 75 6e 74 69 6d 65 43 6c 61 73 73 28 29 2d 3e 6d  untimeClass()->m
1910: 5f 6c 70 73 7a 43 6c 61 73 73 4e 61 6d 65 29 29  _lpszClassName))
1920: 0d 0a 09 09 09 09 7b 0d 0a 09 09 09 09 09 72 65  ......{.......re
1930: 74 75 72 6e 20 70 43 6f 6e 74 3b 0d 0a 09 09 09  turn pCont;.....
1940: 09 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09  .}.....}....}...
1950: 7d 0d 0a 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b  }...return NULL;
1960: 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 46 6f 72 6d  ..}....void Form
1970: 61 74 4d 65 73 73 61 67 65 41 6e 64 52 75 6e 74  atMessageAndRunt
1980: 69 6d 65 45 72 72 6f 72 28 44 57 4f 52 44 20 64  imeError(DWORD d
1990: 77 4d 65 73 73 61 67 65 49 64 29 0d 0a 7b 0d 0a  wMessageId)..{..
19a0: 09 4c 50 56 4f 49 44 20 6c 70 4d 73 67 42 75 66  .LPVOID lpMsgBuf
19b0: 3b 0d 0a 09 44 57 4f 52 44 20 72 65 73 20 3d 20  ;...DWORD res = 
19c0: 46 6f 72 6d 61 74 4d 65 73 73 61 67 65 28 0d 0a  FormatMessage(..
19d0: 09 09 46 4f 52 4d 41 54 5f 4d 45 53 53 41 47 45  ..FORMAT_MESSAGE
19e0: 5f 41 4c 4c 4f 43 41 54 45 5f 42 55 46 46 45 52  _ALLOCATE_BUFFER
19f0: 7c 46 4f 52 4d 41 54 5f 4d 45 53 53 41 47 45 5f  |FORMAT_MESSAGE_
1a00: 46 52 4f 4d 5f 53 59 53 54 45 4d 2c 20 4e 55 4c  FROM_SYSTEM, NUL
1a10: 4c 2c 0d 0a 09 09 64 77 4d 65 73 73 61 67 65 49  L,....dwMessageI
1a20: 64 2c 20 4d 41 4b 45 4c 41 4e 47 49 44 28 4c 41  d, MAKELANGID(LA
1a30: 4e 47 5f 4e 45 55 54 52 41 4c 2c 20 53 55 42 4c  NG_NEUTRAL, SUBL
1a40: 41 4e 47 5f 44 45 46 41 55 4c 54 29 2c 0d 0a 09  ANG_DEFAULT),...
1a50: 09 28 4c 50 54 53 54 52 29 26 6c 70 4d 73 67 42  .(LPTSTR)&lpMsgB
1a60: 75 66 2c 20 30 2c 20 4e 55 4c 4c 29 3b 0d 0a 09  uf, 0, NULL);...
1a70: 43 53 74 72 69 6e 67 20 73 74 72 45 72 72 3b 0d  CString strErr;.
1a80: 0a 09 69 66 20 28 72 65 73 29 0d 0a 09 09 73 74  ..if (res)....st
1a90: 72 45 72 72 20 3d 20 28 4c 50 54 53 54 52 29 6c  rErr = (LPTSTR)l
1aa0: 70 4d 73 67 42 75 66 3b 0d 0a 09 65 6c 73 65 0d  pMsgBuf;...else.
1ab0: 0a 09 09 73 74 72 45 72 72 2e 46 6f 72 6d 61 74  ...strErr.Format
1ac0: 28 22 cd e5 e8 e7 e2 e5 f1 f2 ed e0 ff 20 ee f8  ("........... ..
1ad0: e8 e1 ea e0 3a 20 30 78 25 30 38 58 22 2c 20 64  ....: 0x%08X", d
1ae0: 77 4d 65 73 73 61 67 65 49 64 29 3b 0d 0a 09 4c  wMessageId);...L
1af0: 6f 63 61 6c 46 72 65 65 28 6c 70 4d 73 67 42 75  ocalFree(lpMsgBu
1b00: 66 29 3b 0d 0a 09 52 75 6e 74 69 6d 65 45 72 72  f);...RuntimeErr
1b10: 6f 72 28 73 74 72 45 72 72 29 3b 0d 0a 7d 0d 0a  or(strErr);..}..
1b20: 0d 0a 23 70 72 61 67 6d 61 20 63 6f 6d 6d 65 6e  ..#pragma commen
1b30: 74 28 6c 69 62 2c 20 22 76 65 72 73 69 6f 6e 2e  t(lib, "version.
1b40: 6c 69 62 22 29 0d 0a 0d 0a 43 53 74 72 69 6e 67  lib")....CString
1b50: 20 47 65 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f   GetModuleVersio
1b60: 6e 49 6e 66 6f 28 48 4d 4f 44 55 4c 45 20 68 4d  nInfo(HMODULE hM
1b70: 6f 64 75 6c 65 2c 20 43 53 74 72 69 6e 67 20 56  odule, CString V
1b80: 65 72 49 6e 66 6f 4e 61 6d 65 29 0d 0a 2f 2f 56  erInfoName)..//V
1b90: 65 72 49 6e 66 6f 4e 61 6d 65 3a 20 46 69 6c 65  erInfoName: File
1ba0: 56 65 72 73 69 6f 6e 2c 20 50 72 69 76 61 74 65  Version, Private
1bb0: 42 75 69 6c 64 2c 20 65 74 63 0d 0a 7b 0d 0a 09  Build, etc..{...
1bc0: 43 53 74 72 69 6e 67 20 72 65 73 3b 0d 0a 0d 0a  CString res;....
1bd0: 09 63 68 61 72 2a 20 66 6e 61 6d 65 20 3d 20 6e  .char* fname = n
1be0: 65 77 20 63 68 61 72 5b 4d 41 58 5f 46 4e 41 4d  ew char[MAX_FNAM
1bf0: 45 5f 4c 45 4e 5d 3b 0d 0a 09 47 65 74 4d 6f 64  E_LEN];...GetMod
1c00: 75 6c 65 46 69 6c 65 4e 61 6d 65 28 68 4d 6f 64  uleFileName(hMod
1c10: 75 6c 65 2c 20 66 6e 61 6d 65 2c 20 4d 41 58 5f  ule, fname, MAX_
1c20: 46 4e 41 4d 45 5f 4c 45 4e 29 3b 0d 0a 0d 0a 09  FNAME_LEN);.....
1c30: 44 57 4f 52 44 20 73 69 7a 65 2c 20 7a 3b 0d 0a  DWORD size, z;..
1c40: 09 73 69 7a 65 20 3d 20 3a 3a 47 65 74 46 69 6c  .size = ::GetFil
1c50: 65 56 65 72 73 69 6f 6e 49 6e 66 6f 53 69 7a 65  eVersionInfoSize
1c60: 28 66 6e 61 6d 65 2c 20 26 7a 29 3b 0d 0a 0d 0a  (fname, &z);....
1c70: 09 69 66 28 73 69 7a 65 29 0d 0a 09 7b 0d 0a 09  .if(size)...{...
1c80: 09 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68  .static const ch
1c90: 61 72 2a 20 45 6e 67 4e 61 6d 65 73 5b 5d 3d 7b  ar* EngNames[]={
1ca0: 0d 0a 09 09 09 22 46 69 6c 65 56 65 72 73 69 6f  ....."FileVersio
1cb0: 6e 22 2c 0d 0a 09 09 09 22 50 72 69 76 61 74 65  n",....."Private
1cc0: 42 75 69 6c 64 22 2c 0d 0a 09 09 7d 3b 0d 0a 09  Build",....};...
1cd0: 09 63 68 61 72 2a 20 70 56 65 72 73 69 6f 6e 3d  .char* pVersion=
1ce0: 6e 65 77 20 63 68 61 72 5b 73 69 7a 65 5d 3b 0d  new char[size];.
1cf0: 0a 09 09 47 65 74 46 69 6c 65 56 65 72 73 69 6f  ...GetFileVersio
1d00: 6e 49 6e 66 6f 28 66 6e 61 6d 65 2c 20 30 2c 20  nInfo(fname, 0, 
1d10: 73 69 7a 65 2c 20 70 56 65 72 73 69 6f 6e 29 3b  size, pVersion);
1d20: 0d 0a 0d 0a 09 09 57 4f 52 44 2a 20 74 72 61 6e  ......WORD* tran
1d30: 73 6c 61 74 65 3b 0d 0a 09 09 55 49 4e 54 20 6c  slate;....UINT l
1d40: 65 6e 3b 0d 0a 09 09 56 65 72 51 75 65 72 79 56  en;....VerQueryV
1d50: 61 6c 75 65 28 70 56 65 72 73 69 6f 6e 2c 20 22  alue(pVersion, "
1d60: 5c 5c 56 61 72 46 69 6c 65 49 6e 66 6f 5c 5c 54  \\VarFileInfo\\T
1d70: 72 61 6e 73 6c 61 74 69 6f 6e 22 2c 20 28 76 6f  ranslation", (vo
1d80: 69 64 2a 2a 29 26 74 72 61 6e 73 6c 61 74 65 2c  id**)&translate,
1d90: 20 26 6c 65 6e 29 3b 0d 0a 09 09 43 53 74 72 69   &len);....CStri
1da0: 6e 67 20 62 6c 6f 63 6b 4e 61 6d 65 3b 0d 0a 09  ng blockName;...
1db0: 09 62 6c 6f 63 6b 4e 61 6d 65 2e 46 6f 72 6d 61  .blockName.Forma
1dc0: 74 28 22 5c 5c 53 74 72 69 6e 67 46 69 6c 65 49  t("\\StringFileI
1dd0: 6e 66 6f 5c 5c 25 30 34 78 25 30 34 78 5c 5c 25  nfo\\%04x%04x\\%
1de0: 73 22 2c 74 72 61 6e 73 6c 61 74 65 5b 30 5d 2c  s",translate[0],
1df0: 20 74 72 61 6e 73 6c 61 74 65 5b 31 5d 2c 20 56   translate[1], V
1e00: 65 72 49 6e 66 6f 4e 61 6d 65 29 3b 0d 0a 0d 0a  erInfoName);....
1e10: 09 09 4c 50 43 54 53 54 52 20 76 61 6c 75 65 62  ..LPCTSTR valueb
1e20: 75 66 3b 0d 0a 09 09 56 65 72 51 75 65 72 79 56  uf;....VerQueryV
1e30: 61 6c 75 65 28 70 56 65 72 73 69 6f 6e 2c 20 28  alue(pVersion, (
1e40: 63 68 61 72 2a 29 28 4c 50 43 54 53 54 52 29 28  char*)(LPCTSTR)(
1e50: 62 6c 6f 63 6b 4e 61 6d 65 29 2c 20 28 76 6f 69  blockName), (voi
1e60: 64 2a 2a 29 26 76 61 6c 75 65 62 75 66 2c 20 26  d**)&valuebuf, &
1e70: 6c 65 6e 29 3b 0d 0a 09 09 72 65 73 20 3d 20 76  len);....res = v
1e80: 61 6c 75 65 62 75 66 3b 0d 0a 0d 0a 09 09 64 65  aluebuf;......de
1e90: 6c 65 74 65 20 70 56 65 72 73 69 6f 6e 3b 0d 0a  lete pVersion;..
1ea0: 09 7d 0d 0a 09 64 65 6c 65 74 65 20 66 6e 61 6d  .}...delete fnam
1eb0: 65 3b 0d 0a 0d 0a 09 72 65 74 75 72 6e 20 72 65  e;.....return re
1ec0: 73 3b 0d 0a 7d 0d 0a 0d 0a 43 53 74 72 69 6e 67  s;..}....CString
1ed0: 20 47 65 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f   GetModuleVersio
1ee0: 6e 49 6e 66 6f 28 43 53 74 72 69 6e 67 20 4d 6f  nInfo(CString Mo
1ef0: 64 75 6c 65 4e 61 6d 65 2c 20 43 53 74 72 69 6e  duleName, CStrin
1f00: 67 20 56 65 72 49 6e 66 6f 4e 61 6d 65 29 0d 0a  g VerInfoName)..
1f10: 2f 2f 56 65 72 49 6e 66 6f 4e 61 6d 65 3a 20 46  //VerInfoName: F
1f20: 69 6c 65 56 65 72 73 69 6f 6e 2c 20 50 72 69 76  ileVersion, Priv
1f30: 61 74 65 42 75 69 6c 64 2c 20 65 74 63 0d 0a 7b  ateBuild, etc..{
1f40: 0d 0a 09 72 65 74 75 72 6e 20 47 65 74 4d 6f 64  ...return GetMod
1f50: 75 6c 65 56 65 72 73 69 6f 6e 49 6e 66 6f 28 47  uleVersionInfo(G
1f60: 65 74 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 28 4d  etModuleHandle(M
1f70: 6f 64 75 6c 65 4e 61 6d 65 29 2c 20 56 65 72 49  oduleName), VerI
1f80: 6e 66 6f 4e 61 6d 65 29 3b 0d 0a 7d 0d 0a 0d 0a  nfoName);..}....