4.¸ÅÅ©·Î ´ëÈ­»óÀÚ

°¡.¸ÅÅ©·Î °ü¸®

¸ÅÅ©·Î¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸ðµç Äڵ尡 ¿Ï·áµÇ¾úÀ¸¹Ç·Î ÀÌÁ¦ »ç¿ëÀÚ°¡ ¸ÅÅ©·Î¸¦ ÀÛ¼ºÇÏ°í °ü¸®ÇÒ ¼ö ÀÖ´Â ´ëÈ­»óÀÚ¸¦ ¸¸µé Â÷·Ê´Ù. »ç¿ëÀÚ´Â ÀÌ ´ëÈ­»óÀÚ¿¡¼­ ÃÖ±Ù ÆíÁý µ¿ÀÛÀ» ¸ÅÅ©·Î·Î ¸¸µé ¼öµµ ÀÖ°í Á÷Á¢ ¸í·ÉÀ» ÀÔ·ÂÇØ ³ÖÀ» ¼öµµ ÀÖÀ¸¸ç ¸ÅÅ©·Î¸¦ Ãß°¡, »èÁ¦, ÆíÁýÇÒ ¼ö ÀÖ´Ù. ´ëÈ­»óÀÚ ¸®¼Ò½º´Â ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î Äڵ常 ÀÛ¼ºÇÏ¸é µÈ´Ù. ¸ÕÀú OnCommand¿¡¼­ ¸ÅÅ©·Î °ü¸® ´ëÈ­»óÀÚ¸¦ È£ÃâÇÑ´Ù.

 

void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     ....

     case IDM_TOOL_MACRO:

          DialogBox(g_hInst,MAKEINTRESOURCE(IDD_MACRO),hWnd,MacroDlgProc);

          break;

 

´ëÈ­»óÀÚ ³»ºÎÀÇ µ¿ÀÛÀº ¹«Ã´ º¹ÀâÇÏÁö¸¸ ¾î·µç ´ëÈ­»óÀÚÀ̹ǷΠȣ½ºÆ®´Â ´ëÈ­»óÀÚ¸¦ ¶ç¿ì±â¸¸ ÇÏ¸é µÈ´Ù. Macro.h¿¡ °ü·Ã ÇÔ¼öÀÇ ¿øÇüÀ» ¼±¾ðÇÑ´Ù.

 

BOOL CALLBACK MacroDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK MacroEditDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

void DisplayMakingCommand(HWND hDlg);

BOOL CALLBACK AddCommandDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK RunMacroDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);

 

´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú´Â ´ÙÀ½°ú °°´Ù. ¸ÅÅ©·Î¿Í °ü·ÃµÈ ¸ðµç ÀÏÀ» °üÀåÇÏ¸ç °øÅë ÄÁÆ®·Ñ±îÁö ÇÁ·Î±×·¡¹ÖÇØ¾ß ÇÏ°í ³»ºÎ¿¡¼­ ApiEdit ÄÁÆ®·Ñ±îÁö »ý¼ºÇؼ­ »ç¿ëÇϹǷΠ±æÀÌ°¡ Á» ±æ´Ù.

 

