프로그래밍/VC++ 58

Dialog Based의 트리컨트롤에서 Enter키를 눌러서 라벨내용 바꾸는 경우

BOOL CProjectLeft::PreTranslateMessage(MSG* pMsg) { // 윈도우로 전달되는 메세지를 해당 윈도우가 처리하기 전에 가로채서 // 특정 작업을 수행해야 할 필요성이 있을 때 재정의하여 사용한다. switch(pMsg->message) { case WM_KEYDOWN: switch(int(pMsg->wParam)) { case VK_F5: // 다시 보여주기 return TRUE; break; case VK_F2: HTREEITEM hSel = m_tree1.GetSelectedItem(); m_tree1.SetFocus(); m_tree1.ModifyStyle(0, TVS_EDITLABELS); CEdit* pEdit = m_tree1.EditLabel(hSel); ..

MainFrame, Doc, View 포인터 얻기

1. MainFrame 포인터 얻기 CMainFrame *frame = (CMainFrame*)AfxGetMainWnd(); 2. Doc 클래스 포인터 얻기 CxxxDoc *pDoc = (CxxxDoc*)(frame->GetActivedocument()); 3. View 클래스 포인터 얻기 CxxxView* pView = (CxxxView*)((CMainFrame*)(AfxGetApp()->m_pMainWnd))->GetActiveView(); 자주쓰이는 MFC 클래스 간의 통신입니다. 외워쓰기에는 시간이 아깝고, 매번 찾으려면 귀찮았는데 한번에 모아놓으니 편리하네요.^^ [SDI 형태] 1. MainFrame 얻기 - CMainFrame *pFrame = (CmainFrame *) AfxGetMainW..

ActiveX 빌드 후 bin 디렉토리에 복사하는 이벤트

먼저 Bin 디렉토리에 복사한 후 그 복사된 파일을 regsvr 해야 한다. 아래와 같이. (Release와 Debug에 똑같이 그냥 복사해서 넣기만 하면 된다.) Copy "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\bin\$(TargetFileName)" regsvr32 /s /c "$(ProjectDir)..\..\bin\$(TargetFileName)" 음.. 위 방법은 약간 문제가 있다. 나는 디버그 모드일 때는 끝에 D를 붙이고 싶은데 이건 그렇게 안된다. 디버그 모드일 때는 뒤에 D를 붙이고(예:axFile.ocx axFileD.ocx), lic 파일까지 복사하는 예제는 다음과 같다. Copy "$(TargetDir)$(TargetFileNam..

GDI+ 사용하기

① #include 이 헤더 파일에 GDI+의 모든 타입, 열거형, 클래스 등이 선언되어 있다. gdiplus.h를 반드시 인클루드해야 하며 플랫폼 SDK가 지정된 경로에 설치되어 있어야 한다. 이 헤더 파일을 열어 보면 GDI+의 기본적인 선언문들을 직접 구경할 수 있는데 gdiplus.h는 GDI+의 모든 헤더를 포함하는 헤더 파일 컨테이너라고 할 수 있다. ② using namespace Gdiplus; GDI+의 모든 명칭은 GdiPlus 네임 스페이스에 포함되어 있다. 따라서 클래스 이름과 열거형 이름앞에 GdiPlus::을 일일이 붙여야 하는데 너무 번거로우므로 using 지시자를 사용하여 GdiPlus 네임 스페이스에 선언된 모든 명칭을 전역 영역으로 가져 오도록 한다. 이 지시자에 의해 컴..