/* ダイアログデータの取得 Toolbar */ int CPropToolbar::GetData( HWND hwndDlg ) { HWND hwndResList; int i; int j; int k; hwndResList = ::GetDlgItem( hwndDlg, IDC_LIST_RES ); /* ツールバーボタンの数 */ m_Common.m_sToolBar.m_nToolBarButtonNum = List_GetCount( hwndResList ); /* ツールバーボタンの情報を取得 */ k = 0; for( i = 0; i < m_Common.m_sToolBar.m_nToolBarButtonNum; ++i ){ j = List_GetItemData( hwndResList, i ); if( LB_ERR != j ){ m_Common.m_sToolBar.m_nToolBarButtonIdxArr[k] = j; k++; } } m_Common.m_sToolBar.m_nToolBarButtonNum = k; /* フラットツールバーにする/しない */ m_Common.m_sToolBar.m_bToolBarIsFlat = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_TOOLBARISFLAT ); return TRUE; }
/* TRUE==正常 FALSE==入力エラー */ int CDlgCompare::GetData( void ) { HWND hwndList; int nItem; EditInfo* pfi; hwndList = :: GetDlgItem( GetHwnd(), IDC_LIST_FILES ); nItem = List_GetCurSel( hwndList ); if( LB_ERR == nItem ){ return FALSE; }else{ *m_phwndCompareWnd = (HWND)List_GetItemData( hwndList, nItem ); /* トレイからエディタへの編集ファイル名要求通知 */ ::SendMessageAny( *m_phwndCompareWnd, MYWM_GETFILEINFO, 0, 0 ); pfi = (EditInfo*)&m_pShareData->m_sWorkBuffer.m_EditInfo_MYWM_GETFILEINFO; // 2010.07.30 パス名はやめて表示名に変更 int nId = CAppNodeManager::getInstance()->GetEditNode( *m_phwndCompareWnd )->GetId(); CTextWidthCalc calc(hwndList); CFileNameManager::getInstance()->GetMenuFullLabel_WinListNoEscape( m_pszCompareLabel, _MAX_PATH/*長さ不明*/, pfi, nId, -1, calc.GetDC() ); /* 左右に並べて表示 */ m_bCompareAndTileHorz = ::IsDlgButtonChecked( GetHwnd(), IDC_CHECK_TILE_H ); return TRUE; } }
/* Toolbar メッセージ処理 */ INT_PTR CPropToolbar::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; HWND hwndCtl; NMHDR* pNMHDR; int idCtrl; static HWND hwndCombo; static HWND hwndFuncList; static HWND hwndResList; LPDRAWITEMSTRUCT pDis; int nIndex1; int nIndex2; // int nIndex3; int nNum; int i; int j; static int nListItemHeight; LRESULT lResult; switch( uMsg ){ case WM_INITDIALOG: /* コントロールのハンドルを取得 */ hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_FUNCKIND ); hwndFuncList = ::GetDlgItem( hwndDlg, IDC_LIST_FUNC ); hwndResList = ::GetDlgItem( hwndDlg, IDC_LIST_RES ); { // 2014.11.25 フォントの高さが正しくなかったバグを修正 CTextWidthCalc calc(hwndResList); int nFontHeight = calc.GetTextHeight(); nListItemHeight = std::max(nFontHeight, GetSystemMetrics(SM_CYSMICON)) + DpiScaleY(2); nToolBarListBoxTopMargin = (nListItemHeight - (nFontHeight + 1)) / 2; } /* ダイアログデータの設定 Toolbar */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); // From Here Oct.14, 2000 JEPRO added (Ref. CPropComCustmenu.cpp 内のWM_INITDIALOGを参考にした) /* キー選択時の処理 */ ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_COMBO_FUNCKIND, CBN_SELCHANGE ), (LPARAM)hwndCombo ); // To Here Oct. 14, 2000 ::SetTimer( hwndDlg, 1, 300, NULL ); SetDlgItemsEnableState( hwndDlg, hwndResList, hwndFuncList ); return TRUE; case WM_DRAWITEM: idCtrl = (UINT) wParam; /* コントロールのID */ pDis = (LPDRAWITEMSTRUCT) lParam; /* 項目描画情報 */ switch( idCtrl ){ case IDC_LIST_RES: /* ツールバーボタン結果リスト */ case IDC_LIST_FUNC: /* ボタン一覧リスト */ DrawToolBarItemList( pDis ); /* ツールバーボタンリストのアイテム描画 */ return TRUE; } return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_TOOLBAR ); return TRUE; case PSN_KILLACTIVE: // MYTRACE( _T("PROP_TOOLBAR PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Toolbar */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_TOOLBAR; return TRUE; } break; case WM_COMMAND: wNotifyCode = HIWORD( wParam ); /* 通知コード */ wID = LOWORD( wParam ); /* 項目ID、 コントロールID、 またはアクセラレータID */ hwndCtl = (HWND) lParam; /* コントロールのハンドル */ if( hwndResList == hwndCtl ){ switch( wNotifyCode ){ case LBN_SELCHANGE: return TRUE; } }else if( hwndCombo == hwndCtl ){ switch( wNotifyCode ){ case CBN_SELCHANGE: nIndex2 = Combo_GetCurSel( hwndCombo ); List_ResetContent( hwndFuncList ); /* 機能一覧に文字列をセット (リストボックス) */ // From Here Oct. 15, 2001 genta Lookupを使うように変更 nNum = m_cLookup.GetItemCount( nIndex2 ); for( i = 0; i < nNum; ++i ){ nIndex1 = m_cLookup.Pos2FuncCode( nIndex2, i ); int nbarNo = m_pcMenuDrawer->FindToolbarNoFromCommandId( nIndex1 ); if( nbarNo >= 0 ){ /* ツールバーボタンの情報をセット (リストボックス) */ lResult = ::Listbox_ADDDATA( hwndFuncList, (LPARAM)nbarNo ); if( lResult == LB_ERR || lResult == LB_ERRSPACE ){ break; } lResult = List_SetItemHeight( hwndFuncList, lResult, nListItemHeight ); } } return TRUE; } }else{ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_BUTTON_INSERTSEPARATOR: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, 0 ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; // 2005/8/9 aroka 折返ボタンが押されたら、右のリストに「ツールバー折返」を追加する。 case IDC_BUTTON_INSERTWRAP: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } // From Here Apr. 13, 2002 genta // 2010.06.25 Moca 折り返しのツールバーのボタン番号定数名を変更。最後ではなく固定値にする nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, CMenuDrawer::TOOLBAR_BUTTON_F_TOOLBARWRAP ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_DELETE: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ break; } i = List_DeleteString( hwndResList, nIndex1 ); if( i == LB_ERR ){ break; } if( nIndex1 >= i ){ if( i == 0 ){ i = List_SetCurSel( hwndResList, 0 ); }else{ i = List_SetCurSel( hwndResList, i - 1 ); } }else{ i = List_SetCurSel( hwndResList, nIndex1 ); } break; case IDC_BUTTON_INSERT: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } nIndex2 = List_GetCurSel( hwndFuncList ); if( LB_ERR == nIndex2 ){ break; } i = List_GetItemData( hwndFuncList, nIndex2 ); // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 + 1 ); break; case IDC_BUTTON_ADD: nIndex1 = List_GetCount( hwndResList ); nIndex2 = List_GetCurSel( hwndFuncList ); if( LB_ERR == nIndex2 ){ break; } i = List_GetItemData( hwndFuncList, nIndex2 ); // From Here Apr. 13, 2002 genta // ここでは i != 0 だとは思うけど、一応保険です。 nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_UP: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 || 0 >= nIndex1 ){ break; } i = List_GetItemData( hwndResList, nIndex1 ); j = List_DeleteString( hwndResList, nIndex1 ); if( j == LB_ERR ){ break; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1 - 1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_DOWN: i = List_GetCount( hwndResList ); nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 || nIndex1 + 1 >= i ){ break; } i = List_GetItemData( hwndResList, nIndex1 ); j = List_DeleteString( hwndResList, nIndex1 ); if( j == LB_ERR ){ break; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1 + 1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } List_SetCurSel( hwndResList, nIndex1 ); // To Here Apr. 13, 2002 genta break; } break; } } break; case WM_TIMER: SetDlgItemsEnableState( hwndDlg, hwndResList, hwndFuncList ); break; case WM_DESTROY: ::KillTimer( hwndDlg, 1 ); break; //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }