분류 전체보기 120

MFC DHTML 기반 다이얼로그에 리소스에 있는 이미지 사용하는 방법

예전에 Pubby 만들때 몰라서 애먹었다 -_- 기본 과정 : 1. RESOURCE 파일에 HTML (VS2002 이상에서는 HTML 문서로 인식해 편집에 편리) 등의 항목을 추가후에.. HTML 파일을 추가해준다 2. HTML 파일 내에 이용하는 이미지 파일을 포함시키기 위해 별도의 리소스 섹션을 만들어 추가 이 때 가급적 숫자로 해당 이미지를 추가하면 작업하기 편하다 3. HTML 파일의 이미지 경로를 수정해준다. 4. HTML 파일의 이미지 또는 href 경로에 "리소스섹션명/ID" 형식으로 기록한다. ---- RC 파일에서 발췌 --------------- IDR_HTML_PAGE HTML "my_html.htm" 100 MY_IMG "intro_images/01.gif" 101 MY_IMG "i..

Win32 , C++ 2007.01.03

ATL Object 에 이벤트 발생 기능 추가하기 (ConnectionPoint)

IDispatch 인터페이스를 통해 이벤트를 전달하는 역할을 한다 구현 방법: Wizard 사용! -__- 1. IDL 파일에 dispinterface xxxx 형태로 정의하고 필요한 원형은 id(x) 함수원형 2. 구현클래스에 ConnectionPoint 지정 하면 CProxy_xxx 에 Fire_xxx 함수 구현 된다 3. 해당 구현 클래스에서 Fire_xxx 함수 사용하면 OK 참고 사항: Internet Explorer 에서 사용하기 위해서는 IProvideClassInfo2Impl 를 구현해 줘야 하고 InterfaceMap 에는 IProvideClassInfo, IProvideClassInfo2 를 추가해줘야 한다 덤으로 IObjectSafety 필요

Win32 , C++ 2006.11.14

MFC SDI/MDI 에서 View 전환하기

허구언날 돌아댕기는 소스.. 간혹 유용하더라.. 하지만 2008년 이 글을 옮기는 시점까지 이 소스 한번 써봤다는거... void CMainFrame::ChangeView(CMainFrame::MakerViewMode viewmode) { CString szFrameTitle = _T(""); CRuntimeClass* pNewViewClass; CView* pActiveView = GetActiveView(); INT nViewIndex; switch(viewmode) { case 1: nViewIndex = 2; pNewViewClass = RUNTIME_CLASS(CViewSwitchingView); break; case 2: nViewIndex = 2; pNewViewClass = RUNTIME_..

Win32 , C++ 2006.10.03

특정 EXE/DLL 파일의 버전 읽기

파일 버전 읽기 // 버전 체크 // 함수1 : 자기 자신의 버전을 읽어서 ptr 에 복사한다. ptr ~ ptr+7 사용 BOOL GetMyVersion(LPBYTE ptr) { CString filename; filename = __argv[0]; // 자기 자신의 파일 이름 읽기 VS_FIXEDFILEINFO *fileinfo=NULL, easy; // 쿼리 함수에서 할당해 준다.. 포인터의 포인터를 넘긴다!! DWORD dwHandle, dwVersionInfoSize = GetFileVersionInfoSize(filename, &dwHandle); // 전체 버전 정보 받을라꼬! _ASSERTE(dwVersionInfoSize != 0); if(dwVersionInfoSize == 0) ret..

Win32 , C++ 2006.08.04

프로그램 실행 중 ActiveX 로드하기

Classwizard 도움없이 CAxWindow.Create 로 실제 보여줄 윈도우를 만들고 CAxWindow 의 IAxWinHostWindow 를 쿼리해서 얻고 IAxWinHostWindow 에서 CreateControl 로 필요한 컨트롤을 생성한다 CAxWindow axObject; CComPtr spHost; axObject.Create(m_hWnd, rect, NULL, WS_CHILD | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE); axObject.QueryHost(&spHost); spHost->CreateControl( [CLSID], axObject, NULL ); axObject.QueryControl( [interface implemented object] ); --..

Win32 , C++ 2006.08.04

ATL Composite Control 에서 Edit 컨트롤 글자 깨지는 문제 해결 방법

선언부에 // editbox CContainedWindow m_EditCtrl; 추가 생성자에 추가로 :m_EditCtrl(_T("EDIT"), this, 1) 해서 초기화 하고 ALT_MSG_MAP(1) WM_IME_CHAR 추가 여기서 1은 위에 1과 같은 번호이다 나머지 코드는... LRESULT CMyCompositeControl::OnEditImeChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { static char kk[3]; kk[0] = (char) (wParam & 0xff); kk[1] = (char) (wParam >> 8); m_EditCtrl.SendMessage(EM_SETSEL, 0, -1); m_EditCtrl...

Win32 , C++ 2006.08.04

Registering an Application to a URL Protocol

간혹 인터넷을 하다 보면 http, ftp 등 익숙한 프로토콜 이름이 아닌 mms, rtp, rts, edonkey 등 못 보던 프로토콜 이름을 봤을 것이다. 해당 링크를 클릭하면 특정 프로그램이 반응하도록 되어 있는데, 이 기능을 구현하는 방법을 설명해보겠다 -0-/ 아래 내용, 제목은 MSDN 이 출처이니 아쉬운 사람은 더 찾아 보도록! protocol://URL/sub/sub/file 웹페이지에 해당 protocol 이 포함된 링크가 포함되었을 때 반응하는 어플리케이션 정의 응응프로그램이 특정 URL 프로토콜을 취급하도록 하려면, HKEY_CLASSES_ROOT 레지스트리에 적정 키와 값을 추가해야한다 새로운 레지스트리 키는 추가될 특정 protocol scheme(http 같은)와 일치해야 한다...

Win32 , C++ 2006.08.04