📄 layerdlg.cpp
字号:
// LayerDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RSImageStar.h"
#include "RSImageStarDoc.h"
#include "RSImageStarView.h"
#include "MainFrm.h"
#include "LayerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLayerDlg dialog
extern CRSImageStarView *m_pView;
CLayerDlg::CLayerDlg(CWnd* pParent /*=NULL*/)
{
//{{AFX_DATA_INIT(CLayerDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_imageList=NULL;
m_imageList1=NULL;
m_Draw=true;
flag=true;
}
void CLayerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogBar::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLayerDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLayerDlg, CDialogBar)
//{{AFX_MSG_MAP(CLayerDlg)
ON_WM_DESTROY()
ON_WM_SHOWWINDOW()
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_SIZE()
ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLayerDlg message handlers
void CLayerDlg::AddItem()
{
if(flag)
{
AddIcon();
flag=false;
}
filename=m_pView->m_pDoc->filename;
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
pTree->SetImageList(m_imageList, TVSIL_NORMAL);
pTree->SetItemHeight(32);
// tree structure common values
TV_INSERTSTRUCT tvinsert;
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = TVI_LAST;
tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE
| TVIF_TEXT|TVIF_STATE;
pTree->SetImageList(m_imageList1, TVSIL_STATE);
tvinsert.item.hItem = NULL;
tvinsert.item.state = TVIS_SELECTED ;
tvinsert.item.stateMask = TVIS_STATEIMAGEMASK ;
tvinsert.item.cchTextMax = 16;
tvinsert.item.iSelectedImage = 0;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
// top level
tvinsert.item.pszText =m_pView->m_pDoc->curptr->layername;
tvinsert.item.iImage = 1;
HTREEITEM hDad = pTree ->InsertItem(&tvinsert);
if(m_pView->m_pDoc->curptr->flagwrite)
pTree->SelectItem(hDad);
pTree->SetCheck(hDad,true);
m_pView->m_crPenColor=RGB(m_pView->m_pDoc->curptr->color.rgbtRed,
m_pView->m_pDoc->curptr->color.rgbtGreen,m_pView->m_pDoc->curptr->color.rgbtBlue);
}
void CLayerDlg::OpenItem()
{
if(flag)
{
AddIcon();
flag=false;
}
if(m_pView)
filename=m_pView->m_pDoc->filename;
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
pTree->DeleteAllItems();
pTree->SetImageList(m_imageList, TVSIL_NORMAL);
pTree->SetItemHeight(32);
// tree structure common values
TV_INSERTSTRUCT tvinsert;
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = TVI_LAST;
tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE
| TVIF_TEXT|TVIF_STATE;
pTree->SetImageList(m_imageList1, TVSIL_STATE);
if(m_pView!=NULL)
{
pTree->EnableWindow(true);
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->head;
while(m_pView->m_pDoc->tempptr!=NULL)
{
tvinsert.item.hItem = NULL;
tvinsert.item.state = TVIS_SELECTED ;
tvinsert.item.stateMask = TVIS_STATEIMAGEMASK ;
tvinsert.item.cchTextMax = 16;
tvinsert.item.iSelectedImage = 0;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
// top level
tvinsert.item.pszText = m_pView->m_pDoc->tempptr->layername;
tvinsert.item.iImage = 1;
HTREEITEM hDad = pTree ->InsertItem(&tvinsert);
pTree->SetCheck(hDad,m_pView->m_pDoc->tempptr->flagdraw);
if(m_pView->m_pDoc->tempptr->flagwrite)
pTree->SelectItem(hDad);
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->tempptr->next;
}
}
else
pTree->EnableWindow(false);
}
void CLayerDlg::DeleteItem()
{
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
pTree->DeleteAllItems();
}
void CLayerDlg::AddIcon()
{
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
// pTree->ShowScrollBar(SB_HORZ,false);
pTree->EnableWindow(true);
HICON hIcon[3];
int n;
m_imageList=new CImageList;
m_imageList1=new CImageList;
m_imageList->Create(32, 32, 0, 2, 8); // 32, 32 for large icons
m_imageList1->Create(32, 32, 0, 3, 8); // 32, 32 for large icons
hIcon[0] = AfxGetApp()->LoadIcon(IDI_TREE1);
hIcon[1] = AfxGetApp()->LoadIcon(IDI_TREE2);
for (n = 0; n < 2; n++) {
m_imageList->Add(hIcon[n]);
}
hIcon[1] = AfxGetApp()->LoadIcon(IDI_STATE1);
hIcon[2] = AfxGetApp()->LoadIcon(IDI_STATE2);
for (n = 0; n < 3; n++)
m_imageList1->Add(hIcon[n]);
}
void CLayerDlg::OnDestroy()
{
CDialogBar::OnDestroy();
// TODO: Add your message handler code here
if(m_imageList!=NULL)
{
delete m_imageList;
delete m_imageList1;
}
}
void CLayerDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialogBar::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
filename="";
pTree->GetWindowRect(&rect);
}
void CLayerDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CTreeCtrl* pTree =
(CTreeCtrl*) GetDlgItem(IDC_TREE1);
CPoint point;
GetCursorPos(&point);
pTree->ScreenToClient(&point);
TVHITTESTINFO pHitTestInfo;
CPoint pos;
pos.x=point.x-rect.left;
pos.y=point.y-rect.top;
pHitTestInfo.pt=point;
pTree->HitTest(&pHitTestInfo);
if(point.x<32)
{
int num=point.y/32;
if(pHitTestInfo.hItem!=NULL)
{
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->head;
int n=0;
while(n<num)
{
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->tempptr->next;
n++;
}
BOOL flag;
flag=pTree->GetCheck(pHitTestInfo.hItem);
m_pView->m_pDoc->tempptr->flagdraw=!flag;
m_pView->Invalidate(false);
}
}
else
{
int num=point.y/32;
if(pHitTestInfo.hItem!=NULL)
{
// m_pView->m_pDoc->tempptr=m_pView->m_pDoc->head;
// while(m_pView->m_pDoc->tempptr!=NULL)
// {
m_pView->m_pDoc->curptr->flagwrite=false;
// m_pView->m_pDoc->tempptr=m_pView->m_pDoc->tempptr->next;
// }
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->head;
int n=0;
while(n<num)
{
m_pView->m_pDoc->tempptr=m_pView->m_pDoc->tempptr->next;
n++;
}
if(m_pView->m_pDoc->tempptr==NULL)
return;
m_pView->m_pDoc->tempptr->flagwrite=true;
m_pView->m_pDoc->curptr=m_pView->m_pDoc->tempptr;
m_pView->m_crPenColor=RGB(m_pView->m_pDoc->curptr->color.rgbtRed,
m_pView->m_pDoc->curptr->color.rgbtGreen,m_pView->m_pDoc->curptr->color.rgbtBlue);
m_pView->ShowPenColor();
m_pView->m_pDoc->m_Dib->SetDataPtr((CRSImage *)m_pView->m_pDoc->tempptr->dib);
m_pView->m_pDoc->m_Dib->m_hDIB=m_pView->m_pDoc->tempptr->dib->m_hDIB;
m_pView->m_pDoc->UpdateAllViews(NULL);
}
}
*pResult = 0;
}
void CLayerDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();
pMain->ShowControlBar(&pMain->m_wndMyDialogBar,true, FALSE);
CDialogBar::OnLButtonDown(nFlags, point);
}
void CLayerDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_Draw)
{
CButton *pButton=(CButton *)GetDlgItem(IDC_BUTTON1);
CRect rect;
pButton->GetWindowRect(&rect);
ScreenToClient(rect);
m_LayerColor.Create(NULL, BS_OWNERDRAW|WS_BORDER|BS_CHECKBOX,
rect, this, IDC_LAYER_COLOR);
m_LayerColor.SetColor(RGB(255,255,255));
m_LayerColor.ShowWindow(SW_SHOWNORMAL);
m_LayerColor.EnableWindow(false);
m_Draw=false;
}
// Do not call CDialogBar::OnPaint() for painting messages
}
void CLayerDlg::SetButtonColor(COLORREF color)
{
if(m_Draw)
{
CButton *pButton=(CButton *)GetDlgItem(IDC_BUTTON1);
CRect rect;
pButton->GetWindowRect(&rect);
ScreenToClient(rect);
m_LayerColor.Create(NULL, BS_OWNERDRAW|WS_BORDER|BS_CHECKBOX,
rect, this, IDC_LAYER_COLOR);
m_LayerColor.SetColor(color);
m_LayerColor.ShowWindow(SW_SHOWNORMAL);
m_LayerColor.EnableWindow(false);
m_Draw=false;
}
else
m_LayerColor.SetColor(color);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -