// mfc 캡션 없는 창 마우스로 이동 시키기
UINT OnNcHitTest(CPoint point)
{
UINT nHit = CDialog::OnNcHitTest(point);
return (nHit == HTCLIENT ? HTCAPTION : nHit);
}
// mfc 메시지 발생
PostMessage(WM_CLOSE) ; // 응용 프로그램 종료
ShowWindow(SW_MINIMIZE); // 최소화 버튼
// mfc 폼뷰의 배경 투명화
CtlColor 메시지 처리에서
return (HBRUSH)::GetStockObject(NULL_BRUSH);
// 폼뷰 배경색 지정
return CreateSolidBrush(RGB(51,51,51));
// 버튼 이미지 삽입 ( CBitmapButton 으로 바꿔주고 )
m_btReport.LoadBitmaps(IDB_REPORT,IDB_REPORT2,IDB_REPORT,IDB_REPORT); // 레포트 버튼
m_btReport.SizeToContent();
// 화면 둥글게
CRect rect;
CRgn rgn;
GetClientRect(&rect);
rgn.CreateRoundRectRgn(rect.left,rect.top,rect.right,rect.bottom,20,20);
::SetWindowRgn(this->m_hWnd,(HRGN)rgn,TRUE);
// 스태틱 텍스트 색상 변경 CtlColor ( OnCtlColor )
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
{
if(pWnd->GetDlgCtrlID() == IDC_STATIC)
{
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkColor(RGB(51, 51, 51));
}
}
}
// 객체 포인터 얻기
CSkinDialog* pFrame = (CSkinDialog*)AfxGetMainWnd();
CAntiScanForm* scan = (CAntiScanForm*) pFrame->m_antiScanForm->GetActiveWindow();
scan->FileScan();
// 리스트 컨트롤 에서 데이터 있는 영역의 마우스 우 클릭 팝업 메뉴 띄우기
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
CPoint CurrentPosition;
::GetCursorPos(&CurrentPosition);
INT nIndex = -1;
m_listSearch.ScreenToClient(&CurrentPosition);
nIndex = m_listSearch.HitTest(CurrentPosition);
if (-1 == nIndex)
{
// 아이템 없는 영역
}
else
{
// 아이템 영역에서 마우스 오른쪽 버튼을 선택한 경우
CMenu menu;
menu.LoadMenuA(IDR_MENU1);
CMenu *p_subMenu = menu.GetSubMenu(0);
CPoint p;
GetCursorPos( &p );
p_subMenu->TrackPopupMenu( TPM_RIGHTBUTTON , p.x,p.y,this);
menu.DestroyMenu();
}
// 리스트 컨트롤 행 / 열 단위 색상 지정 ( OnNMCustomdraw )
case CDDS_ITEMPREPAINT | CDDS_SUBITEM: // 행과 열 아이템에 대한 처리를 할 경우
nRow = (int)lplvcd->nmcd.dwItemSpec; // 행 인덱스를 가져옴
nSub = (int)lplvcd->iSubItem; // 열 인덱스를 가져옴
lplvcd->clrTextBk = RGB(94,94,94); // 해당 행, 열 아이템의 배경색을 지정한다.
lplvcd->clrText = RGB(255,255,255);
// 리스트 컨트롤 addItem 함수
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem= nItem;
lvItem.iSubItem = nSubItem;
lvItem.pszText = nData.GetBuffer();
if(nSubItem == 0){
m_report.InsertItem(&lvItem);
}else{
m_report.SetItem(&lvItem);
}
// 리스트 컨트롤 초기화
LVCOLUMN lvCol; // 컬럼 헤더
TCHAR *list[1] ={_T(" data ")};
int nWidth[1] = {628};
//LVCOLUMN 멤버 지정 -> 컬럼 삽입
lvCol.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvCol.fmt = LVCFMT_CENTER; // 정렬 방식
lvCol.cx = nWidth[0];
lvCol.pszText = list[0];
lvCol.iSubItem = 0;
m_report.InsertColumn(0,&lvCol);
// 현재 날짜 얻기
COleDateTime tmpTime;
CString curDate;
tmpTime = COleDateTime::GetCurrentTime();
curDate = tmpTime.Format(_T("Date : %Y-%m-%d"));
// 리스트 컨트롤 열 높이 지정하기
CImageList m_image; // 열 높이 지정
m_image.Create(1, 20, ILC_COLORDDB, 1, 0);
m_report.SetImageList(&m_image, LVSIL_SMALL);
//레지스트리 해당 키 존재 여부 검색
HKEY hKey;
if(RegOpenKey(HKEY_LOCAL_MACHINE,"S-1-5-21-*****-1000\\Software\cain",&hKey) ==ERROR_SUCCESS) // cain & abel
{
// 키 존재 AddItem 해줌
}
//리스트 컨트롤 체크박스 값이 변경됨에 따라 이벤트 처리
:OnLvnItemchangedList1
if ( pNMLV->uChanged == LVIF_STATE )
{
UINT nOldCheck = pNMLV->uOldState & LVIS_STATEIMAGEMASK;
UINT nNewCheck = pNMLV->uNewState & LVIS_STATEIMAGEMASK;
if((nOldCheck & 0x1000 ) &&(nNewCheck & 0x2000)){
CString text;
m_lvCheckCnt ++;
text.Format(_T("%d/%d"),m_lvCheckCnt,m_lvTotalCnt);
SetDlgItemText(IDC_SCANCNT,text);
}else if((nOldCheck & 0x2000) && (nNewCheck & 0x1000)){
CString text;
m_lvCheckCnt--;
text.Format(_T("%d/%d"),m_lvCheckCnt,m_lvTotalCnt);
SetDlgItemText(IDC_SCANCNT,text);
}
}
'MFC 인터페이스' 카테고리의 다른 글
파일 드로그앤 드롭 이벤트 처리 (0) | 2013.10.20 |
---|---|
리스트 컨트롤 스크롤 이동 (0) | 2013.10.20 |
디비 연동 (0) | 2013.07.09 |
리스트 컨트롤 선택된 객체 삭제 하기 (0) | 2013.07.05 |
리스트 컨트롤 선택된 객체 수정 하기 (0) | 2013.07.05 |