BOOL CALLBACK MacroDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     static HWND hRecCom;

     static CApiEdit *pAe;

     static CApiEditText *pView,*pAct;

     static int oldidx=-1;

     static HWND hActive;

     SInfo *pSi;

     LVCOLUMN COL;

     int i,count,idx,len;

     LVITEM LI;

     TCHAR szName[65];

     RECT brt;

     BOOL bEnable;

     TCHAR *szMacro;

     const TCHAR *p;

     int Verb,Object;

     TCHAR szDesc[128];

 

     switch(iMessage) {

     case WM_INITDIALOG:

          MoveToParentCenter(hDlg);

          hRecCom=GetDlgItem(hDlg,IDC_RECENTCOM);

          COL.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

          COL.fmt=LVCFMT_LEFT;

          COL.cx=40;

          COL.pszText="¼ø¼­";

          COL.iSubItem=0;

          ListView_InsertColumn(hRecCom,0,&COL);

 

          COL.cx=150;

          COL.pszText="¸í·É";

          COL.iSubItem=1;

          ListView_InsertColumn(hRecCom,1,&COL);

 

          COL.cx=100;

          COL.pszText="¼³¸í";

          COL.iSubItem=2;

          ListView_InsertColumn(hRecCom,2,&COL);

          ListView_SetExtendedListViewStyle(hRecCom,LVS_EX_FULLROWSELECT);

 

          SetDlgItemInt(hDlg,IDC_MACROCOUNT,1,FALSE);

          SendDlgItemMessage(hDlg,IDC_SPINMACROCOUNT,UDM_SETRANGE,0,MAKELPARAM(1000000,1));

 

          // ¹öÆ° ÀÚ¸®¿¡ ApiEdit¸¦ ¹èÄ¡ÇÑ´Ù.´ëºÎºÐÀÇ ¼³Á¤Àº ±âº» ¼³Á¤´ë·Î, ¸î°¡Áö¸¸ °íÁ¤ ¼³Á¤ »ç¿ë

          GetWindowRect(GetDlgItem(hDlg,IDC_PLACEAPIEDIT),&brt);

          ScreenToClient(hDlg,(LPPOINT)&brt);

          ScreenToClient(hDlg,(LPPOINT)&brt.right);

          pAe=new CApiEdit;

          pAe->Create(brt.left,brt.top,brt.right-brt.left,brt.bottom-brt.top,

              WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP,0,hDlg);

          SetSetting(*pAe);

          pAe->SetShowState(SHOWMARGIN,TRUE);

          pAe->SetShowState(SHOWLINENUM,TRUE);

          pAe->SetWrap(0);

          pAe->SetWantTab(FALSE);

          pAct=pAe->GetActiveView();

          EnableWindow(pAe->hWnd,FALSE);

 

          // ÃÖ±Ù ¸í·ÉÀ» Àоî¿Â´Ù. È°¼ºÃ¢ÀÌ ¾øÀ¸¸é ¸»°í

          hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,(LPARAM)NULL);

          if (hActive) {

              pSi=(SInfo *)GetWindowLong(hActive,0);

              pView=pSi->Ae.GetActiveView();

              for (i=0;i<pView->AeMc.nowmc;i++) {

                   LI.mask=LVIF_TEXT;

                   LI.iSubItem=0;

                   LI.iItem=i;

                   itoa(i,szName,10);

                   LI.pszText=szName;

                   ListView_InsertItem(hRecCom,&LI);

 

                   p=pView->AeMc.arMc[i];

                   ListView_SetItemText(hRecCom,i,1,(LPSTR)p);

 

                   Verb=GetComVerb(p,arComVerb);

                   if (Verb==AEC_MOVE || Verb==AEC_MOVESEL || Verb==AEC_CONVERT) {

                        Object=GetComObject(Verb,p,arComObject,arObjOfVerb);

                        wsprintf(szDesc,"%s(%s)",arComVerb[Verb].Desc,

                            arComObject[arObjOfVerb[Verb]+Object].Desc);

                   } else {

                        lstrcpy(szDesc,arComVerb[Verb].Desc);

                   }

                   ListView_SetItemText(hRecCom,i,2,szDesc);

              }

              ListView_EnsureVisible(hList,i,FALSE);

          }

 

          // ¸ÅÅ©·Î ¸ñ·ÏÀ» Àоî¿Â´Ù. ù¹ø° ¸ÅÅ©·Î¸¦ ¼±ÅÃÇØ ÁØ´Ù.

          for (i=0;i<DgMacro.Num;i++) {

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_ADDSTRING,0,(LPARAM)DgMacro.arMacro[i].Name);

          }

          if (oldidx==-1) {

              oldidx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_SETCURSEL,0,0);

          } else {

              oldidx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_SETCURSEL,oldidx,0);

          }

          SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_CBMACRO,CBN_SELCHANGE),0);

          SendMessage(hDlg,WM_USER+1,0,0);

          return TRUE;

     // ¸ÅÅ©·Î °³¼ö¿¡ µû¶ó ÄÁÆ®·Ñ »ç¿ë ¿©ºÎ Á¶Á¤

     case WM_USER+1:

          if (SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCOUNT,0,0) == 0) {

              bEnable=FALSE;

          } else {

              bEnable=TRUE;

          }

          EnableWindow(pAe->hWnd,bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_BTNEDITMACRO),bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_BTNDELETEMACRO),bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_BTNMAKECOMMAND),bEnable);

          if (hActive==NULL) {

              bEnable=FALSE;

          }

          EnableWindow(GetDlgItem(hDlg,IDC_BTNRUNMACRO),bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_MACROCOUNT),bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_SPINMACROCOUNT),bEnable);

          EnableWindow(GetDlgItem(hDlg,IDC_BTNCOPYRECENT),bEnable);

          return TRUE;

     // ÇöÀç ÆíÁýÁßÀÎ ¸ÅÅ©·Î¸¦ wParam¹ø¿¡ ÀúÀåÇÑ´Ù.

     case WM_USER+2:

          len=pAe->GetTextLength();

          szMacro=(TCHAR *)malloc(len+2);

          pAe->GetText(szMacro,len+2);

          szMacro[len]=0;

          pAe->SetModified(FALSE);

          DgMacro.Set(wParam,szMacro);

          free(szMacro);

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam)) {

          case IDC_CBMACRO:

              switch (HIWORD(wParam)) {

              case CBN_SELCHANGE:

                   // ÀÌÀü ¸ÅÅ©·Î°¡ º¯°æµÇ¾úÀ¸¸é ¸ÕÀú ÀúÀåÇÑ´Ù.

                   if (oldidx!=-1 && pAe->GetModified()) {

                        SendMessage(hDlg,WM_USER+2,oldidx,0);

                   }

                   idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCURSEL,0,0);

                   if (idx != -1) {

                        pAe->SetText(DgMacro.arMacro[idx].Content,lstrlen(DgMacro.arMacro[idx].Content));

                        pAe->SetModified(FALSE);

                        oldidx=idx;

                   } else {

                        pAe->InitDoc();

                   }

                   break;

              }

              return TRUE;

          case IDC_BTNNEWMACRO:

              // ÀÌÀü ¸ÅÅ©·Î°¡ º¯°æµÇ¾úÀ¸¸é ¸ÕÀú ÀúÀåÇÑ´Ù.

              if (oldidx!=-1 && pAe->GetModified()) {

                   SendMessage(hDlg,WM_USER+2,oldidx,0);

              }

              lstrcpy(szName,"");

              if (DialogBoxParam(g_hInst,MAKEINTRESOURCE(IDD_EDITMACRO),hDlg,

                   MacroEditDlgProc,(LPARAM)szName)==IDCANCEL) {

                    return TRUE;

              }

 

              if (DgMacro.Find(szName) != -1) {

                   MessageBox(hDlg,"ÀÌ¹Ì µî·ÏµÈ À̸§ÀÔ´Ï´Ù. ´Ù¸¥ À̸§À» ¼±ÅÃÇØ ÁֽʽÿÀ","¾Ë¸²",MB_OK);

                   return TRUE;

              }

 

              idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_ADDSTRING,0,(LPARAM)szName);

              oldidx=idx;

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_SETCURSEL,idx,0);

              pAe->InitDoc();

              SendMessage(hDlg,WM_USER+1,0,0);

              // »õ·Î ¸¸µç ¸ÅÅ©·Î ÀÏ´Ü Ãß°¡. ±×·¡¾ß ¸Þ¸ð¸®°¡ ÇÒ´çµÇ°í SelChange°¡ ¹ß»ýÇصµ ¿¡·¯ ¾È³²

              DgMacro.Add(szName,"");

              return TRUE;

          case IDC_BTNEDITMACRO:

              idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCURSEL,0,0);

              lstrcpy(szName,DgMacro.arMacro[idx].Name);

              if (DialogBoxParam(g_hInst,MAKEINTRESOURCE(IDD_EDITMACRO),hDlg,

                   MacroEditDlgProc,(LPARAM)szName)==IDCANCEL) {

                   return TRUE;

              }

 

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_DELETESTRING,idx,0);

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_INSERTSTRING,idx,(LPARAM)szName);

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_SETCURSEL,idx,0);

              lstrcpy(DgMacro.arMacro[idx].Name,szName);

              return TRUE;

          case IDC_BTNDELETEMACRO:

              idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCURSEL,0,0);

              DgMacro.Delete(idx);

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_DELETESTRING,idx,0);

              if (SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCOUNT,0,0) == 0) {

                   SendMessage(hDlg,WM_USER+1,0,0);

                   idx=-1;

              } else {

                   idx=0;

              }

              SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_SETCURSEL,idx,0);

              oldidx=-1;

              SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_CBMACRO,CBN_SELCHANGE),0);

              return TRUE;

          case IDC_BTNMAKECOMMAND:

              szMacro=(TCHAR *)malloc(256);

              if (DialogBoxParam(g_hInst,MAKEINTRESOURCE(IDD_ADDCOMMAND),hDlg,

                   AddCommandDlgProc,(LPARAM)szMacro)==IDOK) {

                   pAct->SetOffset(pAe->FindParaStart(pAct->GetOffset()));

                   pAct->InsertText(szMacro);

                   pAct->InsertText("\r\n");

              }

              free(szMacro);

               return TRUE;

          case IDC_BTNCOPYRECENT:

              count=ListView_GetItemCount(hRecCom);

              for (i=0;i<count;i++) {

                   if (ListView_GetItemState(hRecCom,i,LVIS_SELECTED)==LVIS_SELECTED) {

                        pAct->SetOffset(pAe->FindParaStart(pAct->GetOffset()));

                        pAct->InsertText(pView->AeMc.arMc[i]);

                        pAct->InsertText("\r\n");

                   }

              }

              return TRUE;

          case IDC_BTNRUNMACRO:

              idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCURSEL,0,0);

              if (pAe->GetModified()) {

                   SendMessage(hDlg,WM_USER+2,idx,0);

              }

              count=GetDlgItemInt(hDlg,IDC_MACROCOUNT,NULL,FALSE);

              PostMessage(g_hFrameWnd,WM_USER+4,count,(LPARAM)DgMacro.arMacro[idx].Name);

              // no break.

          case IDCANCEL:

              idx=SendDlgItemMessage(hDlg,IDC_CBMACRO,CB_GETCURSEL,0,0);

              if (pAe->GetModified()) {

                   if (MessageBox(hDlg,"¼öÁ¤µÈ ¸ÅÅ©·Î¸¦ ÀúÀåÇϽðڽÀ´Ï±î?","Áú¹®",MB_YESNO) == IDYES) {

                        SendMessage(hDlg,WM_USER+2,idx,0);

                   }

              }

              DestroyWindow(pAe->hWnd);

              delete pAe;

              EndDialog(hDlg,IDCANCEL);

              oldidx=idx;

              return TRUE;

          }

          return FALSE;

     }

     return FALSE;

}

 

BOOL CALLBACK MacroEditDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     static TCHAR *pName;

     int i;

     TCHAR NewMacro[256];

 

     switch(iMessage) {

     case WM_INITDIALOG:

          MoveToParentCenter(hDlg);

          SendDlgItemMessage(hDlg,IDC_MACRONAME,EM_LIMITTEXT,64,0);

          pName=(TCHAR *)lParam;

          if (lstrlen(pName)==0) {

              SetWindowText(hDlg,"»õ ¸ÅÅ©·Î");

              for (i=1;;i++) {

                   wsprintf(NewMacro,"¸ÅÅ©·Î%d",i);

                   if (DgMacro.Find(NewMacro)==-1) {

                        break;

                   }

              }

              SetDlgItemText(hDlg,IDC_MACRONAME,NewMacro);

          } else {

              SetWindowText(hDlg,"¸ÅÅ©·Î À̸§ º¯°æ");

              SetDlgItemText(hDlg,IDC_MACRONAME,pName);

          }

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam)) {

          case IDOK:

              GetDlgItemText(hDlg,IDC_MACRONAME,pName,64);

              StringNormalize(pName,NULL);

              if (IsStrEmpty(pName)) {

                   MessageBox(hDlg,"¸ÅÅ©·Î À̸§À» ÁöÁ¤ÇØ ÁֽʽÿÀ","¾Ë¸²",MB_OK);

                   return TRUE;

              }

              if (strchr(pName,'\"') || strchr(pName,'\\')) {

                   MessageBox(hDlg,"¸ÅÅ©·Î À̸§¿¡ \"¿Í \\´Â ¾µ ¼ö ¾ø½À´Ï´Ù.","¾Ë¸²",MB_OK);

                   return TRUE;

              }

 

              EndDialog(hDlg,IDOK);

              return TRUE;

          case IDCANCEL:

              EndDialog(hDlg,IDCANCEL);

              return TRUE;

          }

          return FALSE;

     }

     return FALSE;

}

 

´ëÈ­»óÀÚ ÃʱâÈ­ Äڵ尡 ´Ù¼Ò ±æ´Ù. ÃÖ±Ù ¸í·É ¸ñ·ÏÀ» Ç¥½ÃÇϱâ À§ÇØ ¸®½ºÆ® ºä ÄÁÆ®·ÑÀ» ÃʱâÈ­ÇÏ°í ¸ÅÅ©·Î º»¹®À» Ç¥½ÃÇϱâ À§ÇØ ApiEdit °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¸ÅÅ©·Î°¡ ÅؽºÆ® Æ÷¸ËÀ¸·Î ÀúÀåµÇ¹Ç·Î ÅؽºÆ®¸¦ Ãâ·ÂÇÒ ¼ö ÀÖ´Â ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ¾ß Çϴµ¥ ¿¡µðÆ®°°Àº Ç¥ÁØ ÄÁÆ®·ÑÀ» »ç¿ëÇÏÁö ¾Ê°í ApiEdit °´Ã¼¸¦ »ç¿ëÇß´Ù. ¸¶Áø¿¡ ÁÙ ¹øÈ£µµ Ç¥½ÃµÇ°í â ºÐÇÒ±îÁö °¡´ÉÇÏ´Ù. ÀÌ¿ÕÀÌ¸é ¸ÅÅ©·Î ±¸¹®À» ´Ù¸¥ »ö»óÀ¸·Î º¸¿©ÁÖ´Â ºÐ¼®±â±îÁö ¸¸µé¾îÁ® ÀÖ´Ù¸é ´õ ÁÁÀ» °Í °°´Ù. ´ëÈ­»óÀÚ ³»¿¡¼­ »ç¿ëµÇ¹Ç·Î TabÅ°´Â ó¸®ÇÏÁö ¾Ê´Â´Ù. º°´Ù¸¥ Á¶Ä¡¾øÀÌ ´ëÈ­»óÀÚ¿¡¼­ ApiEdit  ÄÁÆ®·ÑÀ» »ç¿ëÇÒ ¼ö Àִµ¥ ÀÌ°ÍÀÌ ÄÁÆ®·ÑÈ­ÀÇ ÀåÁ¡ÀÌ´Ù

