MFC 6

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

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

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