분류 전체보기 120

[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

UltraVNC 스터디 계획

UltraVNC는 공개 소스로 제공되는 원격 제어 응용 프로그램이다. UltraVNC의 특징은 화면 전송에 VNC에서 공통으로 사용하는 화면 처리 방식외에 윈도 드라이버와 연결하여 빠른 속도로 그리기 정보를 전달하는데 있다. 그래서 나는 VNC 에서 공통적으로 처리되는 화면 처리 방법 다수의 클라이언트와 상대하는 방법 여건이 된다면 윈도 드라이버와 연동하는 방법 을 스터디할 계획이다. 원래 주소 : http://www.uvnc.com UltraVNC is a powerful, easy to use and free software that can display the screen of another computer (via internet or network) on your own screen. The p..

VNC 스터디 2008.06.20

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

[MSSQL] Named-Pipe 로 접속하기

const strConnection = "provider=sqloledb;network address=\.pipesqlquery;network library=dbnmpntw;uid=xxxx;pwd=xxxx;" Network Address, Network Library 를 지정함으로서 사용가능하다 TCP/IP 를 꺼버림으로서 불필요한/유해한 접속을 차단한 수 있다. 하지만 Named-Pipe 를 쓰더라도 가급적 방화벽으로 한번 더 가려주는게 안전하다 ----------- 네트웍 라이브러리 종류 dbnmpntw(명명된 파이프), dbmsrpcn(멀티프로토콜), dbmsadsn(AppleTalk), dbmsgnet(VIA), dbmslpcn(공유 메모리), dbmsspxn(IPX/SPX), dbmssocn(T..

기타 2007.06.20

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

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