URL을 파싱하자 DarkKaiser, 2007년 7월 17일2023년 9월 6일 1. 요약 AfxParseURL()을 이용하여 URL을 파싱할 수 있다. 2. 본문 AfxParseURL()은 URL을 파싱하기위한 MFC 함수입니다. 사용법은 AfxParseURL의 인자로 URL의 문자열을 입력하면 서버와 프로토콜과 포트를 파싱해서 넘겨줍니다. BOOL AFXAPI AfxParseURL( LPCTSTR pstrURL, DWORD& dwServiceType, CString& strServer, CString& strObject, INTERNET_PORT& nPort ); 여기까지만 하면 너무 허전하죠… 그래서 MFC를 쓰지않는 프로그램에서는 이런 기능을 Continue Reading
VC++6 VC.NET용 STL 에러 메시지 해독기의 빠른 설치 가이드 DarkKaiser, 2007년 7월 17일2023년 9월 6일 VC++6_VC.NET용_STL_에러_메시지_해독기의_빠른_설치가이드.zip Continue Reading
new가 실패했을때의 처리 DarkKaiser, 2007년 7월 17일2023년 9월 6일 데브피아 김용현님의 글 보통 프로그래밍을 할때 new에 대한 실패 처리는 해주지 않고 코딩을 합니다. 문자열이나 new 를 쓰지 않는 어플리케이션은 없다고 해도 틀린말은 아니고 다음과 같은 코드는 일반적으로 많이 쓰이는 코드 입니다.char* szName = new char[128]; new 에 대한 에러 처리는 하지 않습니다. 만일, 아주 큰 new 를 많이 해야 Continue Reading
STL 제네릭 알고리즘 정리 DarkKaiser, 2007년 7월 17일2023년 9월 6일 accumulate() 기본적으로, 컨테이너의 요소들을 세 번째 인수로 지정한 초기값에 모두 더합니다. 기본 덧셈을 오버라이딩하기 위해 이항 연산을 넘길 수 있습니다. #include <numericiresult = accumulate(ia, ia + 9, 0); iresult = accumulate(ilist.begin(), ilist.end(), 0, plus<int()); adjacent_difference() 기본적으로 주어진 열 내에서 인접하는 각 요소의 차이를 값으로 하는 새로운 열을 생성합니다. Continue Reading
MS VC++6.0 프로젝트를 svn에 넣을 때 ignore 시킬 파일들 DarkKaiser, 2007년 7월 17일2023년 9월 4일 MS VC++6.0 프로젝트를 svn에 넣을 때 ignore (무시) 시킬 파일들 목록 아래의 파일들은 프로젝트를 열거나 컴파일 하면 자동으로 생성되는 파일이므로 svn 에 추가해줄 필요가 없다. */Debug */Release *.aps *.ncb *.opt *.plg *.scc *.clw *.positions *. obj *.idb *.res *.pch *.trg *.exp *.tlb *.[Tt]mp *.~* *.[Bb][Aa][Kk] *.tlh *.tli *_i.c *_p.c dlldata.c Continue Reading
Developer Studio 파일 확장자 설명 DarkKaiser, 2007년 7월 17일2023년 9월 4일 APS 리소스 파일에 대한 바이너리 파일. App Studio에서 리소스 파일을 로딩하는데 사용된다.(로딩 속도 향상) BSC 소스 브라우저 정보 파일(Browser database file). 이 파일은 BSCMAKER.EXE를 실행할 때 SBR파일로부터 생성된다. CLW 클래스위저드 상태 파일. 클래스위저드를 사용하여 추가되는 메시지 핸들링 함수 등과 관련된 정보들이 포함된다. DSP 메이크 파일(MAK)과 동일한 목적의 파일로 VC++5.0에서 사용한다. Continue Reading
STL string_split() DarkKaiser, 2007년 7월 16일2023년 9월 4일 inline void string_split(const std::string& c_st_parent, const std::string& c_st_sep, std::vector<std* pvec_st_child) { string::size_type base = 0; string::size_type end = 0; string::size_type sep_len = c_st_sep.length(); pvec_st_child-clear(); /* pvec_st_child-reserve(16); 적당한 크기로 공간을 예약해 주면 좋겠죠 : ) */ while ( (end = c_st_parent.find_first_of(c_st_sep, base)) = 0) { pvec_st_child-push_back(c_st_parent.substr(base, end Continue Reading
USB장치 연결/연결해제 이벤트 처리하기 DarkKaiser, 2007년 7월 16일2023년 9월 4일 USB 장치가 연결되거나 해제 됐을 때는 이벤트를 처리하는 방법을 여기 저기 찾아 보다가 대충 적어봅니다. 1. 메시지 맵 등록 메시지 맵에 이벤트를 함수와 연결 시킨다. BEGIN_MESSAGE_MAP(CDlg, CDialog) ON_MESSAGE(WM_DEVICECHANGE, fnDeviceChange) END_MESSAGE_MAP() 2. 이벤트를 받을 장치를 등록한다. 장치 등록은 RegisterForDeviceNotifications()함수를 이용한다 void CDlg::RegisterForDeviceNotifications() { DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface; HDEVNOTIFY DeviceNotificationHandle; DevBroadcastDeviceInterface.dbcc_size = sizeof(DevBroadcastDeviceInterface); DevBroadcastDeviceInterface.dbcc_devicetype Continue Reading
시스템 에러메시지 출력하기 DarkKaiser, 2007년 7월 16일2023년 9월 4일 시스템에서 발생한 에러 코드 번호를 그에 해당하는 에러 메시지로 변환하여 출력하는 소스 코드이다. void ShowErrorMsg() { LPVOID lpvMessage; /* retrieve a message from the system message table */ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpvMessage, 0, NULL); /* display the message in a message box */ MessageBox(hwndMain, lpvMessage, "Parent Message", MB_ICONEXCLAMATION|MB_OK); Continue Reading
리치에디터컨트롤 2.0 사용하기 DarkKaiser, 2007년 7월 9일2023년 9월 6일 리치에디터 1.0 뷰를 상속한 뷰 클래스에서 리치에디터 2.0을 사용하고자 할 경우에는 아래와 같이 작업한다. /* H 파일 */ HINSTANCE m_hinstRichEdit2; /* CPP 파일 */ CRichEditSampleView::CRichEditSampleView() { m_hinstRichEdit2 = LoadLibraryA("RICHED20.DLL"); } CRichEditSampleView::~CRichEditSampleView() { if(m_hinstRichEdit2 != NULL) FreeLibrary(m_hinstRichEdit2); } BOOL CRichEditSampleView::PreCreateWindow(CREATESTRUCT& cs) { if(m_hinstRichEdit2) { #ifdef UNICODE m_strClass = "RichEdit20W"; #else m_strClass Continue Reading