dcdd144598 2011-02-23 kinaba: #include "stdafx.h" dcdd144598 2011-02-23 kinaba: #include "rsrc/resource.h" dcdd144598 2011-02-23 kinaba: #include "kilib/kilib.h" dcdd144598 2011-02-23 kinaba: #include "OpenSaveDlg.h" dcdd144598 2011-02-23 kinaba: using namespace ki; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: // �����R�[�h���X�g dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: CharSetList::CharSetList() dcdd144598 2011-02-23 kinaba: : list_( 30 ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: static const TCHAR* const lnmJp[] = { dcdd144598 2011-02-23 kinaba: TEXT("��������"), dcdd144598 2011-02-23 kinaba: TEXT("���{��(ShiftJIS)"), dcdd144598 2011-02-23 kinaba: TEXT("���{��(EUC)"), dcdd144598 2011-02-23 kinaba: TEXT("���{��(ISO-2022-JP)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-5"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-7"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-8"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-8N"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16BE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16LE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16BE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16LE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32BE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32LE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32BE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32LE"), dcdd144598 2011-02-23 kinaba: TEXT("����"), dcdd144598 2011-02-23 kinaba: TEXT("����"), dcdd144598 2011-02-23 kinaba: TEXT("�؍���(EUC-KR)"), dcdd144598 2011-02-23 kinaba: TEXT("�؍���(ISO-2022-KR)"), dcdd144598 2011-02-23 kinaba: TEXT("�؍���(Johab)"), dcdd144598 2011-02-23 kinaba: TEXT("������(GB2312)"), dcdd144598 2011-02-23 kinaba: TEXT("������(ISO-2022-CN)"), dcdd144598 2011-02-23 kinaba: TEXT("������(HZ)"), dcdd144598 2011-02-23 kinaba: TEXT("������(Big5)"), dcdd144598 2011-02-23 kinaba: TEXT("�L������(Windows)"), dcdd144598 2011-02-23 kinaba: TEXT("�L������(KOI8-R)"), dcdd144598 2011-02-23 kinaba: TEXT("�L������(KOI8-U)"), dcdd144598 2011-02-23 kinaba: TEXT("�^�C��"), dcdd144598 2011-02-23 kinaba: TEXT("�g���R��"), dcdd144598 2011-02-23 kinaba: TEXT("�o���g��"), dcdd144598 2011-02-23 kinaba: TEXT("�x�g�i����"), dcdd144598 2011-02-23 kinaba: TEXT("�M���V����"), dcdd144598 2011-02-23 kinaba: TEXT("MSDOS(us)") dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: static const TCHAR* const lnmEn[] = { dcdd144598 2011-02-23 kinaba: TEXT("AutoDetect"), dcdd144598 2011-02-23 kinaba: TEXT("Japanese(ShiftJIS)"), dcdd144598 2011-02-23 kinaba: TEXT("Japanese(EUC)"), dcdd144598 2011-02-23 kinaba: TEXT("Japanese(ISO-2022-JP)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-5"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-7"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-8"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-8N"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16BE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16LE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16BE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-16LE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32BE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32LE(BOM)"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32BE"), dcdd144598 2011-02-23 kinaba: TEXT("UTF-32LE"), dcdd144598 2011-02-23 kinaba: TEXT("Latin-1"), dcdd144598 2011-02-23 kinaba: TEXT("Latin-2"), dcdd144598 2011-02-23 kinaba: TEXT("Korean(EUC-KR)"), dcdd144598 2011-02-23 kinaba: TEXT("Korean(ISO-2022-KR)"), dcdd144598 2011-02-23 kinaba: TEXT("Korean(Johab)"), dcdd144598 2011-02-23 kinaba: TEXT("Chinese(GB2312)"), dcdd144598 2011-02-23 kinaba: TEXT("Chinese(ISO-2022-CN)"), dcdd144598 2011-02-23 kinaba: TEXT("Chinese(HZ)"), dcdd144598 2011-02-23 kinaba: TEXT("Chinese(Big5)"), dcdd144598 2011-02-23 kinaba: TEXT("Cyrillic(Windows)"), dcdd144598 2011-02-23 kinaba: TEXT("Cyrillic(KOI8-R)"), dcdd144598 2011-02-23 kinaba: TEXT("Cyrillic(KOI8-U)"), dcdd144598 2011-02-23 kinaba: TEXT("Thai"), dcdd144598 2011-02-23 kinaba: TEXT("Turkish"), dcdd144598 2011-02-23 kinaba: TEXT("Baltic"), dcdd144598 2011-02-23 kinaba: TEXT("Vietnamese"), dcdd144598 2011-02-23 kinaba: TEXT("Greek"), dcdd144598 2011-02-23 kinaba: TEXT("MSDOS(us)") dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: static const TCHAR* const snm[] = { dcdd144598 2011-02-23 kinaba: TEXT(""), dcdd144598 2011-02-23 kinaba: TEXT("SJIS"), dcdd144598 2011-02-23 kinaba: TEXT("EUC"), dcdd144598 2011-02-23 kinaba: TEXT("JIS"), dcdd144598 2011-02-23 kinaba: TEXT("UTF5"), dcdd144598 2011-02-23 kinaba: TEXT("UTF7"), dcdd144598 2011-02-23 kinaba: TEXT("UTF8"), dcdd144598 2011-02-23 kinaba: TEXT("UTF8"), dcdd144598 2011-02-23 kinaba: TEXT("U16B"), dcdd144598 2011-02-23 kinaba: TEXT("U16L"), dcdd144598 2011-02-23 kinaba: TEXT("U16B"), dcdd144598 2011-02-23 kinaba: TEXT("U16L"), dcdd144598 2011-02-23 kinaba: TEXT("U32B"), dcdd144598 2011-02-23 kinaba: TEXT("U32L"), dcdd144598 2011-02-23 kinaba: TEXT("U32B"), dcdd144598 2011-02-23 kinaba: TEXT("U32L"), dcdd144598 2011-02-23 kinaba: TEXT("LTN1"), dcdd144598 2011-02-23 kinaba: TEXT("LTN2"), dcdd144598 2011-02-23 kinaba: TEXT("UHC"), dcdd144598 2011-02-23 kinaba: TEXT("I2KR"), dcdd144598 2011-02-23 kinaba: TEXT("Jhb"), dcdd144598 2011-02-23 kinaba: TEXT("GBK"), dcdd144598 2011-02-23 kinaba: TEXT("I2CN"), dcdd144598 2011-02-23 kinaba: TEXT("HZ"), dcdd144598 2011-02-23 kinaba: TEXT("BIG5"), dcdd144598 2011-02-23 kinaba: TEXT("CYRL"), dcdd144598 2011-02-23 kinaba: TEXT("KO8R"), dcdd144598 2011-02-23 kinaba: TEXT("KO8U"), dcdd144598 2011-02-23 kinaba: TEXT("THAI"), dcdd144598 2011-02-23 kinaba: TEXT("TRK"), dcdd144598 2011-02-23 kinaba: TEXT("BALT"), dcdd144598 2011-02-23 kinaba: TEXT("VTNM"), dcdd144598 2011-02-23 kinaba: TEXT("GRK"), dcdd144598 2011-02-23 kinaba: TEXT("DOS") dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // ���{����Ȃ���{��\����I�� dcdd144598 2011-02-23 kinaba: const TCHAR* const * lnm = (::GetACP()==932 ? lnmJp : lnmEn); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // �������������̖ʓ|�Ȃ̂ŒZ�k�\�L(^^; dcdd144598 2011-02-23 kinaba: CsInfo cs; dcdd144598 2011-02-23 kinaba: #define Enroll(_id,_nm) cs.ID=_id, \ dcdd144598 2011-02-23 kinaba: cs.longName=lnm[_nm], cs.shortName=snm[_nm], \ dcdd144598 2011-02-23 kinaba: cs.type=LOAD|SAVE, list_.Add( cs ) dcdd144598 2011-02-23 kinaba: #define EnrollS(_id,_nm) cs.ID=_id, \ dcdd144598 2011-02-23 kinaba: cs.longName=lnm[_nm], cs.shortName=snm[_nm], \ dcdd144598 2011-02-23 kinaba: cs.type=SAVE, list_.Add( cs ) dcdd144598 2011-02-23 kinaba: #define EnrollL(_id,_nm) cs.ID=_id, \ dcdd144598 2011-02-23 kinaba: cs.longName=lnm[_nm], cs.shortName=snm[_nm], \ dcdd144598 2011-02-23 kinaba: cs.type=LOAD, list_.Add( cs ) dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // �K�X�o�^ dcdd144598 2011-02-23 kinaba: EnrollL( AutoDetect,0 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(932) ) Enroll( SJIS, 1 ), dcdd144598 2011-02-23 kinaba: Enroll( EucJP, 2 ), dcdd144598 2011-02-23 kinaba: Enroll( IsoJP, 3 ); dcdd144598 2011-02-23 kinaba: /* if( always ) */ Enroll( UTF5, 4 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF7, 5 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF8, 6 ); dcdd144598 2011-02-23 kinaba: EnrollS( UTF8N, 7 ); dcdd144598 2011-02-23 kinaba: EnrollS( UTF16b, 8 ); dcdd144598 2011-02-23 kinaba: EnrollS( UTF16l, 9 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF16BE, 10 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF16LE, 11 ); dcdd144598 2011-02-23 kinaba: EnrollS( UTF32b, 12 ); dcdd144598 2011-02-23 kinaba: EnrollS( UTF32l, 13 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF32BE, 14 ); dcdd144598 2011-02-23 kinaba: Enroll( UTF32LE, 15 ); dcdd144598 2011-02-23 kinaba: Enroll( Western, 16 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(28592) ) Enroll( Central, 17 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(949) ) Enroll( UHC, 18 ), dcdd144598 2011-02-23 kinaba: Enroll( IsoKR, 19 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(1361) ) Enroll( Johab, 20 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(936) ) Enroll( GBK, 21 ), dcdd144598 2011-02-23 kinaba: Enroll( IsoCN, 22 ), dcdd144598 2011-02-23 kinaba: Enroll( HZ , 23 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(950) ) Enroll( Big5 , 24 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(28595) ) Enroll( Cyrillic, 25 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(20866) ) Enroll( Koi8R, 26 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(21866) ) Enroll( Koi8U, 27 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(874) ) Enroll( Thai, 28 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(1254) ) Enroll( Turkish, 29 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(1257) ) Enroll( Baltic, 30 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(1258) ) Enroll( Vietnamese,31 ); dcdd144598 2011-02-23 kinaba: if( ::IsValidCodePage(28597) ) Enroll( Greek, 32 ); dcdd144598 2011-02-23 kinaba: Enroll( DOSUS, 33 ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // �I�� dcdd144598 2011-02-23 kinaba: #undef Enroll dcdd144598 2011-02-23 kinaba: #undef EnrollS dcdd144598 2011-02-23 kinaba: #undef EnrollL dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: int CharSetList::defaultCs() const dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: return ::GetACP(); dcdd144598 2011-02-23 kinaba: /* dcdd144598 2011-02-23 kinaba: switch( ::GetACP() ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: case 932: return SJIS; dcdd144598 2011-02-23 kinaba: case 936: return GBK; dcdd144598 2011-02-23 kinaba: case 949: return UHC; dcdd144598 2011-02-23 kinaba: case 950: return Big5; dcdd144598 2011-02-23 kinaba: default: return Western; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: */ dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ulong CharSetList::defaultCsi() const dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: return findCsi( defaultCs() ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ulong CharSetList::findCsi( int cs ) const dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: for( ulong i=0,ie=list_.size(); i<ie; ++i ) dcdd144598 2011-02-23 kinaba: if( list_[i].ID == cs ) dcdd144598 2011-02-23 kinaba: return i; dcdd144598 2011-02-23 kinaba: return 0xffffffff; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: // �u�J���v�_�C�A���O dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: namespace dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // ���I�����ɁA�J�����g�f�B���N�g�������ɖ߂� dcdd144598 2011-02-23 kinaba: class CurrentDirRecovery dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: Path cur_; dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: CurrentDirRecovery() : cur_(Path::Cur) {} dcdd144598 2011-02-23 kinaba: ~CurrentDirRecovery() { ::SetCurrentDirectory(cur_.c_str()); } dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: OpenFileDlg* OpenFileDlg::pThis; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: bool OpenFileDlg::DoModal( HWND wnd, const TCHAR* fltr, const TCHAR* fnm ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: CurrentDirRecovery cdr; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: if( fnm == NULL ) dcdd144598 2011-02-23 kinaba: filename_[0] = TEXT('\0'); dcdd144598 2011-02-23 kinaba: else dcdd144598 2011-02-23 kinaba: ::lstrcpy( filename_, fnm ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: OPENFILENAME ofn = {sizeof(ofn)}; dcdd144598 2011-02-23 kinaba: ofn.hwndOwner = wnd; dcdd144598 2011-02-23 kinaba: ofn.hInstance = app().hinst(); dcdd144598 2011-02-23 kinaba: ofn.lpstrFilter = fltr; dcdd144598 2011-02-23 kinaba: ofn.lpstrFile = filename_; dcdd144598 2011-02-23 kinaba: ofn.nMaxFile = countof(filename_); dcdd144598 2011-02-23 kinaba: ofn.lpTemplateName = MAKEINTRESOURCE(IDD_OPENFILEHOOK); dcdd144598 2011-02-23 kinaba: ofn.lpfnHook = OfnHook; dcdd144598 2011-02-23 kinaba: ofn.Flags = OFN_FILEMUSTEXIST | dcdd144598 2011-02-23 kinaba: OFN_HIDEREADONLY | dcdd144598 2011-02-23 kinaba: OFN_EXPLORER | dcdd144598 2011-02-23 kinaba: OFN_ENABLESIZING | dcdd144598 2011-02-23 kinaba: OFN_ENABLEHOOK | dcdd144598 2011-02-23 kinaba: OFN_ENABLETEMPLATE; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: pThis = this; dcdd144598 2011-02-23 kinaba: return ( ::GetOpenFileName(&ofn) != 0 ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: UINT_PTR CALLBACK OpenFileDlg::OfnHook( HWND dlg, UINT msg, WPARAM, LPARAM lp ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: if( msg==WM_INITDIALOG ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // �R���{�{�b�N�X�߂āA�u�����I���v��I�� dcdd144598 2011-02-23 kinaba: ComboBox cb( dlg, IDC_CODELIST ); dcdd144598 2011-02-23 kinaba: const CharSetList& csl = pThis->csl_; dcdd144598 2011-02-23 kinaba: for( ulong i=0; i<csl.size(); ++i ) dcdd144598 2011-02-23 kinaba: if( csl[i].type & 2 ) // 2:=LOAD dcdd144598 2011-02-23 kinaba: cb.Add( csl[i].longName ); dcdd144598 2011-02-23 kinaba: cb.Select( csl[0].longName ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: else if( msg==WM_NOTIFY ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // OK�������ꂽ��A�����R�[�h�̑I�����L�^ dcdd144598 2011-02-23 kinaba: if( reinterpret_cast<NMHDR*>(lp)->code==CDN_FILEOK ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: ulong j=0, i=ComboBox(dlg,IDC_CODELIST).GetCurSel(); dcdd144598 2011-02-23 kinaba: for(;;++j,--i) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: while( !(pThis->csl_[j].type & 2) ) // !LOAD dcdd144598 2011-02-23 kinaba: ++j; dcdd144598 2011-02-23 kinaba: if( i==0 ) dcdd144598 2011-02-23 kinaba: break; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: pThis->csIndex_ = j; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: return FALSE; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: // �u�ۑ��v�_�C�A���O dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: SaveFileDlg* SaveFileDlg::pThis; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: bool SaveFileDlg::DoModal( HWND wnd, const TCHAR* fltr, const TCHAR* fnm ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: CurrentDirRecovery cdr; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: if( fnm == NULL ) dcdd144598 2011-02-23 kinaba: filename_[0] = TEXT('\0'); dcdd144598 2011-02-23 kinaba: else dcdd144598 2011-02-23 kinaba: ::lstrcpy( filename_, fnm ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: OPENFILENAME ofn = {sizeof(ofn)}; dcdd144598 2011-02-23 kinaba: ofn.hwndOwner = wnd; dcdd144598 2011-02-23 kinaba: ofn.hInstance = app().hinst(); dcdd144598 2011-02-23 kinaba: ofn.lpstrFilter = fltr; dcdd144598 2011-02-23 kinaba: ofn.lpstrFile = filename_; dcdd144598 2011-02-23 kinaba: ofn.nMaxFile = countof(filename_); dcdd144598 2011-02-23 kinaba: ofn.lpTemplateName = MAKEINTRESOURCE(IDD_SAVEFILEHOOK); dcdd144598 2011-02-23 kinaba: ofn.lpfnHook = OfnHook; dcdd144598 2011-02-23 kinaba: ofn.Flags = OFN_HIDEREADONLY | dcdd144598 2011-02-23 kinaba: OFN_PATHMUSTEXIST | dcdd144598 2011-02-23 kinaba: OFN_EXPLORER | dcdd144598 2011-02-23 kinaba: OFN_ENABLESIZING | dcdd144598 2011-02-23 kinaba: OFN_ENABLEHOOK | dcdd144598 2011-02-23 kinaba: OFN_ENABLETEMPLATE | dcdd144598 2011-02-23 kinaba: OFN_OVERWRITEPROMPT; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: pThis = this; dcdd144598 2011-02-23 kinaba: return ( ::GetSaveFileName(&ofn) != 0 ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: UINT_PTR CALLBACK SaveFileDlg::OfnHook( HWND dlg, UINT msg, WPARAM, LPARAM lp ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: if( msg==WM_INITDIALOG ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // �R���{�{�b�N�X�߂āA�K�Ȃ̂�I�� dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: ComboBox cb( dlg, IDC_CODELIST ); dcdd144598 2011-02-23 kinaba: const CharSetList& csl = pThis->csl_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: for( ulong i=0; i<csl.size(); ++i ) dcdd144598 2011-02-23 kinaba: if( csl[i].type & 1 ) // 1:=SAVE dcdd144598 2011-02-23 kinaba: cb.Add( csl[i].longName ); dcdd144598 2011-02-23 kinaba: cb.Select( csl[pThis->csIndex_].longName ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: ComboBox cb( dlg, IDC_CRLFLIST ); dcdd144598 2011-02-23 kinaba: static const TCHAR* const lbList[] = { dcdd144598 2011-02-23 kinaba: TEXT("CR"), dcdd144598 2011-02-23 kinaba: TEXT("LF"), dcdd144598 2011-02-23 kinaba: TEXT("CRLF") dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: for( ulong i=0; i<countof(lbList); ++i ) dcdd144598 2011-02-23 kinaba: cb.Add( lbList[i] ); dcdd144598 2011-02-23 kinaba: cb.Select( lbList[pThis->lb_] ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: else if( msg==WM_NOTIFY ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: if( reinterpret_cast<NMHDR*>(lp)->code==CDN_FILEOK ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // OK�������ꂽ��A�����R�[�h�̑I�����L�^ dcdd144598 2011-02-23 kinaba: ulong j=0, i=ComboBox(dlg,IDC_CODELIST).GetCurSel(); dcdd144598 2011-02-23 kinaba: for(;;++j,--i) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: while( !(pThis->csl_[j].type & 1) ) // !SAVE dcdd144598 2011-02-23 kinaba: ++j; dcdd144598 2011-02-23 kinaba: if( i==0 ) dcdd144598 2011-02-23 kinaba: break; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: pThis->csIndex_ = j; dcdd144598 2011-02-23 kinaba: // ���s�R�[�h�� dcdd144598 2011-02-23 kinaba: pThis->lb_ = ComboBox(dlg,IDC_CRLFLIST).GetCurSel(); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: return FALSE; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: // ���[�e�B���e�B�[ dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ki::aarr<TCHAR> OpenFileDlg::ConnectWithNull( String lst[], int num ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: int TtlLen = 1; dcdd144598 2011-02-23 kinaba: for( int i=0; i<num; ++i ) dcdd144598 2011-02-23 kinaba: TtlLen += (lst[i].len() + 1); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: aarr<TCHAR> a( new TCHAR[TtlLen] ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: TCHAR* p = a.get(); dcdd144598 2011-02-23 kinaba: for( int i=0; i<num; ++i ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: ::lstrcpy( p, lst[i].c_str() ); dcdd144598 2011-02-23 kinaba: p += (lst[i].len() + 1); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: *p = TEXT('\0'); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: return a; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: // �u�J�������v�_�C�A���O dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ReopenDlg::ReopenDlg( const CharSetList& csl, int csi ) dcdd144598 2011-02-23 kinaba: : DlgImpl(IDD_REOPENDLG), csl_(csl), csIndex_(csi) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: void ReopenDlg::on_init() dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // �R���{�{�b�N�X�߂āA�u�����I���v��I�� dcdd144598 2011-02-23 kinaba: ComboBox cb( hwnd(), IDC_CODELIST ); dcdd144598 2011-02-23 kinaba: for( ulong i=0; i<csl_.size(); ++i ) dcdd144598 2011-02-23 kinaba: if( csl_[i].type & 1 ) // 2:=SAVE dcdd144598 2011-02-23 kinaba: cb.Add( csl_[i].longName ); dcdd144598 2011-02-23 kinaba: cb.Select( csl_[csIndex_].longName ); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: bool ReopenDlg::on_ok() dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // OK�������ꂽ��A�����R�[�h�̑I�����L�^ dcdd144598 2011-02-23 kinaba: ulong j=0, i=ComboBox(hwnd(),IDC_CODELIST).GetCurSel(); dcdd144598 2011-02-23 kinaba: for(;;++j,--i) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: while( !(csl_[j].type & 1) ) // !SAVE dcdd144598 2011-02-23 kinaba: ++j; dcdd144598 2011-02-23 kinaba: if( i==0 ) dcdd144598 2011-02-23 kinaba: break; dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: csIndex_ = j; dcdd144598 2011-02-23 kinaba: return true; dcdd144598 2011-02-23 kinaba: }