Index: /trunk/ab5.0/abdev/abdev/Common.h
===================================================================
--- /trunk/ab5.0/abdev/abdev/Common.h	(revision 491)
+++ /trunk/ab5.0/abdev/abdev/Common.h	(revision 492)
@@ -1,2 +1,4 @@
+#pragma once
+
 #define OEMRESOURCE
 #define _CRT_SECURE_NO_DEPRECATE	//セキュリティ警告を出さない
Index: /trunk/ab5.0/abdev/abdev/abdev.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/abdev.cpp	(revision 491)
+++ /trunk/ab5.0/abdev/abdev/abdev.cpp	(revision 492)
@@ -1399,8 +1399,4 @@
 	RECT rect;
 	POINT pos;
-	LPTOOLTIPTEXT TipText;
-	LPNMHDR lpnmhdr;
-	NMPGCALCSIZE *lpCalcSize;
-	NMPGSCROLL *lpScroll;
 	HDROP hDrop;
 	HGLOBAL hGlobal;
@@ -1425,190 +1421,6 @@
 	}
 
-	switch(message){
-		case WM_TIMER:
-			//Pro版は自動バックアップ及び復元機能を有効にする
-			_beginthread(backup,0,0);
-
-#ifndef THETEXT
-			if(wParam==ID_DEBUGSAFTY){
-				//BasicCompiler.exeが強制終了しているかどうかを検証
-				pobj_Debugger->SaftyCheck();
-			}
-#endif
-
-			return 0;
-
-
-		case WM_DRAWCLIPBOARD:
-			ResetState_EditMenu();
-			return 0;
-
-		case WM_MENUSELECT:
-			MenuAdvice(wParam);
-			return 0;
-		case WM_INITMENU:
-			pobj_nv->pobj_History->ResetFileMenu(pobj_FileHistoryMenu,1);
-#ifndef THETEXT
-			pobj_nv->pobj_ProjectHistory->ResetFileMenu(pobj_ProjectHistoryMenu,0);
-#endif
-			return 0;
-		case WM_MEASUREITEM:
-			LPMEASUREITEMSTRUCT lpMI;
-			lpMI = (LPMEASUREITEMSTRUCT)lParam;
-			if(lpMI->CtlType==ODT_MENU){
-				SIZE size;
-				CMenuItemData *pobj_MenuItemData;
-				pobj_MenuItemData=(CMenuItemData *)lpMI->itemData;
-				if(pobj_MenuItemData->pobj_ThisMenu->hMenu==pobj_MainMenu->hMenu){
-					//メインメニューの親アイテム
-					pobj_MainMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
-					lpMI->itemWidth = size.cx;
-					lpMI->itemHeight = size.cy;
-				}
-				else{
-					//メインメニューにぶらさがるサブメニュー
-					pobj_MenuItemData->pobj_ThisMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
-					lpMI->itemWidth = size.cx;
-					lpMI->itemHeight = size.cy;
-				}
-			}
-			return 0;
-
-		case WM_DRAWITEM:
-			{
-				DRAWITEMSTRUCT *pdis = (DRAWITEMSTRUCT *)lParam;
-
-				if(pdis->CtlType==ODT_MENU){
-					if(!pobj_MainMenu) return 0;
-
-					CMenuItemData *pobj_MenuItemData;
-					pobj_MenuItemData=(CMenuItemData *)pdis->itemData;
-					if(pobj_MainMenu->hMenu==pobj_MenuItemData->pobj_ThisMenu->hMenu){
-						//メインメニューの親アイテム
-						pobj_MainMenu->OwnerDrawMenu(pdis->hDC,
-							&pdis->rcItem,
-							(pdis->itemState&ODS_SELECTED)!=0,
-							pobj_MenuItemData->item_index);
-					}
-					else{
-						//メインメニューにぶらさがるサブメニュー
-						pobj_MainMenu->OwnerDrawSubMenu(pobj_MenuItemData->pobj_ThisMenu->hMenu,
-							pdis->hDC,
-							&pdis->rcItem,
-							(pdis->itemState&ODS_SELECTED)!=0,
-							pobj_MenuItemData->item_index);
-					}
-				}
-
-				return 0;
-			}
-
-		case WM_NOTIFY:
-			if(!lParam) return 0;
-			TipText=(LPTOOLTIPTEXT)lParam;
-			if(TipText->hdr.code==TTN_NEEDTEXT) ShowToolTipText(TipText);
-			lpnmhdr=(LPNMHDR)lParam;
-
-			extern HWND hStandardToolbarPager;
-			extern HWND hDebuggerToolbarPager;
-			if(pobj_Rebar){
-				//レバーオブジェクトが存在するとき
-				if(lpnmhdr->hwndFrom==pobj_Rebar->hRebar&&lpnmhdr->code==RBN_HEIGHTCHANGE){
-					ResizeOwnerWnd();
-					return 0;
-				}
-			}
-			if(lpnmhdr->hwndFrom==hStandardToolbarPager){
-				if(lpnmhdr->code==PGN_CALCSIZE){
-					lpCalcSize=(LPNMPGCALCSIZE)lParam;
-					if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
-						lpCalcSize->iWidth=BMPNUM_STANDARDTOOLBAR*23+SEPNUM_STANDARDTOOLBAR*8;
-				}
-				else if(lpnmhdr->code==PGN_SCROLL){
-					lpScroll=(LPNMPGSCROLL)lParam;
-					lpScroll->iScroll=20;
-				}
-			}
-			else if(lpnmhdr->hwndFrom==hDebuggerToolbarPager){
-				if(lpnmhdr->code==PGN_CALCSIZE){
-					lpCalcSize=(LPNMPGCALCSIZE)lParam;
-					if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
-						lpCalcSize->iWidth=BMPNUM_DEBUGGERTOOLBAR*23+SEPNUM_DEBUGGERTOOLBAR*8;
-				}
-				else if(lpnmhdr->code==PGN_SCROLL){
-					lpScroll=(LPNMPGSCROLL)lParam;
-					lpScroll->iScroll=20;
-				}
-			}
-
-			NMHDR *hdr;
-			hdr=(NMHDR *)lParam;
-			if(pobj_MainTab){
-				if(hdr->hwndFrom==pobj_MainTab->hTab){
-					if(hdr->code==TCN_SELCHANGE)
-						pobj_MainTab->SelChangeEvent();
-
-					if(hdr->code==NM_RCLICK){
-
-						TCHITTESTINFO tcHitTest;
-						GetCursorPos(&tcHitTest.pt);
-						ScreenToClient(pobj_MainTab->hTab,&tcHitTest.pt);
-						i=TabCtrl_HitTest(pobj_MainTab->hTab,&tcHitTest);
-						if(i==-1) return 0;
-
-						TabCtrl_SetCurSel(pobj_MainTab->hTab,i);
-
-						pobj_MainTab->SelChangeEvent();
-
-
-						/////////////////////
-						// メニューを表示
-						/////////////////////
-
-						hChild=GetWindow(hClient,GW_CHILD);
-						WndNum=GetWndNum(hChild);
-
-						//保存コマンドの文字列をセット
-						MENUITEMINFO mii;
-						mii.cbSize=sizeof(MENUITEMINFO);
-						mii.fMask=MIIM_TYPE;
-						mii.dwTypeData=temporary;
-						mii.fType=MFT_STRING;
-						if(MdiInfo[WndNum].path[0]){
-							_splitpath(MdiInfo[WndNum].path,NULL,NULL,temporary,temp2);
-							lstrcat(temporary,temp2);
-							lstrcat(temporary," を保存(&S)");
-						}
-						else{
-							lstrcpy(temporary,"保存(&S)");
-						}
-						SetMenuItemInfo(hTabMenu,IDM_SAVE,FALSE,&mii);
-
-						/*「絶対パスをコピー」「フォルダを開く」「ファイルを削除」
-														コマンドを場合によって無効化にする */
-						if(MdiInfo[WndNum].path[0]){
-							EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_ENABLED);
-							EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_ENABLED);
-							EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_ENABLED);
-						}
-						else{
-							EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_GRAYED);
-							EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_GRAYED);
-							EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_GRAYED);
-						}
-
-						POINT MousePos;
-						GetCursorPos(&MousePos);
-						TrackPopupMenu(hTabMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,MousePos.x,MousePos.y,0,hOwner,NULL);
-					}
-				}
-			}
-			if(pobj_SideWeb){
-				if(hdr->hwndFrom==pobj_SideWeb->hTab&&hdr->code==TCN_SELCHANGE){
-					pobj_SideWeb->SelChangeEvent();
-				}
-			}
-
-			return 0;
+	switch(message)
+	{
 		case WM_COMMAND:
 			switch(LOWORD(wParam)){
Index: /trunk/ab5.0/abdev/abdev/include/MainFrame.h
===================================================================
--- /trunk/ab5.0/abdev/abdev/include/MainFrame.h	(revision 491)
+++ /trunk/ab5.0/abdev/abdev/include/MainFrame.h	(revision 492)
@@ -12,8 +12,36 @@
 public:
 
+	// 生成された
 	::LRESULT OnCreate( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
+
+	// 「閉じる」ボタンがクリックされた
 	::LRESULT OnClose( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
+
+	// リサイズされた
 	void OnSize(UINT nType, CSize size);
+
+	// 破棄された
 	::LRESULT OnDestroy( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
+
+	// タイマーイベント
+	void OnTimer( UINT_PTR id );
+
+	// クリップボード内のデータが変更した
+	void OnDrawClipboard();
+
+	// メニューが選択された
+	void OnMenuSelect( UINT nItemID, UINT nFlags, CMenu menu );
+
+	// メニューがアクティブになる直前に送られる
+	void OnInitMenu( CMenu menu );
+
+	// メニューアイテムのサイズが要求された
+	void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );
+
+	// メニューアイテムの描画が要求された
+	void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );
+
+	// 拡張コントロールからメッセージが通知された
+	LRESULT OnNotify( int idCtrl, LPNMHDR pnmh );
 
 private:
@@ -23,4 +51,12 @@
 		MESSAGE_HANDLER( WM_CLOSE, OnClose )
 		MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
+		MSG_WM_TIMER( OnTimer )
+		MSG_WM_DRAWCLIPBOARD( OnDrawClipboard )
+		MSG_WM_MENUSELECT( OnMenuSelect )
+		MSG_WM_INITMENU( OnInitMenu )
+		MSG_WM_MEASUREITEM( OnMeasureItem )
+		MSG_WM_DRAWITEM( OnDrawItem )
+
+		MSG_WM_NOTIFY( OnNotify );
 	END_MSG_MAP()
 };
Index: /trunk/ab5.0/abdev/abdev/src/MainFrame.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/src/MainFrame.cpp	(revision 491)
+++ /trunk/ab5.0/abdev/abdev/src/MainFrame.cpp	(revision 492)
@@ -65,2 +65,204 @@
 	return 0;
 }
+
+void backup(void *dummy);
+void MainFrame::OnTimer( UINT_PTR id )
+{
+	switch( id )
+	{
+	case ID_TIMER_BACKUP:
+		_beginthread( backup, 0, 0 );
+		break;
+
+#ifndef THETEXT
+	case ID_DEBUGSAFTY:
+		{
+			//BasicCompiler.exeが強制終了しているかどうかを検証
+			extern CDebugger *pobj_Debugger;
+			pobj_Debugger->SaftyCheck();
+			break;
+		}
+#endif
+	}
+}
+
+void ResetState_EditMenu(void);
+void MainFrame::OnDrawClipboard()
+{
+	ResetState_EditMenu();
+}
+
+void MenuAdvice(WPARAM msg);
+void MainFrame::OnMenuSelect( UINT nItemID, UINT nFlags, CMenu menu )
+{
+	MenuAdvice( nItemID );
+}
+
+void MainFrame::OnInitMenu( CMenu menu )
+{
+	extern CNonVolatile *pobj_nv;
+	extern CSubMenuEx *pobj_FileHistoryMenu;
+	pobj_nv->pobj_History->ResetFileMenu(pobj_FileHistoryMenu,1);
+#ifndef THETEXT
+	extern CSubMenuEx *pobj_ProjectHistoryMenu;
+	pobj_nv->pobj_ProjectHistory->ResetFileMenu(pobj_ProjectHistoryMenu,0);
+#endif
+}
+
+void MainFrame::OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMI )
+{
+	if(lpMI->CtlType==ODT_MENU){
+		SIZE size;
+		CMenuItemData *pobj_MenuItemData;
+		pobj_MenuItemData=(CMenuItemData *)lpMI->itemData;
+		if(pobj_MenuItemData->pobj_ThisMenu->hMenu==pobj_MainMenu->hMenu){
+			//メインメニューの親アイテム
+			pobj_MainMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
+			lpMI->itemWidth = size.cx;
+			lpMI->itemHeight = size.cy;
+		}
+		else{
+			//メインメニューにぶらさがるサブメニュー
+			pobj_MenuItemData->pobj_ThisMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
+			lpMI->itemWidth = size.cx;
+			lpMI->itemHeight = size.cy;
+		}
+	}
+}
+
+void MainFrame::OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct )
+{
+	if(lpDrawItemStruct->CtlType==ODT_MENU){
+		if(!pobj_MainMenu) return;
+
+		CMenuItemData *pobj_MenuItemData;
+		pobj_MenuItemData=(CMenuItemData *)lpDrawItemStruct->itemData;
+		if(pobj_MainMenu->hMenu==pobj_MenuItemData->pobj_ThisMenu->hMenu){
+			//メインメニューの親アイテム
+			pobj_MainMenu->OwnerDrawMenu(lpDrawItemStruct->hDC,
+				&lpDrawItemStruct->rcItem,
+				(lpDrawItemStruct->itemState&ODS_SELECTED)!=0,
+				pobj_MenuItemData->item_index);
+		}
+		else{
+			//メインメニューにぶらさがるサブメニュー
+			pobj_MainMenu->OwnerDrawSubMenu(pobj_MenuItemData->pobj_ThisMenu->hMenu,
+				lpDrawItemStruct->hDC,
+				&lpDrawItemStruct->rcItem,
+				(lpDrawItemStruct->itemState&ODS_SELECTED)!=0,
+				pobj_MenuItemData->item_index);
+		}
+	}
+}
+
+LRESULT MainFrame::OnNotify( int idCtrl, LPNMHDR pnmh )
+{
+	NMPGCALCSIZE *lpCalcSize;
+	NMPGSCROLL *lpScroll;
+
+	if(!pnmh) return 0;
+	LPTOOLTIPTEXT TipText=(LPTOOLTIPTEXT)pnmh;
+	if(TipText->hdr.code==TTN_NEEDTEXT) ShowToolTipText(TipText);
+
+	extern HWND hStandardToolbarPager;
+	extern HWND hDebuggerToolbarPager;
+	if(pobj_Rebar){
+		//レバーオブジェクトが存在するとき
+		if(pnmh->hwndFrom==pobj_Rebar->hRebar&&pnmh->code==RBN_HEIGHTCHANGE){
+			ResizeOwnerWnd();
+			return 0;
+		}
+	}
+	if(pnmh->hwndFrom==hStandardToolbarPager){
+		if(pnmh->code==PGN_CALCSIZE){
+			lpCalcSize=(LPNMPGCALCSIZE)pnmh;
+			if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
+				lpCalcSize->iWidth=BMPNUM_STANDARDTOOLBAR*23+SEPNUM_STANDARDTOOLBAR*8;
+		}
+		else if(pnmh->code==PGN_SCROLL){
+			lpScroll=(LPNMPGSCROLL)pnmh;
+			lpScroll->iScroll=20;
+		}
+	}
+	else if(pnmh->hwndFrom==hDebuggerToolbarPager){
+		if(pnmh->code==PGN_CALCSIZE){
+			lpCalcSize=(LPNMPGCALCSIZE)pnmh;
+			if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
+				lpCalcSize->iWidth=BMPNUM_DEBUGGERTOOLBAR*23+SEPNUM_DEBUGGERTOOLBAR*8;
+		}
+		else if(pnmh->code==PGN_SCROLL){
+			lpScroll=(LPNMPGSCROLL)pnmh;
+			lpScroll->iScroll=20;
+		}
+	}
+
+	if(pobj_MainTab){
+		if(pnmh->hwndFrom==pobj_MainTab->hTab){
+			if(pnmh->code==TCN_SELCHANGE)
+				pobj_MainTab->SelChangeEvent();
+
+			if(pnmh->code==NM_RCLICK){
+
+				TCHITTESTINFO tcHitTest;
+				GetCursorPos(&tcHitTest.pt);
+				::ScreenToClient(pobj_MainTab->hTab,&tcHitTest.pt);
+				int index = TabCtrl_HitTest(pobj_MainTab->hTab,&tcHitTest);
+				if( index == -1 ) return 0;
+
+				TabCtrl_SetCurSel(pobj_MainTab->hTab,index);
+
+				pobj_MainTab->SelChangeEvent();
+
+
+				/////////////////////
+				// メニューを表示
+				/////////////////////
+
+				HWND hChild=::GetWindow(hClient,GW_CHILD);
+				int WndNum=GetWndNum(hChild);
+
+				//保存コマンドの文字列をセット
+				char temporary[1024], temp2[1024];
+				MENUITEMINFO mii;
+				mii.cbSize=sizeof(MENUITEMINFO);
+				mii.fMask=MIIM_TYPE;
+				mii.dwTypeData=temporary;
+				mii.fType=MFT_STRING;
+				if(MdiInfo[WndNum].path[0]){
+					_splitpath(MdiInfo[WndNum].path,NULL,NULL,temporary,temp2);
+					lstrcat(temporary,temp2);
+					lstrcat(temporary," を保存(&S)");
+				}
+				else{
+					lstrcpy(temporary,"保存(&S)");
+				}
+				extern HMENU hTabMenu;
+				SetMenuItemInfo(hTabMenu,IDM_SAVE,FALSE,&mii);
+
+				/*「絶対パスをコピー」「フォルダを開く」「ファイルを削除」
+												コマンドを場合によって無効化にする */
+				if(MdiInfo[WndNum].path[0]){
+					EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_ENABLED);
+					EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_ENABLED);
+					EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_ENABLED);
+				}
+				else{
+					EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_GRAYED);
+					EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_GRAYED);
+					EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_GRAYED);
+				}
+
+				POINT MousePos;
+				GetCursorPos(&MousePos);
+				TrackPopupMenu(hTabMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,MousePos.x,MousePos.y,0,hOwner,NULL);
+			}
+		}
+	}
+	if(pobj_SideWeb){
+		if(pnmh->hwndFrom==pobj_SideWeb->hTab&&pnmh->code==TCN_SELCHANGE){
+			pobj_SideWeb->SelChangeEvent();
+		}
+	}
+
+	return 0;
+}
Index: /trunk/ab5.0/abdev/abdev/stdafx.h
===================================================================
--- /trunk/ab5.0/abdev/abdev/stdafx.h	(revision 491)
+++ /trunk/ab5.0/abdev/abdev/stdafx.h	(revision 492)
@@ -20,8 +20,8 @@
 
 #include <atlbase.h>
-#include <atlcom.h>		// ATL COM共通用ヘッダファイル
-#include <atlhost.h>	// ATL コンテナ機能サポート用ヘッダファイル
+#include <atlcom.h>		// ATL COMﾊ用wb_t@C
+#include <atlhost.h>	// ATL Rei@\T|[gpwb_t@C
 #include <atlapp.h>
-#include <atlframe.h>	// ATL コンテナ機能サポート用ヘッダファイル
+#include <atlframe.h>	// ATL Rei@\T|[gpwb_t@C
 #include <atlcrack.h>
 #include <atlmisc.h>
@@ -47,2 +47,6 @@
 #include <MainFrame.h>
 #include <Program.h>
+
+#include "../res/resource.h"
+
+#include "Common.h"
