// MainDlg.cpp : implementation of the CMainDlg class
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "resource.h"
#include "aboutdlg.h"
#include "MainDlg.h"
#include <atlpath.h>
#include "DlgEffect.h"
BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{
return CWindow::IsDialogMessage(pMsg);
}
BOOL CMainDlg::OnIdle()
{
return FALSE;
}
LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// Init the CDialogResize code
DlgResize_Init();
// center the dialog on the screen
CenterWindow();
DoDataExchange(FALSE);
if (NULL == m_hIcoUndo)
{
m_hIcoUndo = LoadIcon(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDI_UNDO));
}
if (NULL == m_hIcoRedo)
{
m_hIcoRedo = LoadIcon(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDI_REDO));
}
m_btnBGColor.SubclassWindow(GetDlgItem(IDC_BTNBGCOLOR));
m_btnBGColor.SetColor(COLBTN_DEFAULTCOL);
m_btnBGColor.SetDefaultColor(COLBTN_DEFAULTCOL);
m_btnBGColor.SetDefaultText(_T("Default"));
m_wndCbInterpolation.Clear();
m_wndCbInterpolation.SetDroppedWidth(150);
m_wndCbInterpolation.AddString(_T("Nearest neighbour"));
m_wndCbInterpolation.AddString(_T("Bilinear (pixel corner)"));
m_wndCbInterpolation.AddString(_T("Bilinear 2 (pixel center)"));
m_wndCbInterpolation.AddString(_T("Bicubic (hard)"));
m_wndCbInterpolation.AddString(_T("Bicubic 2 (soft)"));
m_wndCbInterpolation.AddString(_T("BSpline (blur)"));
m_wndCbInterpolation.AddString(_T("Lanzcos (sharp)"));
m_wndCbInterpolation.AddString(_T("Hermite"));
m_wndCbInterpolation.SetCurSel(3);
m_wndListCtrl.SubclassWindow(GetDlgItem(IDC_LIST_MAIN));
m_wndListCtrl.SetImageList( m_ilItemImages );
m_wndListCtrl.SetFocusSubItem( TRUE );
// m_wndListCtrl.SetSingleSelect(TRUE);
// m_wndListCtrl.SetDragDrop(TRUE);
// m_wndListCtrl.Initialise();
m_wndListCtrl.InitColumns();
// set icons
HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SetIcon(hIconSmall, FALSE);
// register object for message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
UIAddChildWindowContainer(m_hWnd);
return TRUE;
}
CxImage::InterpolationMethod CMainDlg::GetIpMethod()
{
int nCurSel = m_wndCbInterpolation.GetCurSel();
switch(nCurSel)
{
case 0:
return CxImage::IM_NEAREST_NEIGHBOUR;
case 1:
return CxImage::IM_BILINEAR;
case 2:
return CxImage::IM_BILINEAR;
case 3:
return CxImage::IM_BICUBIC;
case 4:
return CxImage::IM_BICUBIC2;
case 5:
return CxImage::IM_BSPLINE;
case 6:
return CxImage::IM_LANCZOS;
case 7:
return CxImage::IM_HERMITE;
default:
return CxImage::IM_BICUBIC;
}
}
LRESULT CMainDlg::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// unregister message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
pLoop->RemoveMessageFilter(this);
pLoop->RemoveIdleHandler(this);
if (NULL != m_hIcoUndo)
{
DestroyIcon(m_hIcoUndo);
m_hIcoUndo = NULL;
}
if (NULL != m_hIcoRedo)
{
DestroyIcon(m_hIcoRedo);
m_hIcoRedo = NULL;
}
return 0;
}
LRESULT CMainDlg::OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CAboutDlg dlg;
dlg.DoModal();
return 0;
}
LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: Add validation code
// CloseDialog(wID);
UpdateImageList();
return 0;
}
LRESULT CMainDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CloseDialog(wID);
return 0;
}
void CMainDlg::CloseDialog(int nVal)
{
DestroyWindow();
::PostQuitMessage(nVal);
}
BOOL CMainDlg::AddPathToList(LPCTSTR lpszPath)
{
CPath filePath(lpszPath);
if (!filePath.FileExists())
return FALSE;
// int nNewItem = m_wndListCtrl.AddItem( _T("1"), ITEM_IMAGE_NONE );
// m_wndListCtrl.SetItemCheck( nNewItem, 0, 1 );
// m_wndListCtrl.SetItemText( nNewItem, 2, filePath.m_strPath );
filePath.StripPath();
filePath.RemoveExtension();
filePath.m_strPath.MakeUpper();
filePath.m_strPath = _T("CMD_") + filePath.m_strPath;
m_wndListCtrl.AddImg(TRUE, filePath.m_strPath, lpszPath);
// m_wndListCtrl.SetItemText(nNewItem, 1, filePath.m_strPath);
return TRUE;
}
BOOL CMainDlg::HandleImage(CxImage *pimgIn)
{
if (NULL == pimgIn)
return FALSE;
pimgIn->ShiftRGB(-20, +30, -20);
return TRUE;
}
#define LST_IMG_CX 24
#define LST_IMG_CY 24
BOOL CMainDlg::UpdateImageList()
{
CWaitCursor curWait;
int nItemCount = m_wndListCtrl.GetItemCount();
if (nItemCount <= 0)
return FALSE;
CxImage *pimgIn = NULL;
CxImage *pimgOut = NULL;
CStringType strOutName = _T("");
CStringType strTemp = _T("");
int nSuccess = 0;
DWORD dwImgType = CXIMAGE_FORMAT_UNKNOWN;
TCHAR path_buffer[_MAX_PATH];
TCHAR drive[_MAX_DRIVE];
TCHAR dir[_MAX_DIR];
TCHAR fname[_MAX_FNAME];
TCHAR ext[_MAX_EXT];
ATLTRACE(_T("\r\nStart Processing in %d files ..."), nItemCount);
for (int i=0; i<nItemCount; i++)
{
CStringType strPath = m_wndListCtrl.GetItemText(i, 2);
ATLTRACE(_T("\r\n(%d|%d)Processing %s"), i, nItemCount, strPath);
dwImgType = GetImageType(strPath);
pimgIn = new CxImage(strPath, dwImgType);
if (!pimgIn->IsValid())
{
delete pimgIn;
pimgIn = NULL;
continue;
}
long lNumFrames = pimgIn->GetNumFrames();
if (lNumFrames > 1)
{
for (long j=0; j<lNumFrames; j++)
{
CxImage *pimgInTemp = new CxImage();
pimgInTemp->SetFrame(j);
pimgInTemp->Load(strPath, dwImgType);
if (pimgInTemp->IsValid())
{
_tcsncpy(path_buffer, strPath, _MAX_PATH);
_tsplitpath( path_buffer, drive, dir, fname, ext );
strTemp.Format(_T("%s%s%lu-%lu_%ld-%s.png"),
drive, dir,
pimgInTemp->GetWidth(), pimgInTemp->GetHeight(), j,
fname);
HandleImage(pimgInTemp);
if (pimgInTemp->Save(strTemp, CXIMAGE_FORMAT_PNG))
{
nSuccess ++;
}
}
delete pimgInTemp;
pimgInTemp = NULL;
}
}
else
{
_tcsncpy(path_buffer, strPath, _MAX_PATH);
_tsplitpath( path_buffer, drive, dir, fname, ext );
strTemp.Format(_T("%s%s%lu-%lu-%s.png"),
drive, dir,
pimgIn->GetWidth(), pimgIn->GetHeight(),
fname);
HandleImage(pimgIn);
if (pimgIn->Save(strTemp, CXIMAGE_FORMAT_PNG))
{
nSuccess ++;
}
}
delete pimgIn;
pimgIn = NULL;
}
ATLTRACE(_T("\r\nComplete Process\r\n"));
return TRUE;
}
LRESULT CMainDlg::OnBtnaddBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CMultiFileDialog dlgFile(NULL, NULL,
OFN_ENABLESIZING | OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST,
_T("Images Support (*.bmp;*.gif;*.jpg;...)\0*.bmp;*.gif;*.jpg;*.jpeg;*.png;*.ico;*.mng;*.jng;*.tiff;*.tif;*.tga;*.pcx;*.wbmp;*.wmf;*.emf;*.j2k;*.jp2;*.jbg;*.jpc;*.j2c;*.pgx;*.ras;*.pnm;*.pgm;*.ppm\0All Files (*.*)\0*.*\0"), m_hWnd);
if (dlgFile.DoModal() == IDOK)
{
TCHAR szFile[MAX_PATH] = _T("\0");
int nRet = dlgFile.GetFirstPathName(szFile, MAX_PATH);
while (0 != nRet)
{
AddPathToList(szFile);
nRet = dlgFile.GetNextPathName(szFile, MAX_PATH);
}
m_wndListCtrl.AdjustColumnWidth();
}
return 0;
}
LRESULT CMainDlg::OnBtndelBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CListArray <int> aSelectedItems;
m_wndListCtrl.GetSelectedItems(aSelectedItems);
int nCount = aSelectedItems.GetSize() - 1;
ATLTRACE(_T("%d items selected."), nCount);
for (int i=nCount; i>=0; i--)
{
ATLTRACE(_T("Del item %d ..."), aSelectedItems[i]);
m_wndListCtrl.DeleteItem(aSelectedItems[i]);
}
return 0;
}
LRESULT CMainDlg::OnBtnfirstBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CListArray <int> aSelectedItems;
m_wndListCtrl.GetSelectedItems(aSelectedItems);
int nCount = aSelectedItems.GetSize();
ATLTRACE(_T("\n\n%d items selected.\n"), nCount);
if (nCount <= 0)
return 0;
int nItemCount = m_wndListCtrl.GetItemCount();
if (nItemCount <= 1)
return 0;
m_wndListCtrl.ResetSelected();
int nRet = 0;
CImgListItem *pItem = NULL;
for (int i=nCount - 1; (i>=0); i--)
{
ATLTRACE(_T("Processing at %d / %d\n"), aSelectedItems[i], nItemCount);
if ((aSelectedItems[i] > 0) && (aSelectedItems[i] < nItemCount))
{
pItem = new CImgListItem(m_wndListCtrl.m_aImg[aSelectedItems[i]]);
if (NULL == pItem)
return 0;
if (m_wndListCtrl.m_aImg.InsertAt(0, *pItem))
{
m_wndListCtrl.SelectItem(nRet, NULL_SUBITEM, MK_CONTROL);
nRet += 1;
m_wndListCtrl.m_aImg.RemoveAt(aSelectedItems[i] + 1);
}
delete pItem;
}
}
m_wndListCtrl.Invalidate();
return 0;
}
LRESULT CMainDlg::OnBtnupBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CListArray <int> aSelectedItems;
m_wndListCtrl.GetSelectedItems(aSelectedItems);
int nCount = aSelectedItems.GetSize();
ATLTRACE(_T("%d items selected."), nCount);
if (nCount <= 0)
return 0;
int nItemCount = m_wndListCtrl.GetItemCount();
if (nItemCount <= 1)
return 0;
m_wndListCtrl.ResetSelected();
int nRet = 0;
CImgListItem *pItem = NULL;
for (int i=0; (i<nCount); i++)
{
if (aSelectedItems[i] > nItemCount)
continue;
if ((aSelectedItems[i] - 1) >= 0)
{
pItem = new CImgListItem(m_wndListCtrl.m_aImg[aSelectedItems[i]]);
if (NULL == pItem)
return 0;
if (m_wndListCtrl.m_aImg.InsertAt(aSelectedItems[i] - 1, *pItem))
{
m_wndListCtrl.SelectItem(aSelectedItems[i] - 1, NULL_SUBITEM, MK_CONTROL);
m_wndListCtrl.m_aImg.RemoveAt(aSelectedItems[i] + 1);
}
delete pItem;
}
else
{
m_wndListCtrl.SelectItem(aSelectedItems[i], NULL_SUBITEM, MK_CONTROL);
}
}
m_wndListCtrl.Invalidate();
return 0;
}
LRESULT CMainDlg::OnBtndownBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CListArray <int> aSelectedItems;
m_wndListCtrl.GetSelectedItems(aSelectedItems);
int nCount = aSelectedItems.GetSize();
ATLTRACE(_T("%d items selected."), nCount);
if (nCount <= 0)
return 0;
int nItemCount = m_wndListCtrl.GetItemCount();
if (nItemCount <= 1)
return 0;
m_wndListCtrl.ResetSelected();
int nRet = 0;
CImgListItem *pItem = NULL;
for (int i=nCount - 1; i>=0; i--)
{
if (aSelectedItems[i] > nItemCount)
continue;
if ((aSelectedItems[i] + 2) <= nItemCount)
{
pItem = new CImgListItem(m_wndListCtrl.m_aImg[aSelectedItems[i]]);
if (NULL == pItem)
return 0;
if (m_wndListCtrl.m_aImg.InsertAt(aSelectedItems[i] + 2, *pItem))
{
m_wndListCtrl.SelectItem(aSelectedItems[i] + 1, NULL_SUBITEM, MK_CONTROL);
m_wndListCtrl.m_aImg.RemoveAt(aSelectedItems[i]);
}
delete pItem;
}
}
m_wndListCtrl.Invalidate();
return 0;
}
LRESULT CMainDlg::OnBtnbottomBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
CListArray <int> aSelectedItems;
m_wndListCtrl.GetSelectedItems(aSelectedItems);
int nCount = aSelectedItems.GetSize();
ATLTRACE(_T("%d items selected."), nCount);
if (nCount <= 0)
return 0;
int nItemCount = m_wndListCtrl.GetItemCount();
if (nItemCount <= 1)
return 0;
m_wndListCtrl.ResetSelected();
int nRet = 0;
CImgListItem *pItem = NULL;
for (int i=nCount - 1; (i>=0); i--)
{
if (aSelectedItems[i] > nItemCount)
continue;
if ((aSelectedItems[i] + 1) < nItemCount)
{
pItem = new CImgListItem(m_wndListCtrl.m_aImg[aSelectedItems[i]]);
if (NULL == pItem)
return 0;
CImgListItem imgItem(m_wndListCtrl.m_aImg[aSelectedItems[i]]);
if (m_wndListCtrl.m_aImg.Add(imgItem))
{
m_wndListCtrl.SelectItem(nItemCount - 1, NULL_SUBITEM, MK_CONTROL);
m_wndListCtrl.m_aImg.RemoveAt(aSelectedItems[i]);
}
delete pItem;
}
}
m_wndListCtrl.Invalidate();
return 0;
}
// #define _DEBUG_STEP_
#ifdef _DEBUG_STEP_
int nTestCount = 0;
#endif
int CMainDlg::SaveToFile(LPCTSTR lpszFile, bool bSaveItems)
{
DoDataExchange(TRUE);
int nItemCount = m_wndListCtrl.GetItemCount();
int nUsedCount = m_wndListCtrl.GetUsedCount();
if ((nItemCount <= 0) || (nUsedCount <= 0))
{
MessageBox(_T("No item used to save to file!"), _T("Error"), MB_OK | MB_ICONINFORMATION);
return 0;
}
DWORD dwType = GetImageType(lpszFile);
if (CXIMAGE_FORMAT_UNKNOWN == dwType)
{
MessageBox(_T("Unknown format found!"), _T("Error"), MB_OK | MB_ICONINFORMATION);
return 0;
}
TCHAR path_buffer[_MAX_PATH];
TCHAR drive[_MAX_DRIVE];
TCHAR dir[_MAX_DIR];
TCHAR fname[_MAX_FNAME];
TCHAR ext[_MAX_EXT];
_tcsncpy(path_buffer, lpszFile, _MAX_PATH);
_tsplitpath( path_buffer, drive, dir, fname, ext );
long lHeight = m_outCy;
long lWide = m_outCx * nItemCount;
CxImage imgOutput(m_outCx * nUsedCount, m_outCy, m_dwBpp, dwType);
COLORREF colBG = m_btnBGColor.GetColor();
// COLORREF colBG = RGB(225, 222, 212);
// COLORREF colBG = RGB(255, 0, 255);
// CxImage imgOutput(dwType);
// imgOutput.Expand(0, 0, m_outCx * nItemCount, m_outCy, imgOutput.RGBtoRGBQUAD(m_btnBGColor.GetColor()));
imgOutput.SetTransColor(imgOutput.RGBtoRGBQUAD(colBG));
for(long lY=0;lY<lHeight;lY++)
{
for(long lX=0;lX<lWide;lX++)
{
imgOutput.SetPixelColor(lX, lY, colBG);
}
}
// if (!imgOutput.AlphaIsValid())
// {
imgOutput.AlphaCreate();
// }
#ifdef _DEBUG_STEP_
_sntprintf(path_buffer, _MAX_PATH, _T("%s%s%05d-%s%s"), drive, dir, nTestCount, _T("Debug01"), ext);
imgOutput.Save(path_buffer, dwType);
#endif
int nOutput = 0;
DWORD dwOffsetX = 0;
CImgListItem *pItem = NULL;
CxImage::InterpolationMethod ipMethod = GetIpMethod();
for (int i=0; i<nItemCount; i++)
{
if (!m_wndListCtrl.m_aImg[i].m_bUsed)
continue;
pItem = new CImgListItem(m_wndListCtrl.m_aImg[i]);
if (NULL == pItem)
return 0;
if (pItem->IsImgValid())
{
pItem->m_pImg->Resample2(m_outCx, m_outCy, ipMethod, CxImage::OM_TRANSPARENT);
if (!pItem->m_pImg->AlphaIsValid())
{
pItem->m_pImg->AlphaCreate();
#ifndef CXIMAGE_V599C
pItem->m_pImg->AlphaFromTransparency();
#endif // #ifndef CXIMAGE_V599C
}
imgOutput.Mix(*(pItem->m_pImg), CxImage::OpDstCopy, dwOffsetX, 0, true);
if (bSaveItems)
{
if (m_bChktransparent)
{
pItem->m_pImg->SetTransIndex(0);
}
else
{
pItem->m_pImg->SetTransColor(imgOutput.RGBtoRGBQUAD(colBG));
pItem->m_pImg->SetTransIndex(-1);
#ifdef CXIMAGE_V599C
pItem->m_pImg->AlphaStrip();
#endif // #ifdef CXIMAGE_V599C
}
_sntprintf(path_buffer, _MAX_PATH, _T("%s%s%s%s"), drive, dir, m_wndListCtrl.m_aImg[i].m_strCmdID, ext);
pItem->m_pImg->Save(path_buffer, dwType);
}
#ifdef _DEBUG_STEP_
_sntprintf(path_buffer, _MAX_PATH, _T("%s%s%05d-%s-%03d%s"), drive, dir, nTestCount, _T("Debug02-"), i, ext);
imgOutput.Save(path_buffer, dwType);
#endif
nOutput += 1;
}
delete pItem;
dwOffsetX -= m_outCx;
}
#ifdef _DEBUG_STEP_
_sntprintf(path_buffer, _MAX_PATH, _T("%s%s%05d-%s%s"), drive, dir, nTestCount, _T("Debug03-"), ext);
imgOutput.Save(path_buffer, dwType);
#endif
if (nOutput > 0)
{
if (m_bChktransparent)
{
imgOutput.SetTransIndex(0);
}
else
{
imgOutput.SetTransIndex(-1);
imgOutput.AlphaStrip();
}
#ifdef _DEBUG_STEP_
_sntprintf(path_buffer, _MAX_PATH, _T("%s%s%05d-%s%s"), drive, dir, nTestCount, _T("Debug04-"), ext);
imgOutput.Save(path_buffer, dwType);
nTestCount += 1;
#endif
if (imgOutput.Save(lpszFile, dwType))
{
if (MessageBox(_T("Export successfully! Do you want open it?"), _T("Information"), MB_YESNO | MB_ICONINFORMATION) == IDYES)
{
ShellExecute(NULL, _T("Open"), lpszFile, NULL, NULL, SW_SHOWNORMAL);
return 1;
}
}
else
{
MessageBox(_T("Export failed!"), _T("Error"), MB_OK | MB_ICONERROR);
return 0;
}
}
{
MessageBox(_T("Export failed!"), _T("Error"), MB_OK | MB_ICONERROR);
return 0;
}
return 1;
}
LRESULT CMainDlg::OnBtnsaveBnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
TCHAR szFile[MAX_PATH] = _T("\0");
OPENFILENAME ofn;
memset( &(ofn), 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = _T("PNG File(*.png)\0*.png\0BMP File(*.bmp)\0*.bmp\0GIF File(*.gif)\0*.gif\0JPEG File(*.jpg)\0*.jpg\0ICON File(*.ico)\0*.ico\0");
ofn.lpstrTitle = _T("Export Image List as ...");
ofn.Flags = OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_EXPLORER;
ofn.lpstrDefExt = _T(".png");
if (GetSaveFileName(&ofn))
{
ATLTRACE(_T("CXNESecBitStream::SaveToFile: %s"), ofn.lpstrFile);
if (MessageBox(_T("Application can save every items as a image file.\nPress 'Yse' to perform this, 'No' to disable this"),
_T("Confirm"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
return SaveToFile(ofn.lpstrFile, true);
}
else
{
return SaveToFile(ofn.lpstrFile, false);
}
}
return 0;
}
CMainDlg::CMainDlg(void)
: m_bChkcenter(TRUE)
, m_bChkresize(TRUE)
, m_outCx(24lu)
, m_outCy(24lu)
, m_hIcoUndo(NULL), m_hIcoRedo(NULL)
, m_dwBpp(24lu)
, m_bChktransparent(TRUE)
{
m_wndListCtrl.RegisterClass();
}
LRESULT CMainDlg::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// UINT state = (UINT)wParam;
// CSize Size = CSize(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
CDialogResize<CMainDlg>::OnSize(uMsg, wParam, lParam, bHandled);
bHandled = TRUE;
if (::IsWindow(m_hWnd) && ::IsWindow(m_wndListCtrl.m_hWnd) && (wParam != SIZE_MINIMIZED))
{
// CRect rcClt;
// m_wndListCtrl.GetClientRect(&rcClt);
// m_wndListCtrl.SetColumnWidth(2, rcClt.Width() - 176);
m_wndListCtrl.AdjustColumnWidth();
}
return 0;
}
LRESULT CMainDlg::OnBnClickedBtnclearall(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
m_wndListCtrl.DeleteAllItems();
return 0;
}
LRESULT CMainDlg::OnBnClickedBtneffect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CDlgEffect dlgEffect;
m_wndListCtrl.GetSelectedItems(dlgEffect.m_aSelectedItems);
ATLTRACE(_T("%d items selected."), dlgEffect.m_aSelectedItems.GetSize());
if (dlgEffect.m_aSelectedItems.GetSize() == 0)
return 0;
dlgEffect.DoModal();
return 0;
}