Win32 , C++ 28

[MFC] ADO Recordset 의 값 읽기

직접적으로 MFC 프로젝트에서 쓸 일은 별로 없긴한데, 가끔 쓸때마다 삽질을 해서 정리함. 1. 현재 레코드의 필드값 가져오기 (서수 번호로) spRecordset->Fields->GetItem(CComVariant((short) idx)); Field 번호를 지정해서 가져오는 경우 (short) 로 필드 번호를 기록해 준다. 그렇지 않으면 '800a0bcd', '0x800A0CC1' 등의 예외가 발생한다. 2. 커서 종류를 보고 MoveFirst 를 하자.. Forward only 커서 계통은 MoveNext 만 가능하다. 역시나 이 부분 때문에 예외가 발생한다. 3. VARIANT 에 대한 처리 확실히 하기 확인은 안해 봤지만 아래처럼 과감하게 -_- CString str; switch(var.vt)..

Win32 , C++ 2008.07.31

MFC 메세지박스 제목 바꾸기

보통 수정을 하지 않은 상태에서 MFC 에 있는 MessageBox 또는 AfxMessageBox 를 사용할 때 메세지박스의 제목(caption) 을 지정하지 않을 경우 실행 파일의 이름이나 처음 프로젝트 만들때 지정한 텍스트가 나오게 된다 더구나 그 제목에 표시되는 텍스트가 레지스트리/INI 에 저장할 때도 그대로 쓰이게 된다 이를 바꾸기 위해서는 1. 리소스 스트링 테이블에 AFX_IDS_APP_TITLE 이 있는 경우 해당 값을 바꾸면 되고 2. CWinApp 의 m_pszAppName 을 초기 코드에서 바꿔주면 된다 참고로 m_pszAppName 을 수정하기 할때 문자열이 지속적으로 메모리에 남아있도록 해야한다. //First free the string allocated by MFC at CWi..

Win32 , C++ 2008.07.25

IP 주소로 MAC 주소 구하기

원본글에 있는 프로젝트를 받아 간단하게 함수 형태로 변환한 소스. WOL 등에 필요한 Mac Address 를 구하기 위해. 원본글 : 찾아가기 ---------------------------------- #include #pragma comment(lib, "iphlpapi.lib") CString GetMacByIP(const CString& strIP) { CAsyncSocket sock; sock.Create(1000, SOCK_DGRAM); sock.SendTo(&sock, 1, 1000, strIP); CString strMAC; PMIB_IPNETTABLE pIPNetTable; pIPNetTable = (MIB_IPNETTABLE*) malloc( sizeof( MIB_IPNETTABLE..

Win32 , C++ 2007.11.12

가변 인자 처리 샘플

항상 잊을만 하면 쓸 필요가 생기는 코드. 내부적으로 trace 를 구현할 때 참 유용하다. 특히 MFC 의 TRACE 는 유니코드 문자열을 지원하지 못하기 때문에 MFC 로 유니코드 어플리케이션을 만들때 急 필요한 코드 조각이다. 기왕이면 아래 1024 바이트를 스택에 만드는 것보다 스레드 별로 TLS 를 만드는 편이 더 낫겠다는 생각이 글 쓰면서 들었다 -_- // 1. 일반적인 코딩 void _DBGTRACE(TCHAR* format, ...) { TCHAR buf[1024]; va_list marker; va_start(marker, format); _vstprintf(buf, format, marker); va_end(marker); OutputDebugString(buf); } // 2. 안전..

Win32 , C++ 2007.06.29

윈도 표준 로그인 다이얼로그 표시

CredUIPromptForCredentials - creates and displays a configurable dialog box that accepts credentials information from a user. 예) #include #pragma comment(lib, "Credui.lib") ... TCHAR name[100] = _T("화면에 미리 표시될 이름"); TCHAR passwd[100] = _T("화면에 미리 표시될 비밀번호"); BOOL save = FALSE; CREDUI_INFO info; info.cbSize = sizeof(CREDUI_INFO); info.hwndParent = NULL; info.pszCaptionText = _T("제목!"); info.pszMe..

Win32 , C++ 2007.05.16

Delphi 어플리케이션에 사용할 VC 만들기/사용하기

DLL 만드는 기초 우선 아래에 대해 이해를 해야한다 1) C++컴파일러의 특성 2) 인터페이스 규칙 3) 헤더 만들기 1. 다른 제품간의 C++ 호환성 컴파일러에 의해 생성되는 .obj/.lib 파일 출력에서 OMF, COFF 형식의 차이가 발생한다 이는 C++ 컴파일러에 의해 함수명 앞뒤로 전달 인자에 대한 정보가 붙기 때문이다. 예를 들어 Microsoft C++ 컴파일러는 int CPUReset(void *) 를 별도의 설정이나 명시된게 없을 경우 ?CPUReset@@YAHPAX@Z 이런 이름으로 내보내게 된다. 문제는 앞뒤에 달라 붙는 정보가 컴파일러 제조사/규격 마다 다르기 때문에 호환이 되지 않게 된다. 따라서 이기종 컴파일러와 인터페이스를 하기 위해선 앞뒤에 정보가 빠진 함수 본래 이름만 ..

Win32 , C++ 2007.01.13

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