Explorer++ patch and build(compile) (explorer plus plus, explorerplus, explorer plusplus)
- 최근 정렬 방식으로 설정저장하고 새탭열기 패치하기
- last sorting method (sort by type) save and load (alignment mode remember)
- visual studio 2013(vc12) 에서 빌드
//===========
* 패치한 소스 (patched source)
//================
* 본래 소스 다운로드
https://explorerplusplus.com/download
* 필요한 추가 라이브러리
Boost C++ http://www.boost.org
- 빌드 방법 : http://codens.info/653
Pantheios logging library http://www.pantheios.org/
STLSoft libraries http://www.pantheios.org/
* 환경변수 추가
$(BOOST) C:\Program Files (x86)\boost_1_58_0
$(BOOST_LIB) %Boost%\stage\lib
$(STLSOFT) c:\stlsoft-1.9.118
$(PANTHEIOS) c:\pantheios-1.0.1-beta214
*INCLUDE
c:\pantheios-1.0.1-beta214;c:\stlsoft-1.9.118;%Boost_root%;
* LIB
%Boost_root%\stage\lib
//==================================
//분석
//추가
HASH_SORTMODEGLOBAL: m_nSortModeGlobal
HASH_SORTASCENDINGGLOBAL: m_bSortAscendingGlobal // 기준
void Explorerplusplus::OnListViewColumnClick(LPARAM lParam)
{
NMLISTVIEW *pnmlv = NULL;
pnmlv = (NMLISTVIEW *)lParam;
int nSortMode = m_pActiveShellBrowser->ColumnClicked(pnmlv->iSubItem);
m_nSortModeGlobal = nSortMode;
//설정 저장
void Explorerplusplus::CLoadSaveXML::SaveTabs(void)
{
m_pContainer->SaveTabSettingsToXML(m_pXMLDom,m_pRoot);
}
void Explorerplusplus::SaveTabSettingsToXML(MSXML2::IXMLDOMDocument *pXMLDom,
MSXML2::IXMLDOMElement *pRoot)
{
void Explorerplusplus::SaveTabSettingsToXMLnternal(MSXML2::IXMLDOMDocument *pXMLDom,MSXML2::IXMLDOMElement *pe)
{
m_pFolderView[(int)tcItem.lParam]->GetSortMode(&SortMode);
NXMLSettings::AddAttributeToNode(pXMLDom,pParentNode,_T("SortMode"),NXMLSettings::EncodeIntValue(SortMode));
//설정 로드
- 호출됨
void Explorerplusplus::CLoadSaveXML::LoadDefaultColumns(void)
{
m_pContainer->LoadDefaultColumnsFromXML(m_pXMLDom);
}
void Explorerplusplus::CLoadSaveXML::LoadState(void)
m_pContainer->LoadStateFromXML(m_pXMLDom);
int Explorerplusplus::LoadTabSettingsFromXML(MSXML2::IXMLDOMDocument *pXMLDom)
- 새탭
HRESULT Explorerplusplus::CreateNewTab(TCHAR *TabDirectory, InitialSettings_t *pSettings,TabInfo_t *pTabInfo,BOOL bSwitchToNewTab, int *pTabObjectIndex)
{
HRESULT Explorerplusplus::CreateNewTab(LPITEMIDLIST pidlDirectory, InitialSettings_t *pSettings,TabInfo_t *pTabInfo,BOOL bSwitchToNewTab, int *pTabObjectIndex)
{
is.SortMode = DEFAULT_SORT_MODE; // FSM_NAME
- 정렬
IDM_ARRANGEICONSBY_ASCENDING
LRESULT CALLBACK Explorerplusplus::CommandHandler(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
case IDM_ARRANGEICONSBY_ASCENDING:
OnSortByAscending(TRUE);
void Explorerplusplus::OnSortByAscending(BOOL bSortAscending)
m_pActiveShellBrowser->SetSortAscending(bSortAscending); IShellBrowser2
BOOL CFolderView::SetSortAscending(BOOL bAscending){ m_bSortAscending = bAscending; return m_bSortAscending;}
m_pFolderView[m_iObjectIndex]->GetSortMode(&SortMode); MyIFolderView2
HRESULT CFolderView::GetSortMode(UINT *SortMode){ *SortMode = m_SortMode; return S_OK; }
m_pFolderView[m_iObjectIndex]->SortFolder(SortMode);
HRESULT CFolderView::SortFolder(UINT SortMode){
m_SortMode = SortMode;//FSM_NAME = 1 (기본), FSM_TYPE = 4,
-
void Explorerplusplus::SetDirectorySpecificSettings(int iTab,LPITEMIDLIST pidlDirectory)
m_pFolderView[iIndexInternal]->SetSortMode(ds.dsi.SortMode);
HRESULT CFolderView::SetSortMode(UINT SortMode){ m_SortMode = SortMode; return S_OK; }
//==================================
//에러 처리
//==================================
PANTHEIOS Visual C++ version not supported visual studio 2013
pantheios-1_0_1-beta214-MSVC2013-patch.diff 대로 수정
http://sourceforge.net/p/pantheios/patches/9/
windows diff patch
//==================================
Error 15 error LNK1104: cannot open file 'pantheios.1.util.vc12.widestring.mt.debug.lib' D:\Projects\explorer++_1.3.5_src\Explorer++\Explorer++\LINK Explorer++
-> 해결 방법 : PANTHEIOS 라이브러리 빌드 (컴파일) 방법
http://sourceforge.net/p/pantheios/patches/9/ 에서 make 파일 다운로드
make 파일 수정
CC_F_WARNING_ERR = -WX-
CPPC_F_WARNING_ERR = -WX-
C:\pantheios-1.0.1-beta214\build\vc12복사 -> 이동 -> cmd.exe
> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
> nmake build
- 64bit 빌드 방법
> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
> nmake build
//==================================
iterator_helper.hpp
7 IntelliSense: #error directive: reverse_iterator form not recognised c:\stlsoft-1.9.118\include\stlsoft\util\std\iterator_helper.hpp 475 4 Explorer++
stlsoft-1_9_117-MSVC2013-patch.diff 대로 수정
http://sourceforge.net/p/stlsoft/patches/2/
//==================================
error RC2104 : undefined keyword or key name $WCREV$
-> Version.h 수정
//==================================
* Version.h 파일이 없는 문제
-> Version.h.tmpl 파일을 Version.h로 복사
//==================================
error C1189: #error : Dinkumware C++ Library version unrecognised: are you using a version of VC++ later than 10.0? c:\stlsoft-1.9.118\include\stlsoft\util\std\library_discriminator.hpp 351 1 Explorer++
STLsoft 1.9 compilation error: reverse_iterator form not recognised Leave a comment
-> 원인 : STLSOFT 가 vc10이상에서 컴파일 안됨
-> 진짜원인 : Dinkumware 버전을 제대로 판단못함
http://binglongx.com/2010/08/27/stlsoft-1-9-compilation-error-reverse_iterator-form-not-recognised/
//#include <yvals.h> //_CPPLIB_VER 정의됨
VC버전 (9), 10, 11, 12
_CPPLIB_VER - - 310 313 405 503/5 520 540, 610 //yval.h
-> 해결방법 :
C:\stlsoft-1.9.118\include\stlsoft\util\std\library_discriminator.hpp 수정
#define STLSOFT_CF_DINKUMWARE_VC_VERSION_12_0 (0x0c00)//293행 추가
//349행에 추가
# elif _CPPLIB_VER <= 610
/* Version 120 */
# ifdef STLSOFT_COMPILE_VERBOSE
# pragma message(" Dinkumware version 12.0")
# endif /* STLSOFT_COMPILE_VERBOSE */
# define STLSOFT_CF_STD_LIBRARY_DINKUMWARE_VC_VERSION STLSOFT_CF_DINKUMWARE_VC_VERSION_12_0
//==================================
Error 106 error MSB3073: The command "subwcrev.exe "D:\Projects\explorer++_1.3.5_src\Explorer++\.." "D:\Projects\explorer++_1.3.5_src\Explorer++\Explorer++\Version.h.tmpl" "D:\Projects\explorer++_1.3.5_src\Explorer++\Explorer++\Version.h"
:VCEnd" exited with code 9009.
-> 원인 : tortoisesvn 설치 요구
-> 해결 : 주석처리 rem
//==================================
MSXML2 IntelliSense: name followed by must be a class or namespace name
//==================================
IAsyncOperation class undefined windows 8
https://msdn.microsoft.com/en-us/library/windows/desktop/bb776309%28v=vs.85%29.aspx
- 원인 : Win 8 SDK 부터 IAsyncOperation 가 IDataObjectAsyncCapability 로 바뀜
Windows::Foundation::IAsyncOperation<T> 와 충돌되서
- 해결방법 :
- 방법1 : SDK를 Win7로 변경
- 방법2 : IAsyncOperation 를 IDataObjectAsyncCapability 로 변경
#if _MSC_VER >= 1700
#define IAsyncOperation IDataObjectAsyncCapability
#define IID_IAsyncOperation IID_IDataObjectAsyncCapability
#endif
//참고
https://github.com/mozilla-services/services-central-legacy/blob/master/widget/windows/nsDataObj.h
//================================
에러 : windows 7.1 sdk (.net 4.0) install ERROR in windows 8.1 (설치 문제 발생)
DDSet_Error: Patch Hooks: Missing required property 'ProductFamily': Setup cannot continue.
- 해결방법 : Visual Studio 2010 Redistributable 를 제거한다
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/6e6c8a17-1666-42fa-9b5b-dfc21845d2f9/error-installing-windows-7-sdk-71-with-vs2008-vs2010-premium-on-win-7-32bit?forum=windowssdk
'Code > Desktop' 카테고리의 다른 글
VC6에서 디버깅시 Access Violation 해결방법 (1) | 2016.03.15 |
---|---|
프로그래밍 잡지(웹진) 리스트 (0) | 2015.08.19 |
디버깅 심볼 다운로드 방법 (0) | 2015.05.15 |
윈도우 10 에 Visual Studio 6 설치 방법 (9) | 2015.05.13 |
Windows 8.1 , Visual Studio 2013 버전별 기능 비교(다운로드) (1) | 2015.05.01 |