Invalidate() VS UpdateWindow() 차이점 DarkKaiser, 2010년 5월 24일2023년 9월 4일 InvalidateRect()는 윈도우의 클라이언트 영역 중에서 일부분을 무효화 시키는 것입니다.이때, 첫번째 인자는 어떤 윈도우인지를 가리키는 윈도우 핸들이고,두번째 인자는 무효과시킬 사각 영역 좌표입니다. 이게 NULL이면 클라이언트 영역 전체라는 것이구요.그리고 세번째 인자는 그 무효화 영역이 지워지고 다시 그려져야 하는지를 설정합니다. 만약 TRUE이면, 그 윈도우에게는 WM_ERASEBKGND 메시지가 한번 날려지고, WM_PAINT 메시지가 Continue Reading
분할 윈도우 사용방법 DarkKaiser, 2010년 5월 19일2023년 9월 5일 1. 동적 분할 윈도우 - MainFrm.h CSplitterWnd m_wndSplitterWnd; - MainFrm.cpp BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { return m_wndSplitterWnd.Create(this, 2, 2, CSize(1, 1), pContext); // return CFrameWnd::OnCreateClient(lpcs, pContext); } 위와 같이 하면 동적 분할 윈도우를 생성하여 사용할 수 있다. 2. 정적 분할 윈도우 - MainFrm.h CSplitterWnd m_wndSplitHor; //수평 분항 CSplitterWnd m_wndSplitVer; Continue Reading
IP 주소 컨트롤의 간단 사용법 DarkKaiser, 2010년 5월 18일2023년 9월 5일 IP 주소 컨트롤의 클래스 변수로 DWORD를 지정하여 아래와 같이 사용할 수 있다. 1. IP 문자열을 32비트로… // 인자로 전달받은 문자열에 해당하는 IP 주소를 32비트로 변환 DWORD dwAddress = inet_addr("10.1.1.100"); 2. 32비트를 IP 문자열로… // 네트워크 순서로 정렬된 값을 호스트 순서로 변환 DWORD dwAddress = ntohl(m_dwAddress); // 입력받은 32비트 IP 주소를 Continue Reading
페이저 컨트롤 DarkKaiser, 2010년 5월 18일2023년 9월 5일 페이저 컨트롤은 도구 모음이나 버튼처럼 스크롤 기능이 없는 윈도우에 스크롤 기능을 제공하는 역활을 합니다. .h CPagerCtrl m_wndPager; CToolBar m_wndToolBar; afx_msg void OnCalcSize(NMHDR * pNotifyStruct, LRESULT * result); .cpp ON_NOTIFY(PGN_CALCSIZE, 1234, &CPagerDemoView::OnCalcSize) OnCreate() { ... m_wndPager.Create(WS_VISIBLE | WS_CHILD | PGS_HORZ, CRect(0, 0, 100, 32), this, 1234); m_wndToolBar.CreateEx(&m_wndPager); m_wndToolBar.LoadToolBar(IDR_MAINFRAME); m_wndPager.SetChild(m_wndToolBar.m_hWnd); m_wndPager.SetButtonSize(10); m_wndPager.SetBorder(0); Continue Reading
CListCtrl에서 Drag & Drop 구현 DarkKaiser, 2010년 5월 18일2023년 9월 5일 .h CImageList* m_pImgListDrag; .cpp void CDragDemoDlg::OnLvnBegindragListLeft(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // ptDrag : 드래그하는 항목의 ListCtrl 기준 좌표 CPoint ptDrag, ptAction; m_nIndexLeftSel = pNMLV-iItem; m_pImgListDrag = m_List_Left.CreateDragImage(pNMLV-iItem, &ptDrag); m_pImgListDrag-SetBkColor(RGB(0, 0, 0)); ptAction = pNMLV-ptAction; SetCapture(); m_pImgListDrag-BeginDrag(0, ptAction - ptDrag); m_List_Left.ClientToScreen(&ptAction); m_pImgListDrag- Continue Reading
CListCtrl의 헤더 컨트롤 드래그 & 드랍 및 정렬 DarkKaiser, 2010년 5월 18일2023년 9월 6일 //헤더 컨트롤 드래그-앤-드롭 가능 DWORD dwExStyle = m_List.GetExtendedStyle(); m_List.SetExtendedStyle(dwExStyle | LVS_EX_HEADERDRAGDROP ); // 헤더 컨트롤을 통한 정렬을 가능하도록 한다. m_bAscending = FALSE; m_List.SortItems(&CHeadCtrlDemoDlg::CompareItem, (DWORD_PTR)this); UpdateArrow(); // 헤더 컨트롤의 HDN_ITEMCLICK 메시지 핸들러 void CHeadCtrlDemoDlg::OnHdnItemclickList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMHEADER phdr = reinterpret_cast<LPNMHEADER(pNMHDR); if(phdr-iItem == 0) { m_bAscending = !m_bAscending; Continue Reading
CListCtrl의 그룹관리 DarkKaiser, 2010년 5월 18일2023년 9월 5일 //1.그룹 생성 및 추가 LVGROUP group; ::ZeroMemory(&group, sizeof(group)); group.cbSize = sizeof(group); group.mask = LVGF_HEADER | LVGF_GROUPID; group.pszHeader = _T("First Group"); group.iGroupId = 10; m_List.InsertGroup(-1, &group); group.pszHeader = _T("Second Group"); group.iGroupId = 20; m_List.InsertGroup(-1, &group); //2.아이템 추가 LVITEM item; ::ZeroMemory(&item, sizeof(item)); item.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_GROUPID; CString strItem = Continue Reading
tinyxml 정리 DarkKaiser, 2010년 5월 13일2023년 9월 4일 http://lyb1495.tistory.com/entry/C-XML-Parser-TinyXml Continue Reading
SAX를 이용한 Java XML 샘플 코드 DarkKaiser, 2010년 5월 12일2023년 9월 6일 import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; public class SaxSample { public static void main(String[] args) { // SAX를 준비한다. SAXParser saxParser = null; try { SAXParserFactory saxFactory = SAXParserFactory.newInstance(); saxParser = saxFactory.newSAXParser(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } // 핸들러를 작성한다. Continue Reading
for each DarkKaiser, 2010년 5월 10일2023년 9월 6일 참고 : Vector Container Iterating 속도 비교(http://npteam.net/775) VS2005부터는 for each, in 키워드를 지원한다.for each 문은 C#이나 JAVA 5 버전부터 지원하는 키워드이나 VS2005부터 지원한다. C++ 표준은 아직 아니고 MS Specific 이다.MS의 for each 문은 향상된 for 문으로 STL이나 CLR의 Collection을 지원한다. 하지만 안타깝게도 VS2005부터 사용되는 ATL Collection Continue Reading