본문 바로가기
반응형

C & C++444

[IP] Lan Card 정보 추출 void CTestDlg::OnButton1() { CString LocalAdap; CString LocalMac; CString LocalIP; CString LocalSub; CString LocalGate; PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INFO pAdapter = NULL; DWORD dwRetVal = 0; BOOL m_bBreak = FALSE; pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); unsigned long ulOutBufLen = sizeof(IP_ADAPTER_INFO); if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != .. 2011. 4. 18.
[MFC] 화면 갱신 우선처리 어떠한 작업 코드 전에 화면 처리 코드를 넣어도 의도와 달리 작업이 끝난 후에 화면 갱신이 되는 경우가 있습니다. 작업이 순식간에 끝나는 경우라면 별 차이가 없지만 작업이 오래 걸리는 경우, 의도와 다른 결과를 보게 됩니다. 이것은 메세지 큐에서 대부분 메세지를 순서대로 처리하지만, WM_PAINT는 가장 나중에 처리 되기 때문 입니다. (화면변경 작업이 다 끝난 후에 일괄적으로 화면 갱신을 하겠다.. 뭐 이런 마소의 의도겠죠) 특히 OnInit시에 유용하게 쓰일 수 있습니다. 이 경우 메세지 큐의 메세지들을 강제로 뽑아내서 WM_PAINT를 잡아내어 처리하면 됩니다. MSG msg; while(1) { if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) ) { if( msg.. 2011. 4. 18.
[Dialog] 제목표시줄(비작업영역)에 버튼을 만들려면?? 버튼 2개를 작성해 보겠습니다. 1. 먼저 버튼을 디자인(?) 하셔서 4개의 비트맵을 만들어줍니다. IDB_BTN1OFF, IDB_BTN1ON, IDB_BTN2OFF, IDB_BTN1ON, 2. 다음 넣고자 헤더에 인크루드 해주십시요. #include "CaptionButton.h" SetBmpID(2, IDB_BTN2OFF, IDB_BTN2ON, TRUE); // 일반 버튼의 효과를 내줍니다. m_pCapBtn1->EnableButton(TRUE); // 버튼을 사용할 수 있게 해야겠죠 ? m_pCapBtn2->EnableButton(TRUE); // 사용 못하시게 할려면 FALSE를 주십시요. 5. OnDestroy() 부분에는 if(m_pCapBtn1) delete m_pCapBtn1; if(m_p.. 2011. 4. 18.
[IP] IE BHO 전용 브라우져 시 새창 띄울때 IE모양 바꾸기~ 전용 브라우져를 만들고 새창을 띄울수 있습니다. 전용 브라우져로 띄우지 않고 일반 IE로도 연결 가능합니다. 그때 일반 IE의 스타일을 변경코져 할때 사용하는 방법입니다. 스타일은 여러가지 이기 때문에 MSDN을 참조 해주시면 더욱 자세한 사항을 아실수가 있습니다. 지금은 제가 필요한 부분만 코딩한 거라서 ~~ ^^ 참조만 부탁 드리겠습니다. 일단 리소스 뷰에서 ocx 웹컨트롤을 선택하시고 ~ 새창이 열릴때의 이벤트가 NewWindow2Explorer1 입니다. 그곳에서 정의를 해주면 새창이 열릴때 그 스타일 대로 MS IE가 띄어지게 됩니다. void CXXXXXDlg::NewWindow2Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel) { IWebBrowser2 *pIE .. 2011. 4. 18.
[Tip] 기본 프린트 셋팅 가져오기 PRINTDLG PrtDlg; if (!AfxGetApp()->GetPrinterDeviceDefaults(&PrtDlg)) // 기본 프린터 셋팅을 얻는다 { AfxMessageBox("기본 프린터가 설정되어 있지 않습니다..."); return FALSE; } 인쇄 다이얼로그를 띄우지 않고 그 값을 셋팅합니다. CPrintDialog dlg(FALSE); dlg.m_pd.hDevMode = PrtDlg.hDevMode; //현재 설정을 얻는다 LPDEVMODE pDevMode = (LPDEVMODE) ::GlobalLock(dlg.m_pd.hDevMode); if (NULL == pDevMode) { ::GlobalUnlock(dlg.m_pd.hDevMode); AfxMessageBox("Get Pr.. 2011. 4. 18.
[Tip] 프린터 등록정보 안띄우고 인쇄 하는 방법 CPrintDialog *pDlg=new CPrintDialog(FALSE); //대화상자 실행 if(pDlg->DoModal()==IDCANCEL){ delete pDlg; return; } 위의 코드를 CPrintDialog *pDlg=new CPrintDialog(FALSE); //DOCINFO di={sizeof(DOCINFO),"프린트",NULL); pDlg->GetDefaults(); 이렇게 하면 현재 기본프린터로 설정된것을 가져오네요..ㅎㅎㅎ;;; 그리고 가로 세로 설정은 그냥 그대로 DEVMODE * pDevmode; pDevmode = pDlg->GetDevMode(); pDevmode->dmOrientation = DMORIENT_LANDSCAPE; 이렇게 사용해도 됩니다. OnPrep.. 2011. 4. 18.
반응형