// MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "BrowsDlg.h" #include "Demo.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CDemo theApp; #define SORT_DEFAULT_NONE 1 #define SORT_ASCENDING 2 #define SORT_DESCENDING 3 ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_QUERYNEWPALETTE() ON_WM_PALETTECHANGED() ON_WM_SYSCOLORCHANGE() ON_UPDATE_COMMAND_UI(ID_INDICATOR_FILENAME, OnUpdateIndicatorFileName) ON_UPDATE_COMMAND_UI(ID_INDICATOR_SIZE, OnUpdateIndicatorSize) ON_UPDATE_COMMAND_UI(ID_INDICATOR_BPP, OnUpdateIndicatorBPP) ON_UPDATE_COMMAND_UI(ID_INDICATOR_ZOOMPERCENT, OnUpdateIndicatorZoomPercent) ON_UPDATE_COMMAND_UI(ID_INDICATOR_MEMSIZE, OnUpdateIndicatorMemSize) ON_COMMAND(ID_FILE_BROWSE, OnFileBrowse) ON_WM_CLOSE() ON_COMMAND(ID_PREF_IMGLST_STOPONERR, OnPrefImglstStopOnErr) ON_UPDATE_COMMAND_UI(ID_PREF_IMGLST_STOPONERR, OnUpdatePrefImglstStopOnErr) ON_COMMAND(ID_PREF_IMGLST_INCSUBDIR, OnPrefImglstIncSubDir) ON_UPDATE_COMMAND_UI(ID_PREF_IMGLST_INCSUBDIR, OnUpdatePrefImglstIncSubDir) ON_COMMAND(ID_PREF_IMGLST_EXPANDMULPAGE, OnPrefImglstExpandMulPage) ON_UPDATE_COMMAND_UI(ID_PREF_IMGLST_EXPANDMULPAGE, OnUpdatePrefImglstExpandMulPage) ON_COMMAND(ID_IMAGELIST_SHOWSEL_COLOR, OnImagelistShowSelColor) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SHOWSEL_COLOR, OnUpdateImagelistShowSelColor) ON_COMMAND(ID_IMAGELIST_SHOWSEL_BUTTON, OnImagelistShowSelButton) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SHOWSEL_BUTTON, OnUpdateImagelistShowSelButton) ON_COMMAND(ID_IMAGELIST_SCROLLSTYLE_VERTICAL, OnImagelistScrollStyleVertical) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SCROLLSTYLE_VERTICAL, OnUpdateImagelistScrollStyleVertical) ON_COMMAND(ID_IMAGELIST_SCROLLSTYLE_HORIZONTAL, OnImagelistScrollStyleHorizontal) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SCROLLSTYLE_HORIZONTAL, OnUpdateImagelistScrollStyleHorizontal) ON_COMMAND(ID_IMAGELIST_ALLOWSEL_NONE, OnImagelistAllowSelNone) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_ALLOWSEL_NONE, OnUpdateImagelistAllowSelNone) ON_COMMAND(ID_IMAGELIST_ALLOWSEL_SINGLE, OnImagelistAllowSelSingle) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_ALLOWSEL_SINGLE, OnUpdateImagelistAllowSelSingle) ON_COMMAND(ID_IMAGELIST_ALLOWSEL_MULTI, OnImagelistAllowSelMulti) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_ALLOWSEL_MULTI, OnUpdateImagelistAllowSelMulti) ON_COMMAND(ID_IMAGELIST_SORT_ASCENDING, OnImagelistSortAscending) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SORT_ASCENDING, OnUpdateImagelistSortAscending) ON_COMMAND(ID_IMAGELIST_SORT_DESCENDING, OnImagelistSortDescending) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_SORT_DESCENDING, OnUpdateImagelistSortDescending) ON_COMMAND(ID_IMAGELIST_INSERT, OnImagelistInsert) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_INSERT, OnUpdateImagelistInsert) ON_COMMAND(ID_IMAGELIST_REMOVE, OnImagelistRemove) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_REMOVE, OnUpdateImagelistRemove) ON_COMMAND(ID_IMAGELIST_DISPLAYTEXT, OnImagelistDisplayText) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_DISPLAYTEXT, OnUpdateImagelistDisplayText) ON_COMMAND(ID_IMAGELIST_ENABLEKEYBOARD, OnImageListEnableKeyboard) ON_UPDATE_COMMAND_UI(ID_IMAGELIST_ENABLEKEYBOARD, OnUpdateImagelistEnableKeyboard) ON_WM_PALETTEISCHANGING() //}}AFX_MSG_MAP END_MESSAGE_MAP() static UINT indicators[] = { ID_INDICATOR_FILENAME, ID_INDICATOR_SIZE, ID_INDICATOR_BPP, ID_INDICATOR_ZOOMPERCENT, ID_INDICATOR_MEMSIZE, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here m_pBrowseDlg=NULL; m_bStopOnErr = false; m_bIncSubDir = false; m_bExpandMulti = false; m_bIsButtonSelection = false; m_bIsVerticalScroll = true; m_bDisplayText = true; m_nAllowSelection = ALLOWSELECTION_SINGLE; m_nSort = SORT_DEFAULT_NONE; m_bEnableKeyboard = false; } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Remove this if you don't want tool tips or a resizeable toolbar m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // TODO: Delete these three lines if you don't want the toolbar to // be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CMDIFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CMDIFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CMDIFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers BOOL CMainFrame::OnQueryNewPalette() { CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd) { CView* pView = pMDIChildWnd->GetActiveView(); if(pView) { pView->SendMessage(WM_HANDLEPALETTE,0,FALSE); return TRUE; } } return FALSE; } void CMainFrame::OnPaletteChanged(CWnd* pFocusWnd) { if(pFocusWnd!=NULL) SendMessageToDescendants(WM_HANDLEPALETTE,(WPARAM)pFocusWnd->m_hWnd,TRUE); } void CMainFrame::OnPaletteIsChanging(CWnd* pRealizeWnd) { OnPaletteChanged (pRealizeWnd); } void CMainFrame::OnSysColorChange() { OnQueryNewPalette(); } void CMainFrame::OnUpdateIndicatorFileName(CCmdUI* pCmdUI) { pCmdUI->SetText(_T("")); } void CMainFrame::OnUpdateIndicatorSize(CCmdUI* pCmdUI) { pCmdUI->SetText(_T("")); } void CMainFrame::OnUpdateIndicatorBPP(CCmdUI* pCmdUI) { pCmdUI->SetText(_T("")); } void CMainFrame::OnUpdateIndicatorZoomPercent(CCmdUI* pCmdUI) { pCmdUI->SetText(_T("")); } void CMainFrame::OnUpdateIndicatorMemSize(CCmdUI* pCmdUI) { pCmdUI->SetText(_T("")); } void CMainFrame::OnClose() { if(m_pBrowseDlg) { if(m_pBrowseDlg->m_bBrowsing) return; m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg=NULL; } CMDIFrameWnd::OnClose(); } void CMainFrame::BrowseDone() { m_pBrowseDlg = NULL; } void CMainFrame::OnFileBrowse() { LDialogFile CommDlg; L_TCHAR szDir[L_MAXPATH]; L_INT nRet; memset(&szDir,0,sizeof(L_TCHAR) * L_MAXPATH); GETDIRECTORYDLGPARAMS DlgParams; memset ( &DlgParams, 0, sizeof ( GETDIRECTORYDLGPARAMS ) ) ; DlgParams.uStructSize = sizeof ( GETDIRECTORYDLGPARAMS ) ; DlgParams.pszDirectory = szDir; DlgParams.nBuffSize = L_MAXPATH ; DlgParams.pszFilter = _T("ALL\0*.*\0\0") ; DlgParams.nFilterIndex = 1 ; DlgParams.pszTitle = _T("Select a Directory Please"); HCURSOR hOldCursor=NULL; CommDlg.SetDirectoryParams(&DlgParams) ; if(CommDlg.DoModalGetDirectory(this->m_hWnd) == SUCCESS_DLG_OK) { //create window CommDlg.GetDirectoryParams(&DlgParams, sizeof(DlgParams)) ; if (m_pBrowseDlg) m_pBrowseDlg->DestroyWindow(); m_pBrowseDlg = new CBrowseDlg(this); BOOL bRet = m_pBrowseDlg->Create(); m_pBrowseDlg->ShowWindow(SW_SHOW); m_pBrowseDlg->m_ImgList.Clear(); m_pBrowseDlg->m_HiddenList.ResetContent(); m_bBrowseQuit = FALSE; //browse a directory CString csOut; csOut.Format(_T("Browsing: %s"), DlgParams.pszDirectory); m_pBrowseDlg->SetWindowText(csOut); m_pBrowseDlg->ShowWindow(SW_SHOW); hOldCursor = SetCursor(theApp.LoadStandardCursor(MAKEINTRESOURCE(IDC_WAIT))); m_pBrowseDlg->m_bBrowsing = TRUE; (m_bIsButtonSelection) ? OnImagelistShowSelButton() : OnImagelistShowSelColor(); (m_bIsVerticalScroll) ? OnImagelistScrollStyleVertical() : OnImagelistScrollStyleHorizontal(); switch (m_nAllowSelection) { case ALLOWSELECTION_NONE: OnImagelistAllowSelNone(); break; case ALLOWSELECTION_SINGLE: OnImagelistAllowSelSingle(); break; case ALLOWSELECTION_MULTI: OnImagelistAllowSelMulti(); break; } THUMBOPTIONS BrowseOptions; BrowseOptions.uStructSize = sizeof(THUMBOPTIONS) ; BrowseOptions.nWidth = 80; BrowseOptions.nHeight = 80; BrowseOptions.nBits = 24; BrowseOptions.uCRFlags = CRF_BYTEORDERBGR|CRF_FIXEDPALETTE|CRF_FLOYDSTEINDITHERING; BrowseOptions.bMaintainAspect = TRUE; BrowseOptions.bForceSize = FALSE; BrowseOptions.crBackColor = RGB(128,128,128); BrowseOptions.bLoadStamp = FALSE; BrowseOptions.bResample = FALSE; nRet = m_pBrowseDlg->m_Thumb.BrowseDir(DlgParams.pszDirectory, _T("*.*"), &BrowseOptions, m_bStopOnErr, m_bIncSubDir, m_bExpandMulti, 0, 0/*4096000*//* 4MB size limit */); m_pBrowseDlg->m_bBrowsing = FALSE; m_pBrowseDlg->m_bQuit = FALSE; if(nRet != SUCCESS) { if (nRet != ERROR_USER_ABORT) { CString csOut; csOut.Format(_T("Error browsing directory: %ld"), nRet); AfxMessageBox(csOut); } else AfxMessageBox(_T("Browsing Canceled!")); } else { switch (m_nSort) { case SORT_ASCENDING: OnImagelistSortAscending(); break; case SORT_DESCENDING: OnImagelistSortDescending(); break; } } SetCursor(hOldCursor); } } void CMainFrame::OnPrefImglstStopOnErr() { m_bStopOnErr = !m_bStopOnErr; } void CMainFrame::OnUpdatePrefImglstStopOnErr(CCmdUI* pCmdUI) { pCmdUI->SetCheck( (m_bStopOnErr) ? 1 : 0); } void CMainFrame::OnPrefImglstIncSubDir() { m_bIncSubDir = !m_bIncSubDir; } void CMainFrame::OnUpdatePrefImglstIncSubDir(CCmdUI* pCmdUI) { pCmdUI->SetCheck( (m_bIncSubDir) ? 1 : 0); } void CMainFrame::OnPrefImglstExpandMulPage() { m_bExpandMulti = !m_bExpandMulti; } void CMainFrame::OnUpdatePrefImglstExpandMulPage(CCmdUI* pCmdUI) { pCmdUI->SetCheck( (m_bExpandMulti) ? 1 : 0); } void CMainFrame::OnImagelistShowSelColor() { if (m_pBrowseDlg) { LILSELOPTION SelOptions; memset (&SelOptions, 0, sizeof(LILSELOPTION)); SelOptions.uStructSize = sizeof(LILSELOPTION); m_bIsButtonSelection = false; m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectionOptions(&SelOptions); SelOptions.uSelectionStyle = SELECTIONSTYLE_SELECTCOLOR; m_pBrowseDlg->m_Thumb.m_pImgList->SetSelectionOptions(&SelOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistShowSelColor(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio(!m_bIsButtonSelection); } void CMainFrame::OnImagelistShowSelButton() { if (m_pBrowseDlg) { LILSELOPTION SelOptions; memset (&SelOptions, 0, sizeof(LILSELOPTION)); SelOptions.uStructSize = sizeof(LILSELOPTION); m_bIsButtonSelection = true; m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectionOptions(&SelOptions); SelOptions.uSelectionStyle = SELECTIONSTYLE_PRESSEDBUTTON; m_pBrowseDlg->m_Thumb.m_pImgList->SetSelectionOptions(&SelOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistShowSelButton(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio(m_bIsButtonSelection); } void CMainFrame::OnImagelistScrollStyleVertical() { if (m_pBrowseDlg) { if (m_pBrowseDlg->m_Thumb.m_pImgList->GetScrollStyle() != SCROLLSTYLE_VERTICAL) { m_bIsVerticalScroll = true; m_pBrowseDlg->m_Thumb.m_pImgList->SetScrollStyle(SCROLLSTYLE_VERTICAL); m_pBrowseDlg->RedrawWindow(); } } } void CMainFrame::OnUpdateImagelistScrollStyleVertical(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio(m_bIsVerticalScroll); } void CMainFrame::OnImagelistScrollStyleHorizontal() { if (m_pBrowseDlg) { if (m_pBrowseDlg->m_Thumb.m_pImgList->GetScrollStyle() != SCROLLSTYLE_HORIZONTAL) { m_bIsVerticalScroll = false; m_pBrowseDlg->m_Thumb.m_pImgList->SetScrollStyle(SCROLLSTYLE_HORIZONTAL); m_pBrowseDlg->RedrawWindow(); } } } void CMainFrame::OnUpdateImagelistScrollStyleHorizontal(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio(!m_bIsVerticalScroll); } void CMainFrame::OnImagelistAllowSelNone() { if (m_pBrowseDlg) { LILSELOPTION SelOptions; memset (&SelOptions, 0, sizeof(LILSELOPTION)); SelOptions.uStructSize = sizeof(LILSELOPTION); m_nAllowSelection = 0; m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectionOptions(&SelOptions); SelOptions.uAllowSelection = ALLOWSELECTION_NONE; m_pBrowseDlg->m_Thumb.m_pImgList->SetSelectionOptions(&SelOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistAllowSelNone(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio( (m_nAllowSelection == ALLOWSELECTION_NONE) ? true : false); } void CMainFrame::OnImagelistAllowSelSingle() { if (m_pBrowseDlg) { LILSELOPTION SelOptions; memset (&SelOptions, 0, sizeof(LILSELOPTION)); SelOptions.uStructSize = sizeof(LILSELOPTION); m_nAllowSelection = 1; m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectionOptions(&SelOptions); SelOptions.uAllowSelection = ALLOWSELECTION_SINGLE; m_pBrowseDlg->m_Thumb.m_pImgList->SetSelectionOptions(&SelOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistAllowSelSingle(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio( (m_nAllowSelection == ALLOWSELECTION_SINGLE) ? true : false); } void CMainFrame::OnImagelistAllowSelMulti() { if (m_pBrowseDlg) { LILSELOPTION SelOptions; memset (&SelOptions, 0, sizeof(LILSELOPTION)); SelOptions.uStructSize = sizeof(LILSELOPTION); m_nAllowSelection = 2; m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectionOptions(&SelOptions); SelOptions.uAllowSelection = ALLOWSELECTION_MULTI; m_pBrowseDlg->m_Thumb.m_pImgList->SetSelectionOptions(&SelOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistAllowSelMulti(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetRadio( (m_nAllowSelection == ALLOWSELECTION_MULTI) ? true : false); } void CMainFrame::OnImagelistSortAscending() { if (m_pBrowseDlg) { m_nSort = SORT_ASCENDING; m_pBrowseDlg->m_Thumb.m_pImgList->Sort(true); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistSortAscending(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetCheck( (m_nSort == SORT_ASCENDING) ? 1 : 0); } void CMainFrame::OnImagelistSortDescending() { if (m_pBrowseDlg) { m_nSort = SORT_DESCENDING; m_pBrowseDlg->m_Thumb.m_pImgList->Sort(false); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistSortDescending(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetCheck( (m_nSort == SORT_DESCENDING) ? 1 : 0); } void CMainFrame::OnImagelistInsert() { if (m_pBrowseDlg) { CDemo *pTheApp = (CDemo *)AfxGetApp(); OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.Flags = OFN_EXPLORER ; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES; pTheApp->m_LUserBitmap.DialogFile()->SetOpenParams(&FOParm) ; pTheApp->m_LUserBitmap.DialogFile()->SetOpenFileName(&OpenFileName) ; L_BOOL bOldState = pTheApp->m_LUserBitmap.DialogFile()->EnableAutoProcess(TRUE); pTheApp->m_LUserBitmap.DialogFile()->EnablePreview(pTheApp->m_bDlgEnablePreview); pTheApp->m_LUserBitmap.DialogFile()->SetOpenParams(&FOParm) ; L_INT nRetCode = pTheApp->m_LUserBitmap.DialogFile()->DoModalOpen(m_hWnd); if(nRetCode==SUCCESS_DLG_OK) { L_TCHAR szFileName[256]; memset(szFileName,0,sizeof(szFileName)); L_UINT uSize=sizeof(szFileName); pTheApp->m_LUserBitmap.GetFileName(szFileName,&uSize); LILITEM Item; memset(&Item, 0, sizeof(Item)); Item.uStructSize = sizeof(Item); m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectedItems(&Item); nRetCode = m_pBrowseDlg->m_Thumb.m_pHiddenList->AddString( szFileName); if (nRetCode != -1) { LBitmapBase LeadBitmap; LOADFILEOPTION LoadFileOption; OPENDLGPARAMS FOParm; memset(&FOParm,0,sizeof(OPENDLGPARAMS)); pTheApp->m_LUserBitmap.DialogFile()->GetOpenParams(&FOParm, sizeof(FOParm)) ; LBaseFile::GetDefaultLoadFileOption(&LoadFileOption, sizeof(LoadFileOption)); if (LeadBitmap.Load(szFileName, 0, ORDER_BGR, &LoadFileOption) == SUCCESS) { CString FileTitle; CString Temp; L_INT n; Temp = szFileName; n = Temp.ReverseFind('\\'); n++; FileTitle = Temp.Right(Temp.GetLength()-n); memset(&Item, 0, sizeof(Item)); Item.uStructSize = sizeof(LILITEM); Item.uMask = LILITEM_BITMAP | LILITEM_TEXT | LILITEM_DATA | LILITEM_SELECTED; Item.pBitmap = LeadBitmap.GetHandle(); Item.pText = (L_TCHAR L_FAR *)(LPCTSTR)FileTitle; Item.lData = FOParm.pFileData[0].nPageNumber; Item.bSelected = FALSE; if (m_pBrowseDlg->m_Thumb.m_pImgList->Insert(&Item, -1) != SUCCESS) m_pBrowseDlg->m_Thumb.m_pHiddenList->DeleteString(m_pBrowseDlg->m_Thumb.m_pHiddenList->GetCount() - 1); else { LeadBitmap.Free(); nRetCode = m_pBrowseDlg->m_Thumb.m_pImgList->GetItemCount(); m_pBrowseDlg->m_Thumb.m_pImgList->EnsureVisible(nRetCode - 1); } } } } } } void CMainFrame::OnUpdateImagelistInsert(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); } void CMainFrame::OnImagelistRemove() { if (m_pBrowseDlg) { LILITEM Item; memset(&Item, 0, sizeof(Item)); Item.uStructSize = sizeof(Item); Item.uBitmapStructSize = sizeof(BITMAPHANDLE); L_INT tmp = m_pBrowseDlg->m_Thumb.m_pImgList->GetSelectedItems(&Item); if (Item.pBitmap) { for (int i =0; i < m_pBrowseDlg->m_Thumb.m_pHiddenList->GetCount(); i++) { CString csFile; CString tmpStr(_T("\\")); tmpStr += Item.pText; tmpStr.MakeUpper(); m_pBrowseDlg->m_Thumb.m_pHiddenList->GetText(i, csFile); csFile.MakeUpper(); if (csFile.Find((LPCTSTR)tmpStr) != -1) { if (m_pBrowseDlg->m_Thumb.m_pHiddenList->DeleteString(i) != LB_ERR) if (m_pBrowseDlg->m_Thumb.m_pImgList->Remove(Item.lIndex) != SUCCESS) m_pBrowseDlg->m_Thumb.m_pHiddenList->InsertString(Item.lIndex, csFile); break; } } } } } void CMainFrame::OnUpdateImagelistRemove(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg && m_nAllowSelection != ALLOWSELECTION_MULTI) ? true : false); } void CMainFrame::OnImagelistDisplayText() { if (m_pBrowseDlg) { m_bDisplayText = !m_bDisplayText; LILITEMOPTION ItemOptions; memset( &ItemOptions, 0, sizeof(ItemOptions)); ItemOptions.uStructSize = sizeof(ItemOptions); m_pBrowseDlg->m_Thumb.m_pImgList->GetItemOptions(&ItemOptions); ItemOptions.bDisplayItemText = m_bDisplayText; m_pBrowseDlg->m_Thumb.m_pImgList->SetItemOptions(&ItemOptions); m_pBrowseDlg->RedrawWindow(); } } void CMainFrame::OnUpdateImagelistDisplayText(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); if (m_pBrowseDlg) pCmdUI->SetCheck( (m_bDisplayText) ? 1 : 0); } void CMainFrame::OnImageListEnableKeyboard() { if (m_pBrowseDlg) { m_bEnableKeyboard = !m_bEnableKeyboard; m_pBrowseDlg->m_Thumb.m_pImgList->EnableKeyboard(m_bEnableKeyboard); } } void CMainFrame::OnUpdateImagelistEnableKeyboard(CCmdUI* pCmdUI) { pCmdUI->Enable((m_pBrowseDlg) ? true : false); pCmdUI->SetCheck( (m_bEnableKeyboard) ? 1 : 0); }