rtoss - Blame information for rev 292

Subversion Repositories:
Rev:
Rev Author Line No. Line
280 roytam 1 // MemPmBasicPage.cpp : 实现文件
2 //
3  
4 #include "stdafx.h"
5 #include "PokemonMemHack.h"
6 #include "MemPmBasicPage.h"
7  
8 // CMemPmBasicPage 对话框
9  
10 IMPLEMENT_DYNAMIC(CMemPmBasicPage, CMemPmTabPage)
11 CMemPmBasicPage::CMemPmBasicPage()
12 {
13         m_uTemplateId = CMemPmBasicPage::IDD;
14         m_ppc = NULL;
15         m_wPreBreed = -1;
16 }
17  
18 CMemPmBasicPage::~CMemPmBasicPage()
19 {
20 }
21  
22 void CMemPmBasicPage::DoDataExchange(CDataExchange* pDX)
23 {
24         CMemPmTabPage::DoDataExchange(pDX);
25         DDX_Control(pDX, IDC_BREED_LIST, m_ctrlBreedList);
26         DDX_Control(pDX, IDC_PS_LIST, m_ctrlPsList);
27         DDX_Control(pDX, IDC_SPEC_LIST, m_ctrlSpecList);
28         DDX_Control(pDX, IDC_ITEM_LIST, m_ctrlItemList);
29         DDX_Control(pDX, IDC_PS_DESC, m_ctrlPsDesc);
30         DDX_Control(pDX, IDC_NICK_NAME, m_ctrlNickName);
31         DDX_Control(pDX, IDC_CATCHER_NAME, m_ctrlCatcherName);
32         DDX_Control(pDX, IDC_SEX_LIST, m_ctrlSexList);
33         DDX_Control(pDX, IDC_LEVEL_LIST, m_ctrlLevelList);
34 }
35  
36 BEGIN_MESSAGE_MAP(CMemPmBasicPage, CMemPmTabPage)
37         ON_CBN_SELCHANGE(IDC_PS_LIST, GetPs)
38         ON_BN_CLICKED(IDC_SHINY, GetShiny)
39         ON_EN_CHANGE(IDC_CHAR, GetChar)
40         ON_EN_CHANGE(IDC_ID, GetId)
41         ON_CBN_SELCHANGE(IDC_BREED_LIST, GetBreed)
42         ON_LBN_SELCHANGE(IDC_SPEC_LIST, GetSpec)
43         ON_CBN_SELCHANGE(IDC_SEX_LIST, GetSex)
44         ON_EN_CHANGE(IDC_EXP, GetExp)
45         ON_LBN_SELCHANGE(IDC_LEVEL_LIST, GetLevel)
46         ON_CBN_SELCHANGE(IDC_ITEM_LIST, GetItem)
47         ON_BN_CLICKED(IDC_EGG, OnBnClickedEgg)
48         ON_BN_CLICKED(IDC_ENABLE_TEXT, OnBnClickedEnableText)
49         ON_BN_CLICKED(IDC_OBEDIENCE, OnBnClickedObedience)
50         ON_STN_DBLCLK(IDC_CHAR_TITLE, OnStnDblclickCharTitle)
51         ON_STN_DBLCLK(IDC_ID_TITLE, OnStnDblclickIdTitle)
52 END_MESSAGE_MAP()
53  
54  
55 // CMemPmBasicPage 消息处理程序
56 BOOL CMemPmBasicPage::OnInitDialog()
57 {
58         CMemPmTabPage::OnInitDialog();
59  
60         m_ctrlBreedList.SetExtendedStyle(0, CBES_EX_NOSIZELIMIT);
61  
62         return TRUE;  // return TRUE unless you set the focus to a control
63         // 异常: OCX 属性页应返回 FALSE
64 }
65  
66 void CMemPmBasicPage::TransData(BOOL bToControls)
67 {
68         DWORD   dwNum;
69         CString szText;
70         WORD    wBreed;
71  
72         m_ppc = GetPokemonCodec();
73         if(m_ppc == NULL)
74                 return;
75  
76         if(bToControls)
77         {
78                 ////////////////////////////////////////////////
79                 m_ctrlBreedList.SetImageList(g_MemRom.m_pTinyIconList);
80                 COMBOBOXEXITEM  cbei;
81                 cbei.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
82  
83                 for(wBreed = 0; wBreed < BREED_COUNT; ++wBreed)
84                 {
85                         cbei.iItem = wBreed;
86                         cbei.iImage = g_MemRom.GetSmallIconIndex(wBreed, rand() % g_MemRom.GetSmallIconCount(wBreed));
87                         cbei.iSelectedImage = cbei.iImage;
88                         m_ctrlBreedList.SetItem(&cbei);
89                 }
90  
91                 OnBnClickedEnableText();
92  
93                 SetBreed();
94  
95                 szText.Format(_T("0x%08lX"), m_ppc->GetChar());
96                 SetDlgItemText(IDC_CHAR, szText);
97  
98                 szText.Format(_T("0x%08lX"), m_ppc->GetID());
99                 SetDlgItemText(IDC_ID, szText);
100  
101                 SetExp();
102  
103                 SetDlgItemInt(IDC_INTIMATE, m_ppc->GetIntimate(), FALSE);
104  
105                 SetPs();
106  
107                 m_ctrlItemList.SetCurSel(m_ppc->GetItem());
108                 SetItemDesc();
109  
110                 CheckDlgButton(IDC_EGG, m_ppc->GetIsEgg() ? BST_CHECKED : BST_UNCHECKED);
111  
112                 CheckDlgButton(IDC_SHINY, m_ppc->GetIsShiny() ? BST_CHECKED : BST_UNCHECKED);
113  
114                 CheckDlgButton(IDC_OBEDIENCE, m_ppc->GetObedience() ? BST_CHECKED : BST_UNCHECKED);
115         }
116         else
117         {
118                 GetDlgItemText(IDC_INTIMATE, szText);
119                 dwNum = min(_tcstoul(szText, 0, 0), 0xFF);
120                 m_ppc->SetIntimate((BYTE)(dwNum));
121  
122                 if(IsDlgButtonChecked(IDC_ENABLE_TEXT) == BST_CHECKED)
123                 {
124                         GetDlgItemText(IDC_NICK_NAME, szText);
125                         m_ppc->SetNickName(szText);
126  
127                         GetDlgItemText(IDC_CATCHER_NAME, szText);
128                         m_ppc->SetCatcherName(szText);
129                 }
130         }
131 }
132  
133 void CMemPmBasicPage::OnChangeUILang(VOID)
134 {
135         DWORD   dwIndex, dwCount, dwCurSel;
136         CString szText;
137         COMBOBOXEXITEM  cbei;
138         LPCTSTR szFmt2[3] = { _T(""), _T("%-2lu: "), _T("%02lX: ") };
139         LPCTSTR szFmt3[3] = { _T(""), _T("%-3lu: "), _T("%03lX: ") };
140  
141         ////////////////////////////////////////////////
142         dwCurSel = m_ctrlBreedList.GetCurSel();
143         SetSpecList();
144  
145         cbei.mask = CBEIF_TEXT;
146         dwCount = m_ctrlBreedList.GetCount();
147         for(dwIndex = 0; dwIndex < BREED_COUNT; ++dwIndex)
148         {
149                 cbei.iItem = dwIndex;
150                 szText.Format(szFmt3[cfg.dwCount], dwIndex);
151                 szText += cfg.pBreedNameList[dwIndex].rgszText[cfg.dwLang];
152                 cbei.pszText = szText.GetBuffer();
153                 if(dwIndex < dwCount)
154                         m_ctrlBreedList.SetItem(&cbei);
155                 else if(dwIndex < BREED_COUNT)
156                         m_ctrlBreedList.InsertItem(&cbei);
157                 szText.ReleaseBuffer();
158         }
159         for(; dwIndex < dwCount; ++dwIndex)
160         {
161                 m_ctrlBreedList.DeleteItem(BREED_COUNT);
162         }
163         m_ctrlBreedList.SetCurSel(dwCurSel);
164  
165         ////////////////////////////////////////////////
166         dwCurSel = m_ctrlPsList.GetCurSel();
167         m_ctrlPsList.ResetContent();
168         for(dwIndex = 0; dwIndex < PS_COUNT; ++dwIndex)
169         {
170                 szText.Format(szFmt2[cfg.dwCount], dwIndex);
171                 szText += cfg.pPsNameList[dwIndex].rgszText[cfg.dwLang];
172                 m_ctrlPsList.AddString(szText);
173         }
174         m_ctrlPsList.SetCurSel(dwCurSel);
175  
176         ////////////////////////////////////////////////
177         dwCurSel = m_ctrlItemList.GetCurSel();
178         m_ctrlItemList.ResetContent();
179         for(dwIndex = 0; dwIndex < ITEM_COUNT; ++dwIndex)
180         {
181                 szText.Format(szFmt3[cfg.dwCount], dwIndex);
182                 szText += cfg.pItemNameList[dwIndex].rgszText[cfg.dwLang];
183                 m_ctrlItemList.AddString(szText);
184         }
185         m_ctrlItemList.SetCurSel(dwCurSel);
186  
187         SetItemDesc();
188 }
189  
190 void CMemPmBasicPage::GetChar()
191 {
192         if(!m_ppc)
193                 return;
194  
195         CString szText;
196  
197         GetDlgItemText(IDC_CHAR, szText);
198         m_ppc->SetChar(_tcstoul(szText, 0, 0));
199  
200         // ps
201         SetPs();
202  
203         // sex
204         SetSex();
205  
206         // shiny
207         CheckDlgButton(IDC_SHINY, m_ppc->GetIsShiny() ? BST_CHECKED : BST_UNCHECKED);
208 }
209  
210 void CMemPmBasicPage::GetId()
211 {
212         if(!m_ppc)
213                 return;
214  
215         CString szText;
216  
217         GetDlgItemText(IDC_ID, szText);
218         m_ppc->SetID(_tcstoul(szText, 0, 0));
219  
220         // shiny
221         CheckDlgButton(IDC_SHINY, m_ppc->GetIsShiny() ? BST_CHECKED : BST_UNCHECKED);
222 }
223  
224 void CMemPmBasicPage::SetPs()
225 {
226         if(!m_ppc)
227                 return;
228  
229         m_ctrlPsList.SetCurSel(m_ppc->GetPersonality());
230  
231         // ps desc
232         SetPsDesc();
233 }
234  
235 void CMemPmBasicPage::SetPsDesc()
236 {
237         if(!m_ppc)
238                 return;
239  
240         BYTE    bPs = m_ppc->GetPersonality();
241         CString szDesc;
242  
243         CHAR    b[5] = { 1, 1, 1, 1, 1 };
244         b[bPs / 5] += 1;
245         b[bPs % 5] -= 1;
246         static LPCTSTR sz[3] = { _T("-"), _T(" "), _T("+") };
247  
248         szDesc.Format(_T("    攻击:%s防御:%s\n敏捷:%s特攻:%s特防:%s"),
249                                         sz[b[0]], sz[b[1]], sz[b[2]], sz[b[3]], sz[b[4]]);
250  
251         m_ctrlPsDesc.SetWindowText(szDesc);
252 }
253  
254 void CMemPmBasicPage::SetBreed()
255 {
256         if(!m_ppc)
257                 return;
258  
259         WORD    wBreed;
260  
261         wBreed = m_ppc->GetBreed();
262         m_ctrlBreedList.SetCurSel(wBreed);
263  
264         // spec
265         SetSpecList();
266  
267         // sex
268         SetSexList();
269  
270         // exp
271         SetLevelList();
272  
273         m_wPreBreed = wBreed;
274 }
275  
276 void CMemPmBasicPage::GetBreed()
277 {
278         if(!m_ppc)
279                 return;
280  
281         WORD    wBreed;
282  
283         wBreed = m_ctrlBreedList.GetCurSel();
284         m_ppc->SetBreed(wBreed);
285  
286         // spec
287         SetSpecList();
288  
289         // sex
290         SetSexList();
291  
292         // exp
293         SetLevelList();
294  
295         // parent's breed list
296         (reinterpret_cast<CMemPmPage *>(GetParent()->GetParent()))->SetPmList(/*bSelectionOnly=*/ TRUE);
297  
298         m_wPreBreed = wBreed;
299 }
300  
301 void CMemPmBasicPage::GetPs()
302 {
303         if(!m_ppc)
304                 return;
305  
306         CString szText;
307         BYTE    bPs;
308  
309         bPs = m_ctrlPsList.GetCurSel();
310         m_ppc->SetPersonality(bPs);
311  
312         // ps desc
313         SetPsDesc();
314  
315         // char
316         szText.Format(_T("0x%08lX"), m_ppc->GetChar());
317         SetDlgItemText(IDC_CHAR, szText);
318  
319         // id
320         szText.Format(_T("0x%08lX"), m_ppc->GetID());
321         SetDlgItemText(IDC_ID, szText);
322 }
323  
324 void CMemPmBasicPage::SetSpecList()
325 {
326         if(!m_ppc)
327                 return;
328  
329         WORD    wBreed;
330         BYTE    bSpec, bIndex;
331         BreedListEntry *        pBreed = NULL;
332  
333         m_ctrlSpecList.ResetContent();
334         wBreed = m_ppc->GetBreed();
335         if(wBreed < BREED_COUNT)
336         {
337                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
338                 for(bIndex = 0; bIndex < 2; ++bIndex)
339                 {
340                         bSpec = (&(pBreed->bSpecialty1))[bIndex];
341                         m_ctrlSpecList.AddString(cfg.pSpecNameList[bSpec].rgszText[cfg.dwLang]);
342                 }
343                 m_ctrlSpecList.SetCurSel(m_ppc->GetSpecialty());
344  
345                 SetSpecDesc();
346         }
347 }
348  
349 void CMemPmBasicPage::SetSpecDesc()
350 {
351         if(!m_ppc)
352                 return;
353  
354         WORD    wBreed;
355         BYTE    bSpecSel;
356         BYTE    bSpec;
357         BreedListEntry *        pBreed = NULL;
358  
359         wBreed = m_ppc->GetBreed();
360         if(wBreed < BREED_COUNT)
361         {
362                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
363                 bSpecSel = m_ctrlSpecList.GetCurSel();
364                 if(bSpecSel < 2)
365                 {
366                         bSpec = (&(pBreed->bSpecialty1))[bSpecSel];
367                         SetDlgItemText(IDC_SPEC_DESC, cfg.pSpecDescList[bSpec].rgszText[cfg.dwLang]);
368                 }
369         }
370 }
371  
372 void CMemPmBasicPage::GetSpec()
373 {
374         if(!m_ppc)
375                 return;
376  
377         BYTE    bSpec;
378         WORD    wBreed;
379  
380         wBreed = m_ppc->GetBreed();
381         if(wBreed < BREED_COUNT)
382         {
383                 bSpec = m_ctrlSpecList.GetCurSel();
384                 if(bSpec < 2)
385                 {
386                         m_ppc->SetSpecialty(bSpec);
387                         SetSpecDesc();
388                 }
389         }
390 }
391  
392 void CMemPmBasicPage::SetSexList()
393 {
394         if(!m_ppc)
395                 return;
396  
397         WORD    wBreed;
398         BYTE    bPreFR, bFR;
399         BOOL    bChange = TRUE;
400         BreedListEntry *        pPreBreed = NULL;
401         BreedListEntry *        pBreed = NULL;
402  
403         wBreed = m_ppc->GetBreed();
404         if(wBreed < BREED_COUNT)
405         {
406                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
407                 bFR = pBreed->bFemaleRatio;
408  
409                 if(m_wPreBreed < BREED_COUNT)
410                 {
411                         pPreBreed = g_MemRom.GetBreedListEntry(m_wPreBreed);
412                         bPreFR = pPreBreed->bFemaleRatio;
413  
414                         if((bPreFR == bFR) ||
415                            (bPreFR > 0 && bPreFR < 0xFE &&
416                             bFR > 0 && bFR < 0xFE))
417                         {
418                                 // no need to change sex list
419                                 bChange = FALSE;
420                         }
421                 }
422  
423                 if(bChange)
424                 {
425                         m_ctrlSexList.ResetContent();
426                         switch(bFR)
427                         {
428                         case 0xFF:
429                                 m_ctrlSexList.AddString(_T("不明"));
430                                 break;
431  
432                         case 0xFE:
433                                 m_ctrlSexList.AddString(_T("全♀"));
434                                 break;
435  
436                         case 0x00:
437                                 m_ctrlSexList.AddString(_T("全♂"));
438                                 break;
439  
440                         default:
441                                 m_ctrlSexList.AddString(_T("♀"));
442                                 m_ctrlSexList.AddString(_T("♂"));
443                                 break;
444                         }
445                 }
446  
447                 SetSex();
448         }
449 }
450  
451 void CMemPmBasicPage::SetSex()
452 {
453         if(!m_ppc)
454                 return;
455  
456         WORD    wBreed;
457         BreedListEntry *        pBreed = NULL;
458  
459         wBreed = m_ppc->GetBreed();
460         if(wBreed < BREED_COUNT)
461         {
462                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
463                 switch(pBreed->bFemaleRatio)
464                 {
465                 case 0xFF:
466                 case 0xFE:
467                 case 0x00:
468                         m_ctrlSexList.SetCurSel(0);
469                         break;
470  
471                 default:
472                         m_ctrlSexList.SetCurSel(m_ppc->GetSex(pBreed->bFemaleRatio));
473                         break;
474                 }
475         }
476 }
477  
478 void CMemPmBasicPage::GetSex()
479 {
480         if(!m_ppc)
481                 return;
482  
483         WORD    wBreed;
484         BreedListEntry *        pBreed = NULL;
485         BYTE    bSex;
486         CString szText;
487  
488         wBreed = m_ppc->GetBreed();
489         if(wBreed < BREED_COUNT)
490         {
491                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
492                 switch(pBreed->bFemaleRatio)
493                 {
494                 case 0xFF:
495                 case 0xFE:
496                 case 0x00:
497                         break;
498  
499                 default:
500                         bSex = m_ctrlSexList.GetCurSel();
501                         m_ppc->SetSex(bSex, pBreed->bFemaleRatio);
502                         break;
503                 }
504  
505                 // char
506                 szText.Format(_T("0x%08lX"), m_ppc->GetChar());
507                 SetDlgItemText(IDC_CHAR, szText);
508  
509                 // id
510                 szText.Format(_T("0x%08lX"), m_ppc->GetID());
511                 SetDlgItemText(IDC_ID, szText);
512         }
513 }
514  
515 void CMemPmBasicPage::SetLevelList()
516 {
517         if(!m_ppc)
518                 return;
519  
520         BYTE    bLevel, bExpType;
521         WORD    wBreed;
522         BOOL    bChange = TRUE;
523         CString szText;
524         BreedListEntry *        pBreed = NULL;
525         DWORD *                         pdwExpList = NULL;
526  
527         wBreed = m_ppc->GetBreed();
528         if(wBreed < BREED_COUNT)
529         {
530                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
531                 bExpType = pBreed->bExpType;
532                 if(m_wPreBreed < BREED_COUNT)
533                 {
534                         if(g_MemRom.GetBreedListEntry(m_wPreBreed)->bExpType == bExpType)
535                         {
536                                 bChange = FALSE;
537                         }
538                 }
539  
540                 if(bChange)
541                 {
542                         m_ctrlLevelList.ResetContent();
543                         pdwExpList = g_MemRom.GetExpList(bExpType);
292 roytam 544                         if(pdwExpList)
280 roytam 545                         {
292 roytam 546                                 for(bLevel = 0; bLevel < EXP_COUNT; ++bLevel)
547                                 {
548                                         szText.Format(_T("%-3lu:%lu"), (DWORD)(bLevel), pdwExpList[bLevel]);
549                                         m_ctrlLevelList.AddString(szText);
550                                 }
280 roytam 551                         }
552                 }
553  
554                 SetLevel();
555         }
556 }
557  
558 void CMemPmBasicPage::SetLevel()
559 {
560         if(!m_ppc)
561                 return;
562  
563         BYTE    bLevel, bExpType;
564         WORD    wBreed;
565         DWORD   dwExp;
566         BreedListEntry *        pBreed = NULL;
567         DWORD *                         pdwExpList = NULL;
568  
569         wBreed = m_ppc->GetBreed();
570         if(wBreed < BREED_COUNT)
571         {
572                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
573                 bExpType = pBreed->bExpType;
574                 pdwExpList = g_MemRom.GetExpList(bExpType);
575                 dwExp = m_ppc->GetExp();
576  
292 roytam 577                 if(pdwExpList)
280 roytam 578                 {
292 roytam 579                         for(bLevel = 1; bLevel < EXP_COUNT; ++bLevel)
580                         {
581                                 if(dwExp < pdwExpList[bLevel])
582                                         break;
583                         }
584                         m_ctrlLevelList.SetCurSel(bLevel - 1);
280 roytam 585                 }
586         }
587 }
588  
589 void CMemPmBasicPage::GetLevel()
590 {
591         if(!m_ppc)
592                 return;
593  
594         BYTE    bLevel, bExpType;
595         WORD    wBreed;
596         DWORD   dwExp;
597         BreedListEntry *        pBreed = NULL;
598         DWORD *                         pdwExpList = NULL;
599  
600         wBreed = m_ppc->GetBreed();
601         if(wBreed < BREED_COUNT)
602         {
603                 pBreed = g_MemRom.GetBreedListEntry(wBreed);
604                 bExpType = pBreed->bExpType;
605                 bLevel = m_ctrlLevelList.GetCurSel();
606                 if(bLevel < EXP_COUNT)
607                 {
608                         pdwExpList = g_MemRom.GetExpList(bExpType);
609                         dwExp = pdwExpList[bLevel];
610                         m_ppc->SetExp(dwExp);
611                         SetDlgItemInt(IDC_EXP, dwExp, FALSE);
612                 }
613         }
614 }
615  
616 void CMemPmBasicPage::SetExp()
617 {
618         if(!m_ppc)
619                 return;
620  
621         SetDlgItemInt(IDC_EXP, m_ppc->GetExp(), FALSE);
622  
623         // level
624         SetLevel();
625 }
626  
627 void CMemPmBasicPage::GetExp()
628 {
629         if(!m_ppc)
630                 return;
631  
632         DWORD   dwExp;
633         CString szText;
634  
635         GetDlgItemText(IDC_EXP, szText);
636         dwExp = _tcstoul(szText, 0, 0);
637         m_ppc->SetExp(dwExp);
638  
639         // level
640         SetLevel();
641 }
642  
643 void CMemPmBasicPage::GetItem()
644 {
645         if(!m_ppc)
646                 return;
647  
648         WORD    wItem;
649         wItem = m_ctrlItemList.GetCurSel();
650  
651         if(wItem < ITEM_COUNT)
652         {
653                 m_ppc->SetItem(wItem);
654                 SetItemDesc();
655         }
656 }
657  
658 void CMemPmBasicPage::SetItemDesc()
659 {
660         if(!m_ppc)
661                 return;
662  
663         WORD    wItem;
664  
665         wItem = m_ppc->GetItem();
666         if(wItem < ITEM_COUNT)
667                 SetDlgItemText(IDC_ITEM_DESC, cfg.pItemDescList[wItem].rgszText[cfg.dwLang]);
668 }
669  
670 void CMemPmBasicPage::GetShiny()
671 {
672         DWORD   dwId;
673         CString szText;
674  
675         if(IsDlgButtonChecked(IDC_SHINY) == BST_CHECKED)
676                 dwId = m_ppc->GenShinyID();
677         else
678                 dwId = m_ppc->GenNoShinyID();
679  
680         m_ppc->SetID(dwId);
681         szText.Format(_T("0x%08lX"), dwId);
682         SetDlgItemText(IDC_ID, szText);
683 }
684  
685 void CMemPmBasicPage::OnBnClickedEgg()
686 {
687         if(m_ppc)
688         {
689                 if(IsDlgButtonChecked(IDC_EGG) == BST_CHECKED)
690                         m_ppc->SetIsEgg(1);
691                 else
692                         m_ppc->SetIsEgg(0);
693         }
694 }
695  
696 void CMemPmBasicPage::OnBnClickedEnableText()
697 {
698         CString szText;
699  
700         if(m_ppc)
701         {
702                 if(g_MemHack.GetVersion())
703                         m_ppc->SetLang(g_MemHack.m_dwLang);
704  
705                 if(IsDlgButtonChecked(IDC_ENABLE_TEXT) == BST_CHECKED)
706                 {
707                         m_ctrlNickName.EnableWindow(TRUE);
708                         m_ppc->GetNickName(szText);
709                         SetDlgItemText(IDC_NICK_NAME, szText);
710  
711                         m_ctrlCatcherName.EnableWindow(TRUE);
712                         m_ppc->GetCatcherName(szText);
713                         SetDlgItemText(IDC_CATCHER_NAME, szText);
714                 }
715                 else
716                 {
717                         m_ctrlNickName.SetWindowText(_T(""));
718                         m_ctrlNickName.EnableWindow(FALSE);
719  
720                         m_ctrlCatcherName.SetWindowText(_T(""));
721                         m_ctrlCatcherName.EnableWindow(FALSE);
722                 }
723         }
724         else
725         {
726                 CheckDlgButton(IDC_ENABLE_TEXT, BST_UNCHECKED);
727         }
728 }
729  
730 void CMemPmBasicPage::OnBnClickedObedience()
731 {
732         if(m_ppc)
733         {
734                 if(IsDlgButtonChecked(IDC_OBEDIENCE) == BST_CHECKED)
735                         m_ppc->SetObedience(1);
736                 else
737                         m_ppc->SetObedience(0);
738         }
739 }
740  
741 void CMemPmBasicPage::OnStnDblclickCharTitle()
742 {
743         DWORD   dwChar;
744         CString szText;
745  
746         if(m_ppc)
747         {
748                 dwChar = GenLongRandom();
749                 szText.Format(_T("0x%08lX"), dwChar);
750                 SetDlgItemText(IDC_CHAR, szText);
751         }
752 }
753  
754 void CMemPmBasicPage::OnStnDblclickIdTitle()
755 {
756         DWORD   dwId;
757         CString szText;
758  
759         if(m_ppc)
760         {
761                 dwId = GenLongRandom();
762                 szText.Format(_T("0x%08lX"), dwId);
763                 SetDlgItemText(IDC_ID, szText);
764         }
765 }