윈도우 7 프로그래밍 – 2 DarkKaiser, 2010년 6월 7일2023년 9월 5일 1. 썸네일 툴바(Thumbnail Toolbar) 아래와 같은 썸네일 툴바를 추가해보자. 우선 프로그램 시작시에 OLE를 초기화하도록 한다. ::InitInstance() 에 넣으면 좋겠다. CoInitialize(NULL); 이 후 전역변수를 선언하여 태스크바 버튼 생성 메시지를 등록한다. static UINT s_uTBBC = ::RegisterWindowMessage(L"TaskbarButtonCreated"); 등록한 이후에 이 메시지를 받기 위한 이벤트 핸들러를 선언한다. ON_REGISTERED_MESSAGE(s_uTBBC, OnTaskbarButtonCreated) LRESULT CMyDlg::OnTaskbarButtonCreated(WPARAM, LPARAM) { ITaskbarList3 Continue Reading
ON_REGISTERED_MESSAGE DarkKaiser, 2010년 5월 27일2023년 9월 6일 다른 프로그램과 메세지를 주고 받는 방법중의 한 가지… RegisterWindowMessage 함수를 사용하는 경우는 아래와 같이 메세지를 등록한다. UINT nRegMsg = RegisterWindowMessage("My Message"); 여기서 입력으로 들어가는 “My Message” 라는 문자열은 메세지를 서로 주고 받기로 한 프로그램간에 서로 약속한 문자열입니다. 이 함수는 메세지를 송신하는쪽이나, 메세지를 수신하는 쪽이나 모두 수행해야 합니다. 메세지가 등록되어 송수신 Continue Reading
VS2008, VS2010 지원 운영체제 DarkKaiser, 2010년 5월 27일2023년 9월 5일 VS2008에서 빌드된 실행 파일은 최소 윈2000 이상에서 실행되어져야 한다. VS2010에서 빌드된 실행 파일은 최소 WinXP SP3 이상에서 실행되어져야 한다. 그 이하의 운영체제에서는 실행되어 질 수 없다. VS2010에서는 멀티타겟팅 기능으로 2010 이하의 컴파일러로 빌드할 수 있는 기능을 제공해주긴 한다. Continue Reading
Visual C++ 2010에서 라이브러리 배포 정책 DarkKaiser, 2010년 5월 25일2023년 9월 6일 Central Deployment(중앙배포) Central deployment means that your Visual C++ DLLs are installed in the System32 directory. To centrally deploy your application, you can use one of the following: •The VCRedist_architecture.exe command-line tool. •Merge modules. VCRedist_architecture.exe installs all libraries for the specific hardware platform. Merge modules, or Continue Reading
SafeInt in Visual C++ 2010 DarkKaiser, 2010년 5월 25일2023년 9월 5일 참고 : http://www.nuonsoft.com/blog/2009/06/09/safeint-in-visual-c-2010/ VS2010에 추가된 라이브러리, 정수형 연산시에 오버플로우 확인이나 나눗셈시에 0으로 나누는 값 확인에 사용될 수 있다. 실제 아래 소스의 결과를 보면 연산 결과가 오버플로우시에는 결과값이 0으로 출력되며 이때 연산중에 SafeIntOnOverflow() 함수가 실행되는 것을 볼 수 있다. 또한 나눗셈 연산 시에도 나누는 값이 0이라면 연산시에 SafeIntOnDivZero() 함수가 호출되는 것을 Continue Reading
윈도우7 프로그래밍 – 1 DarkKaiser, 2010년 5월 24일2023년 9월 6일 1. 태스크바 CFrameWnd 클래스의 멤버 함수를 호출하여 태스크바에 추가 정보를 표시하는 오버레이 아이콘, 프로그레스바를 적용할 수 있다. – 오버레이 아이콘 표시SetTaskbarOverlayIcon(IDI_FILE_VIEW, L”Info”);// 오버레이 아이콘 표시SetTaskbarOverlayIcon(nullptr, nullptr);// 오버레이 아이콘을 없앤다. – 프로그레스바 표시SetProgressBarRange(0, 50);// 프로그레스 바의 범위 설정SetProgressBarPosition(50);// 프로그레스 바의 수치 설정SetProgressBarState(TBPF_INDETERMINATE);// 프로그레스 바의 상태 변경 Continue Reading
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