¸®½ºÆ® ºä¿¡´Â È°¼ºÃ¢ÀÇ ÃÖ±Ù ÆíÁý ¸í·ÉÀ» Àоî Ç¥½ÃÇϴµ¥ AeMc °´Ã¼¿¡ ÆíÁý ±â·ÏÀÌ Àß ÀúÀåµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ °´Ã¼ÀÇ ³»¿ëÀ» ¸®½ºÆ® ºä·Î Ãâ·ÂÇÏ¸é µÈ´Ù. ¸¸¾à È°¼ºÃ¢ÀÌ ¾ø´Ù¸é ÃÖ±Ù ¸í·ÉÀÌ ¾øÀ¸¹Ç·Î À̶§´Â ¸®½ºÆ® ºä¿¡ ¾Æ¹« °Íµµ ä¿ï °ÍÀÌ ¾ø´Ù. È°¼ºÃ¢ÀÌ ¾øÀ¸¸é ¸ÅÅ©·Î¸¦ ½ÇÇàÇÒ ¼ö´Â ¾øÁö¸¸ ¸ÅÅ©·Î¸¦ ÆíÁýÇÏ´Â °ÍÀº ¿©ÀüÈ÷ °¡´ÉÇÏ´Ù.

Àü¿ª DgMacro °´Ã¼¿¡¼­ ÀÛ¼ºµÇ¾î ÀÖ´Â ¸ÅÅ©·Î ¸ñ·ÏÀ» Àоî¿Í ÄÞº¸ ¹Ú½º¿¡ ä¿î´Ù. ÄÞº¸ ¹Ú½º¿¡¼­ ÆíÁý ´ë»ó ¸ÅÅ©·Î¸¦ ¼±ÅÃÇÏ¸é ¼±ÅÃµÈ ¸ÅÅ©·ÎÀÇ ³»¿ëÀÌ ApiEdit¿¡ ÀÐÇôÁø´Ù.  WM_USER+1, WM_USER+2 »ç¿ëÀÚ Á¤ÀÇ ¸Þ½ÃÁö´Â ´ëÈ­»óÀÚ³»¿¡¼­ ¼­ºê·çƾó·³ »ç¿ëµÇ´Âµ¥ ÄÁÆ®·ÑÀÇ »ç¿ë °¡´É¼º ¿©ºÎ¿Í ¸ÅÅ©·Î ÀúÀå½Ã È£ÃâµÈ´Ù.

»õ ¸ÅÅ©·Î Ãß°¡ ´ëÈ­»óÀÚ´Â ¸ÅÅ©·Î À̸§¿¡ ÀÏ·Ã ¹øÈ£¸¦ ºÙ¿© µðÆúÆ® À̸§À» ¸¸µéµÇ À̸§Àº ¹Ýµå½Ã Á¤±ÔÈ­ÇØ¾ß ÇÑ´Ù. À̸§¾Õ¿¡ °ø¹éÀ» ³Ö¾î " Name"À̶ó°í ÇØ ³õ°í call "Name"À̶ó°í ºÎ¸£¸é ÀÌ ¸ÅÅ©·Î¸¦ Á¦´ë·Î ãÁö ¸øÇÒ °ÍÀÌ´Ù. °¢ ¸ÅÅ©·Î¿¡ ´ÜÃàÅ°¸¦ ÇÒ´çÇÒ ¼ö Àִµ¥ ÀÌ ±â´ÉÀº ´ÙÀ½ Àå¿¡¼­ ÀÛ¼ºÇÒ °ÍÀÌ´Ù.

³ª.¸í·É Ãß°¡ ´ëÈ­»óÀÚ

»ç¿ëÀÚµéÀº ÃÖ±Ù ÆíÁý µ¿ÀÛ¿¡¼­ ¸ÅÅ©·Î¿¡ Æ÷ÇÔÇÒ ¸í·ÉÀ» ¼±ÅÃÇϰųª ¾Æ´Ï¸é Á÷Á¢ ÀÔ·ÂÇØ ³ÖÀ» ¼ö ÀÖ´Ù. ¸í·ÉÀ» ÀÔ·ÂÇÏ·Á¸é ¸ÅÅ©·Î ¹®¹ýÀ» ¾Ë¾Æ¾ß Çϴµ¥ »ç¿ëÀÚµéÀÌ ¸í·ÉÀ» ¿Ü¿ï ¼ö´Â ¾øÀ¸¹Ç·Î ¸ñ·ÏÀ» º¸¿©ÁÖ°í ¼±ÅÃÇÏ°Ô ÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù. ¸í·É Ãß°¡ ´ëÈ­»óÀÚ´Â arComVerb¿Í arHostVerb ¸ñ·Ï°ú ¸ñÀû¾î¸¦ ¸®½ºÆ® ¹Ú½º¿¡ Ç¥½ÃÇÏ°í ¼±ÅÃµÈ ¸í·ÉÀ» ÀÛ¼ºÇÑ´Ù.

 

// ÀÛ¼ºÁßÀÎ ¸í·ÉÀ» ¸í·É ¿¡µðÆ® ¹Ú½º¿¡ º¸¿©ÁØ´Ù.

void DisplayMakingCommand(HWND hDlg)

{

     int Verb, Object=0;

     TCHAR szCommand[256];

     TCHAR szTemp[256];

     int Count;

     SMacVerb *arVerb;

     SMacObject *arObject;

     int *arObj;

 

     // ÀÏ´Ü µ¿»çºÎÅÍ

     Verb=SendDlgItemMessage(hDlg,IDC_LISTVERB,LB_GETCURSEL,0,0);

     if (Verb==-1) {

          return;

     }

     // ÄÁÆ®·ÑÀÇ ¸í·ÉÀÎÁö, È£½ºÆ®ÀÇ ¸í·ÉÀÎÁö ±¸ºÐÇÑ´Ù.

     if (Verb >= AEVERBNUM) {

          arVerb=arHostVerb;

          arObject=arHostObject;

          arObj=arObjOfVerbHost;

          Verb-=AEVERBNUM;

     } else {

          arVerb=arComVerb;

          arObject=arComObject;

          arObj=arObjOfVerb;

     }

     lstrcpy(szCommand,arVerb[Verb].Name);

 

     // ¸ñÀû¾î°¡ ÀÖÀ¸¸é ¸ñÀû¾î¸¦ ±â·ÏÇÑ´Ù.

     if (arObj[Verb]!=-1) {

          Object=SendDlgItemMessage(hDlg,IDC_LISTOBJECT,LB_GETCURSEL,0,0);

          if (Object!=-1) {

              wsprintf(szTemp," %s",arObject[arObj[Verb]+Object].Name);

              lstrcat(szCommand,szTemp);

          }

     }

 

     // ¹®ÀÚ¿­ Àμö ó¸®

     if (arVerb==arComVerb) {

          if (Verb==AEC_INSERT || Verb==AEC_FIND || Verb==AEC_REPLACE) {

              GetDlgItemText(hDlg,IDC_EDSTRING1,szTemp,256);

              lstrcat(szCommand," \"");

              lstrcat(szCommand,szTemp);

              lstrcat(szCommand,"\"");

              if (Verb==AEC_REPLACE) {

                   GetDlgItemText(hDlg,IDC_EDSTRING2,szTemp,256);

                   lstrcat(szCommand," \"");

                   lstrcat(szCommand,szTemp);

                   lstrcat(szCommand,"\"");

              }

          }

     } else {

          if (Verb==DGC_CALL || Verb==DGC_CLIP) {

              GetDlgItemText(hDlg,IDC_EDSTRING1,szTemp,256);

              lstrcat(szCommand," \"");

              lstrcat(szCommand,szTemp);

              lstrcat(szCommand,"\"");

          }

     }

 

     if (arVerb==arComVerb) {

          if (Verb==AEC_FIND || Verb==AEC_REPLACE) {

              if (IsDlgButtonChecked(hDlg,IDC_FIND_UP)) lstrcat(szCommand," up");

              if (IsDlgButtonChecked(hDlg,IDC_FIND_WHOLEWORD)) lstrcat(szCommand," word");

              if (IsDlgButtonChecked(hDlg,IDC_FIND_MATCHCASE)) lstrcat(szCommand," case");

              if (IsDlgButtonChecked(hDlg,IDC_FIND_WRAP)) lstrcat(szCommand," wrap");

          }

     }

 

     // ¹Ýº¹ °¡´ÉÇÑ ¸í·ÉÀÌ¸é ¹Ýº¹ ȸ¼ö ±â·Ï. 1ÀÌ»óÀÌ°í ¸ñÀû¾î°¡ ¼±ÅõǾî ÀÖÀ» ¶§¸¸. move 5 µûÀ§ÀÇ ¹®ÀÚ¿­À» ¸¸µéÁö ¾ÊÀ½

     if (arVerb[Verb].Flag & 0x1) {

          Count=GetDlgItemInt(hDlg,IDC_EDCOUNT,NULL,FALSE);

          if (Count != 1 && Object!=-1) {

              wsprintf(szTemp, " %d",Count);

              lstrcat(szCommand,szTemp);

          }

     }

 

     SetDlgItemText(hDlg,IDC_EDCOMMAND,szCommand);

}

 

BOOL CALLBACK AddCommandDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     static TCHAR *szCommand;

     TCHAR szTemp[256];

     int i,idx;

     SMacVerb *arVerb;

     SMacObject *arObject;

     int *arObj;

 

     switch(iMessage) {

     case WM_INITDIALOG:

          MoveToParentCenter(hDlg);

          szCommand=(TCHAR *)lParam;

          for (i=0;i<AEVERBNUM;i++) {

              wsprintf(szTemp,"%s(%s)",arComVerb[i].Desc,arComVerb[i].Name);

              SendDlgItemMessage(hDlg,IDC_LISTVERB,LB_ADDSTRING,0,(LPARAM)szTemp);

          }

          // È£½ºÆ® ¼öÁØÀÇ ¸í·Éµµ Æ÷ÇÔ½ÃŲ´Ù.

          for (i=0;i<DGVERBNUM;i++) {

              wsprintf(szTemp,"%s(%s)",arHostVerb[i].Desc,arHostVerb[i].Name);

              SendDlgItemMessage(hDlg,IDC_LISTVERB,LB_ADDSTRING,0,(LPARAM)szTemp);

          }

          SetDlgItemInt(hDlg,IDC_EDCOUNT,1,FALSE);

          SendDlgItemMessage(hDlg,IDC_SPINCOUNT,UDM_SETRANGE,0,MAKELPARAM(1000000,1));

          SendDlgItemMessage(hDlg,IDC_EDCOMMAND,EM_LIMITTEXT,256,0);

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam)) {

          case IDOK:

              GetDlgItemText(hDlg,IDC_EDCOMMAND,szCommand,256);

              EndDialog(hDlg,IDOK);

              return TRUE;

          case IDCANCEL:

              EndDialog(hDlg,IDCANCEL);

              return TRUE;

          case IDC_LISTVERB:

              switch (HIWORD(wParam)) {

              case LBN_SELCHANGE:

                   SendDlgItemMessage(hDlg,IDC_LISTOBJECT,LB_RESETCONTENT,0,0);

                   DisplayMakingCommand(hDlg);;

                   // ÀÏ´Ü ¸ðµÎ ¼û±ä´Ù.

                   ShowWindow(GetDlgItem(hDlg,IDC_LISTOBJECT),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_STOBJECT),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING1),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING2),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_STSTRING1),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_STSTRING2),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_EDCOUNT),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_STCOUNT),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_SPINCOUNT),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_FIND_UP),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_FIND_WHOLEWORD),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_FIND_MATCHCASE),SW_HIDE);

                   ShowWindow(GetDlgItem(hDlg,IDC_FIND_WRAP),SW_HIDE);

 

                   idx=SendDlgItemMessage(hDlg,IDC_LISTVERB,LB_GETCURSEL,0,0);

                   // ÄÁÆ®·ÑÀÇ ¸í·ÉÀÎÁö, È£½ºÆ®ÀÇ ¸í·ÉÀÎÁö ±¸ºÐÇÑ´Ù.

                   if (idx >= AEVERBNUM) {

                        arVerb=arHostVerb;

                        arObject=arHostObject;

                        arObj=arObjOfVerbHost;

                        idx-=AEVERBNUM;

                   } else {

                        arVerb=arComVerb;

                        arObject=arComObject;

                        arObj=arObjOfVerb;

                   }

 

                   // ¹Ýº¹ÀÌ °¡´ÉÇÑ ¸í·Éµé

                   if (arVerb[idx].Flag & 0x1) {

                        ShowWindow(GetDlgItem(hDlg,IDC_EDCOUNT),SW_SHOW);

                        ShowWindow(GetDlgItem(hDlg,IDC_STCOUNT),SW_SHOW);

                        ShowWindow(GetDlgItem(hDlg,IDC_SPINCOUNT),SW_SHOW);

                   }

 

                   // ¹®ÀÚ¿­ ÀÔ·ÂÇüÀº Ưº°ÇÏ°Ô ´Ù·é´Ù

                   if (arVerb==arComVerb) {

                        if (idx==AEC_INSERT) {

                            ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING1),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_STSTRING1),SW_SHOW);

                            SetWindowText(GetDlgItem(hDlg,IDC_STSTRING1),"ÀÔ·Â ³»¿ë(&I)");

                            return TRUE;

                        }

                        if (idx==AEC_FIND || idx==AEC_REPLACE) {

                            ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING1),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_STSTRING1),SW_SHOW);

                            SetWindowText(GetDlgItem(hDlg,IDC_STSTRING1),"ãÀ» ³»¿ë(&F)");

                            ShowWindow(GetDlgItem(hDlg,IDC_FIND_UP),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_FIND_WHOLEWORD),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_FIND_MATCHCASE),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_FIND_WRAP),SW_SHOW);

                            if (idx==AEC_REPLACE) {

                                 ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING2),SW_SHOW);

                                 ShowWindow(GetDlgItem(hDlg,IDC_STSTRING2),SW_SHOW);

                                 SetWindowText(GetDlgItem(hDlg,IDC_STSTRING2),"¹Ù²Ü ³»¿ë(&T)");

                            }

                            return TRUE;

                        }

                   } else {

                        if (idx==DGC_CALL || idx==DGC_CLIP) {

                            ShowWindow(GetDlgItem(hDlg,IDC_EDSTRING1),SW_SHOW);

                            ShowWindow(GetDlgItem(hDlg,IDC_STSTRING1),SW_SHOW);

                            if (idx==DGC_CALL) {

                                 SetWindowText(GetDlgItem(hDlg,IDC_STSTRING1),"¸ÅÅ©·Î À̸§(&I)");

                            } else {

                                 SetWindowText(GetDlgItem(hDlg,IDC_STSTRING1),"»ó¿ë±¸ À̸§(&I)");

                            }

                            return TRUE;

                        }

                   }

 

                   // ¸ñÀû¾î°¡ ¾ø´Â °Íµé(insert,find, replace´Â Á¦¿Ü)

                   if ((arVerb[idx].Flag & 0x2)==0) {

                        return TRUE;

                   } else {

                        ShowWindow(GetDlgItem(hDlg,IDC_LISTOBJECT),SW_SHOW);

                        ShowWindow(GetDlgItem(hDlg,IDC_STOBJECT),SW_SHOW);

                        for (i=arObj[idx];arObject[i].Name!=NULL;i++) {

                            wsprintf(szTemp,"%s(%s)",arObject[i].Desc,arObject[i].Name);

                                 SendDlgItemMessage(hDlg,IDC_LISTOBJECT,LB_ADDSTRING,0,(LPARAM)szTemp);

                        }

                        return TRUE;

                   }

                   break;

              }

              break;

          case IDC_LISTOBJECT:

              switch (HIWORD(wParam)) {

              case LBN_SELCHANGE:

                   DisplayMakingCommand(hDlg);

                   break;

              }

              break;

          case IDC_FIND_UP:

          case IDC_FIND_WHOLEWORD:

          case IDC_FIND_MATCHCASE:

          case IDC_FIND_WRAP:

              DisplayMakingCommand(hDlg);

              break;

          case IDC_EDSTRING1:

          case IDC_EDSTRING2:

          case IDC_EDCOUNT:

              switch (HIWORD(wParam)) {

              case EN_CHANGE:

                   DisplayMakingCommand(hDlg);

                   break;

              }

              break;

          }

          return FALSE;

     }

     return FALSE;

}

 

DisplayMakingCommand ÇÔ¼ö´Â ´ëÈ­»óÀÚ¿¡ ¼±ÅÃµÈ ¿É¼ÇÀ» ÀÐ¾î ¸í·É ¹®ÀÚ¿­À» Á¶¸³ÇÑ´Ù. È®Àå¿­ 󸮴 ÇÏÁö ¾ÊÀ¸¹Ç·Î »ç¿ëÀÚ°¡ Á÷Á¢ ÇØ¾ß ÇÑ´Ù. insert ¸í·ÉÀ» ¼±ÅÃÇØ ³õ°í »ðÀÔÇÒ ¹®ÀÚ¿­ ÀÚ¸®¿¡ c:\temp ¶ó°í ÀÔ·ÂÇßÀ» °æ¿ì c:\\temp·Î È®ÀåÇØ ÁÖÁö ¾Ê´Â´Ù´Â ¶æÀÌ´Ù. ÀÌ·¸°Ô ÀÔ·ÂÇÑ ±×´ë·Î È®Àå¿­À» Àû¿ëÇØ ÁÙ ¼öµµ ÀÖÀ¸³ª ±×·¸°Ô ÇÏ¸é °³Çà ÄÚµå¿Í ÅÇ Äڵ带 Ç¥ÇöÇÒ ¹æ¹ýÀÌ ¾ø¾îÁ® ¹ö¸°´Ù. ÇÑÁÙÂ¥¸® ¿¡µðÆ® ÄÁÆ®·Ñ¿¡ °³Çà Äڵ带 Ä¥ ¼ö ¾øÀ¸¹Ç·Î °³Çà ÄÚµå´Â \r\nÀ¸·Î Ç¥ÇöÇÏ´Â ¼ö¹Û¿¡ ¾ø´Âµ¥ È®Àå¿­À» Á÷Á¢ ó¸®ÇØ ¹ö¸®¸é \r\nÀ» \\r\\nÀ¸·Î È®ÀåÇØ ¹ö¸®¹Ç·Î È®Àå¿­ ÀÔ·ÂÀº »ç¿ëÀÚÀÇ Ã¥ÀÓÀ¸·Î ³²°ÜÁú ¼ö¹Û¿¡ ¾ø´Ù.

¶ÇÇÑ ¸ÅÅ©·Î ³»¿ëÀ» Á÷Á¢ ÆíÁýÇÒ ¶§µµ È®Àå¿­À» Á÷Á¢ ½á¾ß Çϱ⠶§¹®¿¡ ¿ÀÈ÷·Á »ç¿ëÀÚ°¡ ¾Ë¾Æ¼­ È®Àå¿­À» ÀÔ·ÂÇÏ´Â °ÍÀÌ ³í¸®ÀûÀ¸·Î ´õ ¸íÈ®ÇÑ °Í °°´Ù. ¸¸¾à Ʋ¸° ¸í·ÉÀ» ÀÔ·ÂÇÒ °æ¿ì ¿¹¸¦ µé¾î insert "12\" ÀÌ·¸°Ô µÇ¸é ´Ý´Â µû¿ÈÇ¥°¡ ¾ø´Â ¿¡·¯·Î 󸮵ȴÙ. insert "12\34" ÀÌ·¸°Ô µÇ¸é \3ÀÌ ¹«È¿ÇÑ È®Àå¿­·Î Çؼ®µÇ¾î ¹«½ÃµÈ´Ù.

IDC_LISTVERB ¸®½ºÆ® ¹Ú½º¿¡¼­ µ¿»ç¸¦ ¼±ÅÃÇÏ¸é µ¿»çÀÇ ¿É¼ÇÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ´Â ÀûÀýÇÑ ÄÁÆ®·ÑÀ» È°¼ºÈ­ÇÑ´Ù. ¿¹¸¦ µé¾î ¹Ýº¹ÀÌ °¡´ÉÇÑ ¸í·ÉµéÀº ȸ¼ö¸¦ ÀԷ¹޴ ¿¡µðÆ® ÄÁÆ®·ÑÀ» Ç¥½ÃÇÏ°í ¹®ÀÚ¿­ ÀÔ·Â ¸í·ÉÀº ´ë»ó ¹®ÀÚ¿­À» Á÷Á¢ ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸ñÀû¾î°¡ ÀÖ´Â ¸í·ÉÀº ¼±Åà °¡´ÉÇÑ ¸ñÀû¾î¸¦ º°µµÀÇ ¸®½ºÆ® ¹Ú½º¿¡ Ãâ·ÂÇϸç ã±â, ¹Ù²Ù±â´Â °Ë»ö ¿É¼Ç üũ ¹Ú½º¸¦ Ç¥½ÃÇÑ´Ù. »ç¿ëÀÚ´Â µ¿»ç¸¦ ¸ÕÀú °í¸£°í ¸ñÀû¾î³ª ÀÔ·Â ³»¿ë, ±âŸ ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é µÈ´Ù.

Å°¿öµå¸¦ ¿Ü¿ìÁö ¾Ê¾Æµµ µ¿»ç¿Í ¸ñÀû¾î ¼±Åà °¡´ÉÇÑ ¿É¼ÇÀ» °í¸¦ ¼ö ÀÖÀ¸¹Ç·Î ¸ÅÅ©·Î ±¸¹®À» ¸ô¶óµµ ÀÌ ´ëÈ­»óÀÚ¸¦ »ç¿ëÇÏ¸é ¿øÇÏ´Â ¸í·ÉÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. °Ô´Ù°¡ Çѱ۷ΠµÈ ¼³¸í°ú ¸í·É Å°¿öµå°¡ °°ÀÌ Ç¥½ÃµÇ¹Ç·Î ÀÚÁÖ »ç¿ëÇÏ´Â »ç¶÷Àº Å°¿öµå¸¦ ¿Ü¿ö¼­ °ð¹Ù·Î ÀÔ·ÂÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

´Ù.¸ÅÅ©·Î ½ÇÇà

