created and maintained by tokd
HowToBuildDonutL
DonutL をフリーの開発環境でコンパイルするための手順
-「Visual C++ 2005 Express Edition 日本語版」をインストール
> http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
-「Visual C++ 2005 Express Edition SP1- VS80sp1-KB926748-X86-INTL.exe」をインストール
> http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/vs2005/sp1/
- C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults\corewin_express.vsprops の修正(参考 http://www.atmarkit.co.jp/fwcr/special/custom_browser/01.html)
--- corewin_express.vsprops.orig 2006-12-21 17:06:35.431808000 +0900 +++ corewin_express.vsprops 2006-12-20 13:13:00.022035200 +0900 @@ -5,5 +5,5 @@ Name="Core Windows Libraries"> <Tool Name="VCLinkerTool" - AdditionalDependencies="kernel32.lib" /> + AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" /> </VisualStudioPropertySheet>
-「Microsoft Windows Server 2003 R2 Platform SDK - March 2006 Edition」から Microsoft Core SDK, Microsoft Web Workshop (IE) SDK, Microsoft Data Access Services (MDAC) SDK の Build Environment をインストール
> http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
- C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl にインストールされている ATL 3.0 の修正(参考 http://www.atmarkit.co.jp/fwcr/special/custom_browser/01.html)
diff -ur atl_dist/atlbase.h atl/atlbase.h --- atl_dist/atlbase.h 2006-03-03 23:19:12.000000000 +0900 +++ atl/atlbase.h 2006-12-20 13:08:17.035120000 +0900 @@ -284,13 +284,15 @@ }; #pragma pack(pop) -PVOID __stdcall __AllocStdCallThunk(VOID); -VOID __stdcall __FreeStdCallThunk(PVOID); +//PVOID __stdcall __AllocStdCallThunk(VOID); +//VOID __stdcall __FreeStdCallThunk(PVOID); -#define AllocStdCallThunk() __AllocStdCallThunk() -#define FreeStdCallThunk(p) __FreeStdCallThunk(p) +//#define AllocStdCallThunk() __AllocStdCallThunk() +//#define FreeStdCallThunk(p) __FreeStdCallThunk(p) +#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS,sizeof(_stdcallthunk)) +#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(),0,p) -#pragma comment(lib, "atlthunk.lib") +//#pragma comment(lib, "atlthunk.lib") #elif defined (_M_AMD64) #pragma pack(push,2) diff -ur atl_dist/atlwin.h atl/atlwin.h --- atl_dist/atlwin.h 2006-03-03 23:19:14.000000000 +0900 +++ atl/atlwin.h 2006-12-20 11:53:14.315268800 +0900 @@ -1750,7 +1750,7 @@ // search for an empty one - for(i = 0; i < m_aChainEntry.GetSize(); i++) + for(int i = 0; i < m_aChainEntry.GetSize(); i++) { if(m_aChainEntry[i] == NULL) {
-「Windows Template Library - WTL 8.0.6304」を展開し WTL80 にリネームして C:\Program Files に移動
> http://sourceforge.net/projects/wtl
- Donut L のソースを入手し適当なディレクトリに展開(http://www.atmark.gr.jp/~s2000/r/files/src/DonutL31_src.cab)
- Donut L31 のソースを修正
diff -ur DonutL31_src/WtlFixed/atlmisc.h DonutL31_hacked/WtlFixed/atlmisc.h --- DonutL31_src/WtlFixed/atlmisc.h 2003-10-04 15:04:56.000000000 +0900 +++ DonutL31_hacked/WtlFixed/atlmisc.h 2006-12-20 11:54:47.018569600 +0900 @@ -3457,7 +3457,8 @@ inline bool _IsDBCSTrailByte(LPCTSTR lpstr, int nChar) { #ifndef _UNICODE - for(int i = nChar; i > 0; i--) + int i; + for(i = nChar; i > 0; i--) { if(!::IsDBCSLeadByte(lpstr[i - 1])) break; @@ -3529,7 +3530,8 @@ // handle just ellipsis if((cchLen < (cchMidEllipsis + cchEndEllipsis))) { - for(int i = 0; i < cchLen - 1; i++) + int i; + for(i = 0; i < cchLen - 1; i++) lpstrOut[i] = ((i + 1) == cchMidEllipsis) ? chSlash : _T('.'); lpstrOut[i] = 0; return true; diff -ur DonutL31_src/aboutdlg.h DonutL31_hacked/aboutdlg.h --- DonutL31_src/aboutdlg.h 2006-06-07 00:09:58.000000000 +0900 +++ DonutL31_hacked/aboutdlg.h 2006-12-20 12:45:01.388278400 +0900 @@ -125,6 +125,7 @@ if (!hInstHelp) { hCursor = LoadCursor(NULL, IDC_ARROW); } else { +#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur))) hCursor = CopyCursor(LoadCursor(hInstHelp, MAKEINTRESOURCE(106))); FreeLibrary(hInstHelp); } diff -ur DonutL31_src/DonutFavoritesMenu.h DonutL31_hacked/DonutFavoritesMenu.h --- DonutL31_src/DonutFavoritesMenu.h 2006-01-12 16:45:54.000000000 +0900 +++ DonutL31_hacked/DonutFavoritesMenu.h 2006-12-20 12:02:05.564425600 +0900 @@ -4,7 +4,7 @@ #include "FavoritesMenu.h" template <class _MainFrame> -class CDonutFavoritesMenu : public CFavoritesMenu<CDonutFavoritesMenu> +class CDonutFavoritesMenu : public CFavoritesMenu<CDonutFavoritesMenu<_MainFrame>> { public: _MainFrame* __m_pMainFrame; diff -ur DonutL31_src/DonutLinksBarCtrl.h DonutL31_hacked/DonutLinksBarCtrl.h --- DonutL31_src/DonutLinksBarCtrl.h 2006-01-05 20:12:16.000000000 +0900 +++ DonutL31_hacked/DonutLinksBarCtrl.h 2006-12-20 12:02:05.724656000 +0900 @@ -51,7 +51,7 @@ ///////////////////////////////////////////////////////////////////////////// template <class _MainFrame> -class CDonutLinksBarCtrl : public COleDragDrogExplorerToolBarCtrlImpl<CDonutLinksBarCtrl> +class CDonutLinksBarCtrl : public COleDragDrogExplorerToolBarCtrlImpl<CDonutLinksBarCtrl<_MainFrame>> { public: DECLARE_WND_SUPERCLASS(_T("Donut_LinksBar"), GetWndClassName()) diff -ur DonutL31_src/ExplorerToolBarCtrl.h DonutL31_hacked/ExplorerToolBarCtrl.h --- DonutL31_src/ExplorerToolBarCtrl.h 2006-04-05 15:07:56.000000000 +0900 +++ DonutL31_hacked/ExplorerToolBarCtrl.h 2006-12-20 12:47:19.957531200 +0900 @@ -11,7 +11,7 @@ #include "PropertyExDlg.h" template <class _ExpBar> -class CExpBarMenu : public CFavoritesMenu<CExpBarMenu> +class CExpBarMenu : public CFavoritesMenu<CExpBarMenu<_ExpBar>> { public: _ExpBar* __m_pExpBar; @@ -325,7 +325,7 @@ info.cbSize = sizeof(info); ::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0); - CLogFont logfont; + MTL::CLogFont logfont; logfont.InitDefault(); if(m_font.m_hFont != NULL) diff -ur DonutL31_src/ExplorerTreeViewCtrl.h DonutL31_hacked/ExplorerTreeViewCtrl.h --- DonutL31_src/ExplorerTreeViewCtrl.h 2006-04-05 15:08:26.000000000 +0900 +++ DonutL31_hacked/ExplorerTreeViewCtrl.h 2006-12-20 12:03:13.592244800 +0900 @@ -707,7 +707,7 @@ ATLASSERT(GetChildItem(hItemParent) == NULL); } - static _TreeItemMask(TVITEM& item, ULONG dwAttributes) + static void _TreeItemMask(TVITEM& item, ULONG dwAttributes) { if (dwAttributes & SFGAO_LINK){ item.mask |= TVIF_STATE; diff -ur DonutL31_src/FavTreeViewCtrl.h DonutL31_hacked/FavTreeViewCtrl.h --- DonutL31_src/FavTreeViewCtrl.h 2006-03-29 02:37:34.000000000 +0900 +++ DonutL31_hacked/FavTreeViewCtrl.h 2006-12-20 12:02:05.684598400 +0900 @@ -369,8 +369,8 @@ template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits> class CDonutFavoritesBarImpl : public CWindowImpl< T, TBase, TWinTraits >, - public CChevronHandler<CDonutFavoritesBarImpl>, - public CUpdateCmdUI<CDonutFavoritesBarImpl> + public CChevronHandler<CDonutFavoritesBarImpl<T, TBase, TWinTraits>>, + public CUpdateCmdUI<CDonutFavoritesBarImpl<T, TBase, TWinTraits>> { public: DECLARE_WND_CLASS_EX(NULL, 0, -1) diff -ur DonutL31_src/FavoriteMenu.h DonutL31_hacked/FavoriteMenu.h --- DonutL31_src/FavoriteMenu.h 2006-03-29 02:26:26.000000000 +0900 +++ DonutL31_hacked/FavoriteMenu.h 2006-12-20 12:02:05.764713600 +0900 @@ -32,7 +32,7 @@ } template <class _MainFrame> -class CFavoriteGroupMenu : public CExplorerMenuImpl<CFavoriteGroupMenu> +class CFavoriteGroupMenu : public CExplorerMenuImpl<CFavoriteGroupMenu<_MainFrame>> { public: _MainFrame* __m_pMainFrame; @@ -65,7 +65,7 @@ template <class _ChildFrame> -class CChildFavoriteMenu : public CFavoritesMenu<CChildFavoriteMenu> +class CChildFavoriteMenu : public CFavoritesMenu<CChildFavoriteMenu<_ChildFrame>> { public: _ChildFrame* __m_pChildFrame; diff -ur DonutL31_src/IDocHostUIHandlerDispatchImpl.h DonutL31_hacked/IDocHostUIHandlerDispatchImpl.h --- DonutL31_src/IDocHostUIHandlerDispatchImpl.h 2004-04-11 02:19:30.000000000 +0900 +++ DonutL31_hacked/IDocHostUIHandlerDispatchImpl.h 2006-12-20 12:02:05.063705600 +0900 @@ -22,7 +22,7 @@ STDMETHOD(_LocDHUHQueryInterface)(REFIID riid, void ** ppvObject) { if (InlineIsEqualUnknown(riid) || - ATL::InlineIsEqualGUID(riid, IID_IDocHostUIHandlerDispatch)) + InlineIsEqualGUID(riid, IID_IDocHostUIHandlerDispatch)) { if (ppvObject == NULL) return E_POINTER; diff -ur DonutL31_src/MtlBrowser.h DonutL31_hacked/MtlBrowser.h --- DonutL31_src/MtlBrowser.h 2006-10-21 02:03:50.000000000 +0900 +++ DonutL31_hacked/MtlBrowser.h 2006-12-20 12:46:38.758289600 +0900 @@ -710,7 +710,7 @@ template <class T, UINT nID> class IWebBrowserEvents2Impl : - public IDispEventSimpleImpl<nID, IWebBrowserEvents2Impl, &DIID_DWebBrowserEvents2>, + public IDispEventSimpleImpl<nID, IWebBrowserEvents2Impl<T, nID>, &DIID_DWebBrowserEvents2>, public IWebBrowserEvents2Base { public: @@ -798,27 +798,27 @@ // Sink map and event handlers BEGIN_SINK_MAP(thisClass) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 102, __StatusTextChange, &StatusTextChangeInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 108, __ProgressChange, &ProgressChangeInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 105, __CommandStateChange, &CommandStateChangeInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 106, __DownloadBegin, &DownloadBeginInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 104, __DownloadComplete, &DownloadBeginInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 113, __TitleChange, &StatusTextChangeInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 252, __NavigateComplete2, &NavigateComlete2Info) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 250, __BeforeNavigate2, &BeforeNavigate2Info) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 112, __PropertyChange, &StatusTextChangeInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 251, __NewWindow2, &NewWindow2Info) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 259, __DocumentComplete, &NavigateComlete2Info) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 253, __OnQuit, &DownloadBeginInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 254, __OnVisible, &OnVisibleInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 255, __OnToolBar, &OnVisibleInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 256, __OnMenuBar, &OnVisibleInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 257, __OnStatusBar, &OnVisibleInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 258, __OnFullScreen, &OnVisibleInfo) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 260, __OnTheaterMode, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 102, &__StatusTextChange, &StatusTextChangeInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 108, &__ProgressChange, &ProgressChangeInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 105, &__CommandStateChange, &CommandStateChangeInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 106, &__DownloadBegin, &DownloadBeginInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 104, &__DownloadComplete, &DownloadBeginInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 113, &__TitleChange, &StatusTextChangeInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 252, &__NavigateComplete2, &NavigateComlete2Info) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 250, &__BeforeNavigate2, &BeforeNavigate2Info) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 112, &__PropertyChange, &StatusTextChangeInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 251, &__NewWindow2, &NewWindow2Info) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 259, &__DocumentComplete, &NavigateComlete2Info) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 253, &__OnQuit, &DownloadBeginInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 254, &__OnVisible, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 255, &__OnToolBar, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 256, &__OnMenuBar, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 257, &__OnStatusBar, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 258, &__OnFullScreen, &OnVisibleInfo) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 260, &__OnTheaterMode, &OnVisibleInfo) // --20-- - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 269, __OnSetSecureLockIcon, &OnSecureLockIcon) - SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 272, __OnPrivacyImpactedStateChange, &PrivacyImpactedStateChange) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 269, &__OnSetSecureLockIcon, &OnSecureLockIcon) + SINK_ENTRY_INFO(nID, DIID_DWebBrowserEvents2, 272, &__OnPrivacyImpactedStateChange, &PrivacyImpactedStateChange) // ENDE END_SINK_MAP() diff -ur DonutL31_src/MtlCtrlw.h DonutL31_hacked/MtlCtrlw.h --- DonutL31_src/MtlCtrlw.h 2001-09-11 12:24:08.000000000 +0900 +++ DonutL31_hacked/MtlCtrlw.h 2006-12-20 12:03:13.411985600 +0900 @@ -207,7 +207,7 @@ template <class T, class TBase = CCommandBarCtrl2Base, class TWinTraits = CControlWinTraits> class ATL_NO_VTABLE CCommandBarCtrl2Impl : public CWindowImpl< T, TBase, TWinTraits >, - public CTrackMouseLeave<CCommandBarCtrl2Impl> + public CTrackMouseLeave<CCommandBarCtrl2Impl<T, TBase, TWinTraits>> { public: DECLARE_WND_CLASS_EX(NULL, 0, -1) diff -ur DonutL31_src/MtlDragDrop.h DonutL31_hacked/MtlDragDrop.h --- DonutL31_src/MtlDragDrop.h 2001-09-11 12:24:08.000000000 +0900 +++ DonutL31_hacked/MtlDragDrop.h 2006-12-20 12:03:13.411985600 +0900 @@ -87,7 +87,7 @@ STDMETHOD(_LocDSQueryInterface)(REFIID riid, void ** ppvObject) { if (InlineIsEqualUnknown(riid) || - ATL::InlineIsEqualGUID(riid, IID_IDropSource)) + InlineIsEqualGUID(riid, IID_IDropSource)) { if (ppvObject == NULL) return E_POINTER; @@ -452,7 +452,7 @@ STDMETHOD(_LocDTQueryInterface)(REFIID riid, void ** ppvObject) { if (InlineIsEqualUnknown(riid) || - ATL::InlineIsEqualGUID(riid, IID_IDropTarget)) + InlineIsEqualGUID(riid, IID_IDropTarget)) { if (ppvObject == NULL) return E_POINTER; diff -ur DonutL31_src/MtlFile.h DonutL31_hacked/MtlFile.h --- DonutL31_src/MtlFile.h 2001-09-11 12:24:08.000000000 +0900 +++ DonutL31_hacked/MtlFile.h 2006-12-20 12:03:13.411985600 +0900 @@ -342,7 +342,8 @@ LPTSTR lpsz = (LPTSTR)_alloca(nLen * sizeof(TCHAR)); ::lstrcpy(lpsz, str_); - for (LPCTSTR lpszRunner = lpsz; *lpszRunner != _T('\0'); lpszRunner = ::CharNext(lpszRunner)) { + LPCTSTR lpszRunner; + for (lpszRunner = lpsz; *lpszRunner != _T('\0'); lpszRunner = ::CharNext(lpszRunner)) { if (!Mtl_isalpha(*lpszRunner)) break; } @@ -359,7 +360,8 @@ LPTSTR lpsz = (LPTSTR)_alloca(nLen * sizeof(TCHAR)); ::lstrcpy(lpsz, str); - for (LPCTSTR lpszRunner = lpsz; *lpszRunner != _T('\0'); lpszRunner = ::CharNext(lpszRunner)) { + LPCTSTR lpszRunner; + for (lpszRunner = lpsz; *lpszRunner != _T('\0'); lpszRunner = ::CharNext(lpszRunner)) { if (Mtl_isalpha(*lpszRunner)) break; } diff -ur DonutL31_src/MtlMisc.h DonutL31_hacked/MtlMisc.h --- DonutL31_src/MtlMisc.h 2005-11-23 09:41:54.000000000 +0900 +++ DonutL31_hacked/MtlMisc.h 2006-12-20 11:56:33.982376000 +0900 @@ -691,7 +691,8 @@ // handle just ellipsis if((cchLen < (cchMidEllipsis + cchEndEllipsis))) { - for(int i = 0; i < cchLen - 1; ++i) + int i; + for(i = 0; i < cchLen - 1; ++i) lpstrOut[i] = ((i + 1) == cchMidEllipsis) ? chSlash : _T('.'); lpstrOut[i] = 0; return true; diff -ur DonutL31_src/MtlWeb.h DonutL31_hacked/MtlWeb.h --- DonutL31_src/MtlWeb.h 2006-10-21 02:09:34.000000000 +0900 +++ DonutL31_hacked/MtlWeb.h 2006-12-20 12:02:05.384166400 +0900 @@ -355,7 +355,7 @@ } #endif -inline MtlShowInternetOptions() +inline void MtlShowInternetOptions() {// this is modeless ::ShellExecute(0, _T("open"), _T("control.exe"), _T("inetcpl.cpl"), _T("."), SW_SHOW); } @@ -1255,7 +1255,7 @@ void MtlGetFavoritesOrder(CFavoritesOrder& order, const CString& strDirPath) { ATLASSERT(!strDirPath.IsEmpty()); - const s_unknownOffset = 12; + const int s_unknownOffset = 12; CString strRoot; if (!MtlGetFavoritesFolder(strRoot)) diff -ur DonutL31_src/Rapt.h DonutL31_hacked/Rapt.h --- DonutL31_src/Rapt.h 2003-09-03 01:07:46.000000000 +0900 +++ DonutL31_hacked/Rapt.h 2006-12-20 12:35:17.608844800 +0900 @@ -138,7 +138,7 @@ lstrcpy(s_szExternalAppPath[i], _T("")); pr.Open(g_szIniFileName, _T("RAPT")); - for (i = 0; i < 10; ++i) { + for (int i = 0; i < 10; ++i) { CString strKey; strKey.Format(_T("ExternalAppPath%d"), i); pr.QueryValue(s_szExternalAppPath[i], strKey, &dwCount); @@ -379,7 +379,7 @@ // bVisible[i] == false なMenuID[i]をメニューから削除する // ただし、全部falseの場合は、0番目のみ表示させる int nBegin = 1; - for (i = 0; i < MAX_SEARCHURL_COUNT; ++i) { + for (int i = 0; i < MAX_SEARCHURL_COUNT; ++i) { if (bVisible[i]) { nBegin = 0; break; @@ -387,7 +387,7 @@ } if (nBegin != 0) menu->ModifyMenu(hMenuID[0], MF_BYCOMMAND, hMenuID[0], _T("&0 (none)")); - for (i = nBegin; i < MAX_SEARCHURL_COUNT; ++i) { + for (int i = nBegin; i < MAX_SEARCHURL_COUNT; ++i) { if (!bVisible[i]) menu->RemoveMenu(hMenuID[i], MF_BYCOMMAND); } @@ -425,7 +425,7 @@ // bVisible[i] == false なMenuID[i]をメニューから削除する // ただし、全部falseの場合は、0番目のみ表示させる int nBegin = 1; - for (i = 0; i < 10; ++i) { + for (int i = 0; i < 10; ++i) { if (bVisible[i]) { nBegin = 0; break; @@ -433,7 +433,7 @@ } if (nBegin > 0) menu->ModifyMenu(hMenuID[0], MF_BYCOMMAND, hMenuID[0], _T("&0 (none)")); - for (i = nBegin; i < 10; ++i) { + for (int i = nBegin; i < 10; ++i) { if (!bVisible[i]) menu->RemoveMenu(hMenuID[i], MF_BYCOMMAND); } diff -ur DonutL31_src/TabCtrl.h DonutL31_hacked/TabCtrl.h --- DonutL31_src/TabCtrl.h 2006-06-17 14:37:00.000000000 +0900 +++ DonutL31_hacked/TabCtrl.h 2006-12-20 12:02:05.814785600 +0900 @@ -267,7 +267,7 @@ template <class T, class TBase = CTabCtrl2Base, class TWinTraits = CControlWinTraits> class ATL_NO_VTABLE CTabCtrl2Impl : public CWindowImpl< T, TBase, TWinTraits >, - public CTrackMouseLeave<CTabCtrl2Impl> + public CTrackMouseLeave<CTabCtrl2Impl<T, TBase, TWinTraits>> { public: DECLARE_WND_CLASS_EX(NULL, CS_DBLCLKS, -1)
- 最初は Donut.dsw をダブルクリックして VC++ を起動
-- 「変換してこのプロジェクトを開きますか?」で「はい」を選択
-- [ビルド] -> [構成マネージャ] -> [アクティブ ソリューション構成] を Debug から Release に変更
- (開発環境や個人の好みに応じて)最適化オプションを変更
-- [プロジェクト] -> [Donut のプロパティ] -> [構成プロパティ] -> [C/C++] -> [コマンドライン] -> [追加のオプション] を /O /Zm400 から /O2 /GS- /fp:fast /GL /GA /arch:SSE2 /Zm400 に変更
-- [プロジェクト] -> [Donut のプロパティ] -> [構成プロパティ] -> [リンカ] -> [コマンドライン] -> [追加のオプション] に /LTCG を追加
- [ツール] -> [オプション] -> [プロジェクトおよびソリューション] -> [VC++ ディレクトリ] -> [ディレクトリを表示するプロジェクト]
-- [インクルードファイル] を選択し以下を追加
--- C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
--- C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl
--- C:\Program Files\WTL80\include\atl
-- [ライブラリファイル] を選択し以下を追加
--- C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
- [ビルド] -> [ソリューションのビルド] を実行
-- Release\Donut.exe が出来れば O.K.
- 以後は Donut.sln をダブルクリックして Visual C++ を起動すること