///////////////////////////////////////////////////////////////////////////// /////////ツリービューからメインフレームにメッセージが届きました ////////// //ここではツリー上のタブ(カテゴリ)から判断して自動的に画面を切り替えます/// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //一品カテゴリの場合はそのままのビューで料理を作成します //一食カテゴリの場合は一食献立作成画面に切り替えますが一品料理のカテゴリが選択されても戻らずこのまま一食献立画面です //一日食カテゴリの場合は画面を一日食画面に自動的に切り替えます一品・一食カテゴリが操作されてもこのまま1日食画面です /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// LRESULT MainFrame::OneDayOrDishDbClick(WPARAM wParam, LPARAM lParam) { CDocument* pActiveDoc=EkGetActiveDocument(); DietRemedyDoc* pMyDoc; //========================================================================= if (pActiveDoc==NULL) { if(pActiveDoc->IsKindOf(RUNTIME_CLASS(DietRemedyDoc))){ pMyDoc=static_cast(pActiveDoc); } } //====================================================================================== else if(pActiveDoc->IsKindOf(RUNTIME_CLASS(DietRemedyDoc))){ pMyDoc=static_cast(pActiveDoc); } //====================ビューを切り替える前にファイルが有れば読み出します================ //有効なファイル名が選択されているか確認します,有効な場合は(.)が最後尾に付加されています if(0ReshipiName.Find(_T("."))){ //=========================一食料理が選択されています=================================== //=======一食料理は最大で10種類の一品料理で構成されます============== //pMyDoc->msPosNmberは最大9(0〜100)までの加算を許可します,それ以上は不可です(取りあえずですが?) if((pMyDoc->msPosNmber<100)&&(pMyDoc->ms_WorkManagement.ViewNmber!=1)) ++pMyDoc->msPosNmber;//初期化は-1から始まります if(pMyDoc->ms_WorkManagement.ViewNmber==1) pMyDoc->msPosNmber=0;//一品料理は一品だけが対応です; //================================================================================================================================================================================ if(pMyDoc->ms_WorkManagement.dbClickJob==1) pMyDoc->MemberReshpiFileRead(pMyDoc->RechipiDirectoryPath,&pMyDoc->ms_OneDeshFoodDetaControler[0],pMyDoc->ReshipiName); //一品料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==2) pMyDoc->MemberReshpiFileRead(pMyDoc->OnDishDirectory ,&pMyDoc->ms_OneDeshFoodDetaControler[0],pMyDoc->ReshipiName); //一食料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==3) pMyDoc->MemberReshpiFileRead(pMyDoc->OnDayDirectory ,&pMyDoc->ms_OneDayFoodDetaControler [0],pMyDoc->ReshipiName); //一日料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==4) pMyDoc->MemberReshpiFileRead(pMyDoc->WeekDirectory ,&pMyDoc->ms_OneWeekFoodDetaControler[0],pMyDoc->ReshipiName); //週間料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==5) pMyDoc->MemberReshpiFileRead(pMyDoc->MoonDirectory ,&pMyDoc->ms_OneMoonFoodDetaControler[0],pMyDoc->ReshipiName); //月間料理 //================================================================================================================================================================================ else if(pMyDoc->ms_WorkManagement.dbClickJob==6) int dami=0; //栄養素特定 現在未定 else if(pMyDoc->ms_WorkManagement.dbClickJob==7) pMyDoc->MemberReshpiFileRead(pMyDoc->SpDirectory,&pMyDoc->ms_SpesialFoodDetaControler[0],pMyDoc->ReshipiName); //血糖値管理 else if(pMyDoc->ms_WorkManagement.dbClickJob==8) pMyDoc->MemberReshpiFileRead(pMyDoc->SpDirectory,&pMyDoc->ms_SpesialFoodDetaControler[0],pMyDoc->ReshipiName); //食材管理 else if(pMyDoc->ms_WorkManagement.dbClickJob==9) pMyDoc->MemberReshpiFileRead(pMyDoc->SpDirectory,&pMyDoc->ms_SpesialFoodDetaControler[0],pMyDoc->ReshipiName); //栄養素バランスグラフ else return TRUE; } //============================ビューにロックを掛けたり外したりします===================== switch(pMyDoc->ms_WorkManagement.ViewNmber){ case 2: if(pMyDoc->ms_WorkManagement.dbClickJob==1) pMyDoc->ms_WorkManagement.viwLockFrg=2; if((pMyDoc->ms_WorkManagement.dbClickJob==3)||(pMyDoc->ms_WorkManagement.dbClickJob==4)) pMyDoc->ms_WorkManagement.viwLockFrg=0;break; case 3: if((pMyDoc->ms_WorkManagement.dbClickJob==1)||(pMyDoc->ms_WorkManagement.dbClickJob==2)) pMyDoc->ms_WorkManagement.viwLockFrg=3; if((pMyDoc->ms_WorkManagement.dbClickJob==1)||(pMyDoc->ms_WorkManagement.dbClickJob==4)) pMyDoc->ms_WorkManagement.viwLockFrg=0;break; case 4: if((pMyDoc->ms_WorkManagement.dbClickJob==2)||(pMyDoc->ms_WorkManagement.dbClickJob==3)) pMyDoc->ms_WorkManagement.viwLockFrg=4; if((pMyDoc->ms_WorkManagement.dbClickJob==1)||(pMyDoc->ms_WorkManagement.dbClickJob==2)) pMyDoc->ms_WorkManagement.viwLockFrg=0;break; case 5: if((pMyDoc->ms_WorkManagement.dbClickJob==3)||(pMyDoc->ms_WorkManagement.dbClickJob==4)) pMyDoc->ms_WorkManagement.viwLockFrg=5; if((pMyDoc->ms_WorkManagement.dbClickJob==2)||(pMyDoc->ms_WorkManagement.dbClickJob==3)) pMyDoc->ms_WorkManagement.viwLockFrg=0;break; } //======================同一なビューです、再表示する必要は有りません==================== if(pMyDoc->ms_WorkManagement.ViewNmber==pMyDoc->ms_WorkManagement.dbClickJob) return TRUE; //=========================現在のビュー番号を設定します================================= pMyDoc->ms_WorkManagement.ViewNmber=pMyDoc->ms_WorkManagement.dbClickJob; //=========================現在のビューを固定します===================================== pMyDoc->ms_WorkManagement.viwLockFrg=pMyDoc->ms_WorkManagement.dbClickJob; //====================================================================================== CCreateContext context; context.m_pCurrentDoc=GetActiveDocument(); //====================================================================================== m_wndSplitter.DeleteView(0,RIGHT_SIDE_PAIN); //====================================================================================== int xWidth=1280,yHight=760,dami=0; //====================================================================================== //===============料理一覧項目でツリー内がダブルクリックされた事により切り替えます===疾患15は除いています============ if(pMyDoc->ms_WorkManagement.dbClickJob==1) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(MeikingDish) ,CSize(xWidth,yHight),&context);//一品料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==2) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(MeikingOneDish) ,CSize(xWidth,yHight),&context);//一食料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==3) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(MeikingOneDayDish) ,CSize(xWidth,yHight),&context);//一日料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==4) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(MeikingOneWeekDish) ,CSize(xWidth,yHight),&context);//週間料理 else if(pMyDoc->ms_WorkManagement.dbClickJob==5) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(MeikingOneMoonDish) ,CSize(xWidth,yHight),&context);//月間料理 //============================================================================================================================================================================= else if(pMyDoc->ms_WorkManagement.dbClickJob==6) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(NutrientIdentification) ,CSize(xWidth,yHight),&context);//栄養素特定 else if(pMyDoc->ms_WorkManagement.dbClickJob==7) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(BloodSugarLevelManagement),CSize(xWidth,yHight),&context);//血糖値管理 else if(pMyDoc->ms_WorkManagement.dbClickJob==8) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(NutrientManagement) ,CSize(xWidth,yHight),&context);//食材管理 else if(pMyDoc->ms_WorkManagement.dbClickJob==9) m_wndSplitter.CreateView(0,RIGHT_SIDE_PAIN,RUNTIME_CLASS(NutrientBalanceGraph) ,CSize(xWidth,yHight),&context);//栄養素バランスグラフ else return FALSE; //====================================NutrientBalanceGraph================================================== m_wndSplitter.RecalcLayout() ; InitialUpdateFrame(NULL,TRUE); //====================================================================================== return TRUE; }