Ignore:
Timestamp:
May 27, 2008, 9:17:34 PM (16 years ago)
Author:
dai_9181
Message:

・WindowInfoクラスをリファクタリング
・MdiInfoを単純配列からvectorに変更した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/abdev/MenuProc.cpp

    r624 r625  
    1111#endif
    1212
    13 int GetMenuInfoNum(const char *name){
     13int GetMenuInfoNum(const std::string &name){
    1414    int i;
    1515    for(i=0;i<projectInfo.NumberOfMenu;i++){
    16         if(lstrcmpi(name,projectInfo.pMenuInfo[i].IdName)==0) return i;
     16        if(lstrcmpi(name.c_str(),projectInfo.pMenuInfo[i].IdName)==0) return i;
    1717    }
    1818    return -1;
     
    6868void Project_Menu_Insert(void){
    6969    extern HANDLE hHeap;
    70     extern MDIINFO MdiInfo[MAX_WNDNUM];
    7170    extern char NewIdName[MAX_PATH];
    7271    int i;
     
    121120    ////////////////////////////////
    122121    // ウィンドウ プロパティを更新
    123     for(i=0;i<MAX_WNDNUM;i++){
     122    for(i=0;i<MdiInfo.size();i++){
    124123        if(MdiInfo[i].hwnd&&MdiInfo[i].DocType==WNDTYPE_RAD){
    125124            if(MdiInfo[i].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
     
    132131void Project_Menu_Delete(int MenuInfoNum){
    133132    extern HANDLE hHeap;
    134     extern MDIINFO MdiInfo[MAX_WNDNUM];
    135133    int i;
    136134
    137135    //ウィンドウが開かれている場合は閉じる
    138     for(i=0;i<MAX_WNDNUM;i++){
    139         if(MdiInfo[i].hwnd&&lstrcmpi(projectInfo.pMenuInfo[MenuInfoNum].IdName,MdiInfo[i].path)==0){
     136    for(i=0;i<MdiInfo.size();i++){
     137        if(MdiInfo[i].hwnd&&lstrcmpi(projectInfo.pMenuInfo[MenuInfoNum].IdName,MdiInfo[i].path.c_str())==0){
    140138            SendMessage(MdiInfo[i].hwnd,WM_CLOSE,0,0);
    141139            break;
     
    166164    ////////////////////////////////
    167165    // ウィンドウ プロパティを更新
    168     for(i=0;i<MAX_WNDNUM;i++){
     166    for(i=0;i<MdiInfo.size();i++){
    169167        if(MdiInfo[i].hwnd&&MdiInfo[i].DocType==WNDTYPE_RAD){
    170168            if(MdiInfo[i].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
    171                 ChangePropertyWindow(i,GetWndInfoNum(MdiInfo[i].path));
     169                ChangePropertyWindow(i,GetWndInfoNum(MdiInfo[i].path.c_str()));
    172170        }
    173171    }
     
    192190    extern HINSTANCE hInst;
    193191    extern HWND hDocCombo;
    194     extern MDIINFO MdiInfo[MAX_WNDNUM];
    195192    int i;
    196193    HWND hChild,hListWnd,hMenuEdit;
     
    203200        i=GetWndNum(hChild);
    204201        if(MdiInfo[i].DocType==WNDTYPE_MENU){
    205             if(lstrcmpi(MdiInfo[i].path,pMenuInfo->IdName)==0) break;
     202            if(lstrcmpi(MdiInfo[i].path.c_str(),pMenuInfo->IdName)==0) break;
    206203        }
    207204        hChild=GetNextWindow(hChild,GW_HWNDNEXT);
     
    249246        hChild,NULL,hInst,NULL);
    250247
     248
    251249    //ウィンドウのID登録
    252     for(i=0;i<MAX_WNDNUM;i++){
    253         if(MdiInfo[i].hwnd==0){
    254             MdiInfo[i].hwnd=hChild;
    255             MdiInfo[i].DocType=WNDTYPE_MENU;
    256             MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(pMenuInfo->IdName)+1);
    257             lstrcpy(MdiInfo[i].title,pMenuInfo->IdName);
    258             MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(pMenuInfo->IdName)+1);
    259             lstrcpy(MdiInfo[i].path,pMenuInfo->IdName);
    260 
    261 
    262             /////////////////////
    263             //MENU ウィンドウ情報
    264 
    265             MdiInfo[i].MdiMenuInfo=(MDIMENUINFO *)GlobalAlloc(GPTR,sizeof(MDIMENUINFO));
    266 
    267             MdiInfo[i].MdiMenuInfo->hList=hListWnd;
    268 
    269             MdiInfo[i].MdiMenuInfo->hMenuEdit=hMenuEdit;
    270             MdiInfo[i].MdiMenuInfo->hEdit_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_PROJECT_MENUEDIT),hMenuEdit,(DLGPROC)MenuEditDlg);
    271 
    272             SCROLLINFO ScrollInfo;
    273             ScrollInfo.cbSize=sizeof(SCROLLINFO);
    274             ScrollInfo.fMask=SIF_POS;
    275             ScrollInfo.nPos=0;
    276             SetScrollInfo(MdiInfo[i].MdiMenuInfo->hMenuEdit,SB_VERT,&ScrollInfo,1);
    277 
    278             SendMessage(hListWnd,LB_RESETCONTENT,0,0);
    279             SetMenuDataList(hListWnd,pMenuInfo,0);
    280             if(pMenuInfo->NumberOfMenu){
    281                 SendMessage(hListWnd,LB_SETCURSEL,0,0);
    282                 SendMessage(hChild,WM_COMMAND,MAKELONG(0,LBN_SELCHANGE),(long)hListWnd);
    283             }
    284             break;
    285         }
    286     }
     250    MdiInfo.push_back( MDIINFO() );
     251    i = MdiInfo.size()-1;
     252    MdiInfo[i].hwnd=hChild;
     253    MdiInfo[i].DocType=WNDTYPE_MENU;
     254    MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(pMenuInfo->IdName)+1);
     255    lstrcpy(MdiInfo[i].title,pMenuInfo->IdName);
     256    MdiInfo[i].path = pMenuInfo->IdName;
     257
     258
     259    /////////////////////
     260    //MENU ウィンドウ情報
     261
     262    MdiInfo[i].MdiMenuInfo=(MDIMENUINFO *)GlobalAlloc(GPTR,sizeof(MDIMENUINFO));
     263
     264    MdiInfo[i].MdiMenuInfo->hList=hListWnd;
     265
     266    MdiInfo[i].MdiMenuInfo->hMenuEdit=hMenuEdit;
     267    MdiInfo[i].MdiMenuInfo->hEdit_Dlg=CreateDialog(hResInst,MAKEINTRESOURCE(IDD_PROJECT_MENUEDIT),hMenuEdit,(DLGPROC)MenuEditDlg);
     268
     269    SCROLLINFO ScrollInfo;
     270    ScrollInfo.cbSize=sizeof(SCROLLINFO);
     271    ScrollInfo.fMask=SIF_POS;
     272    ScrollInfo.nPos=0;
     273    SetScrollInfo(MdiInfo[i].MdiMenuInfo->hMenuEdit,SB_VERT,&ScrollInfo,1);
     274
     275    SendMessage(hListWnd,LB_RESETCONTENT,0,0);
     276    SetMenuDataList(hListWnd,pMenuInfo,0);
     277    if(pMenuInfo->NumberOfMenu){
     278        SendMessage(hListWnd,LB_SETCURSEL,0,0);
     279        SendMessage(hChild,WM_COMMAND,MAKELONG(0,LBN_SELCHANGE),(long)hListWnd);
     280    }
     281
    287282
    288283    //ウィンドウ位置を初期化
     
    332327    extern HANDLE hHeap;
    333328    extern HWND hClient,hOwner;
    334     extern MDIINFO MdiInfo[MAX_WNDNUM];
    335329    int i;
    336330    char temporary[MAX_PATH];
     
    744738LRESULT CALLBACK MenuEditWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
    745739    extern HINSTANCE hInst;
    746     extern MDIINFO MdiInfo[MAX_WNDNUM];
    747740    int i;
    748741    RECT rect;
     
    797790LRESULT CALLBACK MDIClientWindow_Menu(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
    798791    extern HWND hDocCombo;
    799     extern MDIINFO MdiInfo[MAX_WNDNUM];
    800792    int i,i2,i3,WndNum,MenuInfoNum;
    801793    MENU_INFO *pMenuInfo;
Note: See TracChangeset for help on using the changeset viewer.