¸ÅÅ©·Î ´ëÈ­»óÀÚ¿¡¼­ ¸ÅÅ©·Î¸¦ Á÷Á¢ ½ÇÇàÇÒ ¼öµµ ÀÖ´Ù. À̶§ ¸ÅÅ©·ÎÀÇ ³»¿ëÀÌ ¾Æ´Ñ À̸§¸¸ Àü´ÞÇϹǷΠÆíÁýÁßÀÎ ¸ÅÅ©·Î´Â ÀÏ´Ü ÀúÀåµÇ¾î¾ß ÇÑ´Ù. ¸ÅÅ©·Î¸¦ ½ÇÇàÇÒ ¶§´Â PostMessage ÇÔ¼ö·Î ¸ÞÀÎ À©µµ¿ì¿¡ WM_USER+4 ¸Þ½ÃÁö¸¦ ºÙÀδÙ. SendMessage¸¦ »ç¿ëÇÒ ¼ö ¾ø´Â ÀÌÀ¯´Â ÀÏ´Ü ´ëÈ­»óÀÚ¸¦ ´ÝÀº ÈÄ¿¡ ¸ÅÅ©·Î¸¦ ½ÇÇàÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. wParamÀ¸·Î´Â ¹Ýº¹ ȸ¼ö°¡ Àü´ÞµÇ¸ç lParamÀ¸·Î´Â ¸ÅÅ©·Î À̸§ÀÌ Àü´ÞµÈ´Ù. ¸ÞÀÎ À©µµ¿ì´Â ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ lParam ¸ÅÅ©·Î¸¦ wParamȸ¸¸Å­ ¹Ýº¹ ½ÇÇàÇÑ´Ù.

 

LRESULT CALLBACK DGWndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     switch(iMessage) {

          ....

          case WM_USER+4:OnUser4(hWnd,wParam,lParam);return 0;

 

// ¸ÅÅ©·Î ½ÇÇà. wParam¿¡ ȸ¼ö, lParam¿¡ ¸ÅÅ©·Î À̸§

void OnUser4(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     int i,count;

     HWND hDlg;

     MSG msg;

 

     count=(int)wParam;

 

     if (count > 1) {

          hDlg=CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_RUNMACRO),

              hWnd, (DLGPROC)RunMacroDlgProc,lParam);

          ShowWindow(hDlg,SW_SHOW);

          EnableWindow(g_hFrameWnd,FALSE);

     }

 

     for (i=0;i<count;i++) {

          ExecMacro((const TCHAR *)lParam);

          if (count > 1) {

              SendMessage(hDlg,WM_USER+1,count,i);

              while (PeekMessage(&msg, NULL,0,0,PM_REMOVE)) {

                   TranslateMessage(&msg);

                   DispatchMessage(&msg);

              }

              if (!IsWindow(hDlg)) {

                   break;

              }

          }

     }

 

     if (count > 1) {

          EnableWindow(g_hFrameWnd,TRUE);

          if (IsWindow(hDlg)) {

              DestroyWindow(hDlg);

          }

     }

}

 

Çѹø¸¸ ½ÇÇàÇÒ ¶§´Â ExecMacro ÇÔ¼ö·Î lParam¸¸ Àü´ÞÇÏ¸é µÈ´Ù. ¿©·¯¹ø ½ÇÇàÇÒ ¶§´Â ¸ÅÅ©·Î ½ÇÇà ½Ã°£ÀÌ ±²ÀåÈ÷ ±æ ¼öµµ ÀÖÀ¸¹Ç·Î Ãë¼Ò ´ëÈ­»óÀÚ¸¦ Ç¥½ÃÇÏ°í ¸Þ½ÃÁö ÆßÇÎÀ» Çϸ鼭 ´ëÈ­»óÀÚ°¡ À¯È¿ÇÑÁö °è¼Ó Á¡°ËÇØ ºÁ¾ß ÇÑ´Ù. ¸¸¾à Ãë¼Ò ´ëÈ­»óÀÚ°¡ ´ÝÇû´Ù¸é ¸ÅÅ©·Î ½ÇÇàÀ» ÁßÁöÇ϶ó´Â ¶æÀ̹ǷΠÁï½Ã ¸®ÅÏÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö¸¦ Macro.cpp¿¡ ÀÛ¼ºÇÑ´Ù.

 

BOOL CALLBACK RunMacroDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     TCHAR str[256];

 

     switch(iMessage) {

     case WM_INITDIALOG:

          MoveToParentCenter(hDlg);

          wsprintf(str,"¸ÅÅ©·Î À̸§ : %s", (TCHAR *)lParam);

          SetDlgItemText(hDlg,IDC_MACRONAME,str);

          return TRUE;

     case WM_USER+1:

          wsprintf(str,"ÃÑ %d ȸ Áß %d ¹ø° ½ÇÇà",wParam,lParam);

          SetDlgItemText(hDlg,IDC_MACRONUM,str);

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam)) {

          case IDCANCEL:

              DestroyWindow(hDlg);

              return TRUE;

          }

          return FALSE;

     }

     return FALSE;

}

 

ÀÌ ´ëÈ­»óÀÚ´Â ¸ÅÅ©·Î¸¦ ¸î ȸ° ½ÇÇàÇÏ°í ÀÖ´ÂÁö¸¦ Ãâ·ÂÇÏ´Â ´Ü¼øÇÑ ÀÛ¾÷¸¸ ÇÑ´Ù. »ç¿ëÀÚ°¡ ÀÌ ´ëÈ­»óÀÚ¸¦ ´Ý±â¸¸ ÇÏ¸é ¸ÅÅ©·Î ½ÇÇàÀº Áï½Ã ÁߴܵȴÙ. ¸ÅÅ©·Î¸¦ ´ëÈ­»óÀÚ¿¡¼­ ½ÇÇàÇÏ´Â ¹æ½ÄÀ̶ó ´Ù¼Ò ºÒÆíÇѵ¥ Á» ´õ Á¦´ë·Î ¸¸µç´Ù¸é ¸ðµ¨¸®½º ´ëÈ­»óÀÚ¸¦ Çϳª ¸¸µé¸é ÁÁÀ» °Í °°´Ù. ±×·¯³ª ´ÙÀ½ Àå¿¡¼­ ¸ÅÅ©·Î¿¡ ´ÜÃàÅ°¸¦ ÁöÁ¤ÇÏ´Â ±â´ÉÀ» ÀÛ¼ºÇÒ °ÍÀ̹ǷΠū ºÒÆíÀº ¾øÀ» °ÍÀÌ´Ù.