프로그래밍/VC++ 58

Dialog에 ScrollView 상속받아 만든 클래스 붙이기

아래꺼 해봤는데 실제로 잘 된다. 출처 : http://ninvu.egloos.com/2761264/ Dialog Base프로젝트에 View를 붙여보자 예) 1. Dialog base로 이름이 ViewTest라는 프로젝트를 생성해 보자.. CViewTestApp, CViewTestDlg 라는 클래스가 생긴다.. 2. Dialog에 붙일 View를 생성해보자.. CTestView 클래스를 생성하고 CSrollView에서 상속을 받자.. (View는 ScrollView로 테스트 해보자.. 일반뷰도 마찬가지다..) 3. View도 만들어 졌으면.. ViewTestDlg.cpp에 View를 include하고 OnCreate()에 다음과 같이 추가해 보자.. CRuntimeClass *pObject; pObjec..

MFC OCX에 strmbasd.lib를 넣으면 error LNK2001: "class CFactoryTemplate * g_Templates 에러나는 경우 해결

MFC AcitveX에 strmbasd를 추가하고 컴파일하는 순간 Dialog Based에서는 잘 되던게 바로 아래와 같은 6개의 빌드오류를 내버린다. axLiveSourceRecorder error LNK2001: "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A) 외부 기호를 확인할 수 없습니다. axLiveSourceRecorder error LNK2001: "int g_cTemplates" (?g_cTemplates@@3HA) 외부 기호를 확인할 수 없습니다. axLiveSourceRecorder error LNK2019: __imp__timeGetTime@0 외부 기호("void __stdcall DbgIn..

인터넷의 파일 하나를 열고 한줄씩 읽어오기.

#include "afxinet.h" CInternetSession session; CInternetFile * pFile = NULL;// 파일을 연다. pFile = (CInternetFile *)session.OpenURL("http://www.janchiall.com/selfdesign/admin/product/template/yakdo/yakdotest.asp");// 읽어들일 버퍼사이즈를 설정한다. pFile->SetReadBufferSize(4096);// 데이터를 한줄씩 읽어온다. CString strData; for (;;) { if (!pFile->ReadString(strData)) break; MessageBox(strData); }delete pFile;

VC++ 최고 수준으로 경고 나타내기

1. 경고 수준 : Level 4, 경고를 오류로 처리 -------------------------------------------------- 일단 궁금한게 Debug mode에서 Rebuild All with BoundChecker메뉴로 컴파일하셨는데도 님의 소스코드에서 아무것도 안잡혀나왔는지 궁금하고요... 그 전에 Project Settings에서 Warning Level을 4로 맞추시고, Warnings As Error까지 켜놓고 0 errors, 0 warnings로 완벽 컴파일될때까지 작업하셨는지 궁금합니다. BoundChecker는 대개 위와 같이 Level 4 Compiling을 완성한 다음에 추가적으로 생겨나는 버그들을 잡아줄 때 사용하고 있는데요, MFC 내부에서조차 디버깅에 방해가..

BSTR

BSTR : 문자열 길이를 시작전에 저장하고, 이어서 유티코드문자열을 저장하는 방식 LPCWSTR -> BSTR : 생성안됨. 생성함수를 이용해야 함. BSTR bstr = sysAllocString(L"HELLO HI"); // 메모리 할당 sysFreeString(bstr); // 메모리 제거(*._bstr_t :BSTR 랩퍼 클래스, 메모리 할당/제거를 자동으로 수행 . LPCSTR, LPCWSTR -> _bstr_t :_bstr bstr = "hello hi"; . _bstr_t -> LPCSTR, LPCWSTR : LPCSTR psz1 = (LPCSTR)bs1; . _bstr_t -> BSTR : 형변환 안됨. 함수이용 BSTR bstr = bs1.copy(); sysFreeString(bstr..

ActiveX로 인스톨러 만들기

ActiveX Installer 만들기ActiveX 를 만들다보면, Cab파일을 만들어서 배포하는데, 잘 안되는경우가 있습니다.시스템을 리부팅해야 한다는둥, 이전버젼이 계속 안지워지고, 매번 계속 다운을 받는다든가 하는 상황이 발생할때가 있습니다.물론 inf랑 cab파일 다 잘만들었을때 얘기죠그래서 저는 , 강제로, 이전버젼의 aCtiveX를 강제로 삭제하고, 새로운버젼을 시스템 디렉토리에 복사한다음, regsvr32까지 해주는 프로그램을 만들어서 씁니다. cab파일을 받았을때 AcitveX를 설치하고 등록하고 업데이트 하는 일을 명시적으로 직접 프로그램에서 하는거죠 . Required Skill1. ActiveX ( ???.ocx) 파일을 실행파일에 포함시키는 방법 2. 파일을 regsvr32 사용해서..

CString , BSTR , CComBSTR , CComVariant 간의 자료형변환

인클루드 #include CString bstrToCString(BSTR bstr) { char* pbstr; USES_CONVERSION; //convert를 위한 매크로 pbstr=OLE2A(bstr); //bstr을 char로 convert return CString(pbstr); } BSTR CStringTobstr(CString str) { return str.AllocSysString(); //CString을 bstr로 convert }[bstr-> char*] BSTR inputdata; char *pbstr; pbstr=OLE2A(inputdata);[char* -> bstr] TCHAR szTitle[ 512 ]; _bstr_t bstrText = szTitle; *bstrTitle = ..

TLB도 Release, Debug 모드에 맞춰서 Import 하자.

지금 방금 있었던 일. dkErr CAxStoryBoardCtrl::makeThumbnail(BSTR BinItemURN,HBITMAP *hbitmap,int Width,int Height,dkTime nPos /*= -1*/) { HRESULT hr; char * pBuffer = NULL; hr = m_pCaptureFrame->SaveVideoPictureToFile(BinItemURN, L"C:\\a.bmp", nPos, Width, Height); if (FAILED(hr)) { AfxMessageBox("비디오 저장 실패"); return hr; } hr = m_pCaptureFrame->GetVideoPicture(BinItemURN, nPos, Width, Height, &pBuffer);..