묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨MFC Windows 프로그래밍 - 기본
메시지 루프에서 메시지 처리 성능 비교: WinAPI vs MFC
안녕하세요. WinAPI에서는 메시지가 많이 쌓이면 switch case문으로 처리하기 때문에 병목 현상이 생긴다고 말씀을 하셨는데요. 그러면 MFC에서는 메시지 맵으로 처리한다면 병목 현상이 확 줄어드나요? 성능 차이가 그렇게 심하게 나는지 궁금합니다.
-
해결됨MFC Windows 프로그래밍 - 기본
커스텀 드로우에 대해서도 다루나요?
아직 전부 듣지는 못했지만, 혹시 후반부에 커스텀 드로우에 관해서도 다루나요?
-
해결됨MFC Windows 프로그래밍 - 기본
MainFrame 에서 LButtonDown 이벤트 처리 질문
WM_LBUTTONDOWN 메시지는 View로 밖에 안가는 것 같은데, 해당 이벤트를 MainFrame에서 처리할 수 있는 방법은 없는걸까요? MainFrame 에 OnLButtonDown 핸들러를 아무리 설정해놓아도, MainFrame윈도우로는 버튼클릭 메시지가 안오는 것 같습니다.이렇게, 윈도우에 따라 처리할 수 있는 메시지도 차이가 있는 것일까요??
-
해결됨MFC Windows 프로그래밍 - 기본
윈도우 프로그래밍 UI 관련 질문입니다
안녕하세요수업 잘 듣고있습니다MFC수업중에 UI를 구성을 할 때에 Web기술(html,css)를 접목을 시켜야야근이 줄어든다고 여러번 말씀 해주셨습니다 해당 기술을 공부를 해보려면 어떤 키워드로 구글에 검색을 해봐야 알 수가 있을까요?검색을 해봐도 명확하지 않아 선생님께 여쭤봅니다
-
해결됨MFC Windows 프로그래밍 - 기본
유튜브 강의와 차이점
안녕하세요 !강의 수강을 하려고 하는데 유튜브로 올려주신 강의와 내용에서 어떤 차이가 있는지 궁금합니다!
-
해결됨MFC Windows 프로그래밍 - 기본
책 질문입니다.
윈도우 프로그래밍 기초편/응용편 Windows Programming (2006) 두 권의 책을 빌려서 보고 있었습니다. "열혈강의 Visual CPP 2008 MFC 윈도우 프로그래밍" 책이 위 두권을 포함한 다음 버전인지아니면 별개의 다른 종류의 책인지가 궁금합니다.
-
해결됨MFC Windows 프로그래밍 - 기본
mfc 내부에서 콜백 함수 구현 방법
안녕하세요 현재 상황mfc를 이용해서 모든 창(window)의 이름을 전부 나열 해서 리스트 박스에 텍스트로 넣는 것을 구현 하려고 하는 중입니다.도중에 함수중EnumWindows(콜백함수, NULL)요 함수를 사용하려 했지만 콜백함수(인자)로 인해 사용이 안됩니다.win32를 통해 사용하여 위에 것은 다 구현했지만 mfc에서는 구현을 못한 상태 입니다. 이유는 위에와 같습니다....ㅠㅠ 구글 검색부터 이것저것 다해봤는데 도저히 방법이 안나와서 질문 합니다ㅜㅜ 궁금한점Enumwindows를 대체하는 함수가 존재합니까?mfc에서 콜백함수를 구현 하는 방법이 있습니까?Enumwindows를 구현할 방법이 있습니까?(콜백함수 빼고)
-
해결됨MFC Windows 프로그래밍 - 기본
수강기간 무제한인지 문의드립니다!
유료 수강기간 1개월, 무제한 이 문구가 잘 이해가 가지 않아서 문의드립니다.기간은 무제한으로 수강가능한건가요?
-
해결됨MFC Windows 프로그래밍 - 기본
pOldPen = dc.SelectObject(); 관련 질문
안녕하세요 선생님강의에서 옛날 윈도우(XP)에서는 pOldPen = dc.SelectObject()를 안해주면 문제가 생길수 있고, 요즘 윈도우즈에서는 괜찮을거라고 하셨는데요.이부분에 대해서 조금 더 자세하게 알고 싶습니다.테스트용으로 코드를 작성했습니다. void CPenBrushDemoView::OnPaint() { CPaintDC dc(this); // device context for painting CBrush NewBrush; //비트맵 클래스 객체를 선언하여 비트맵 리소스 로딩. CBitmap Bmp; Bmp.LoadBitmap(IDB_BITMAP1); //로딩된 비트맵 리소스로 패턴 브러시 생성. NewBrush.CreatePatternBrush(&Bmp); CBrush* pOldBrush = dc.SelectObject(&NewBrush); //클라이언트 뷰 클래스의 클라이언트 영역 크기를 알아내고 //그 크기에 해당하는 네모를 그림. CRect Rect; GetClientRect(&Rect); dc.Rectangle(&Rect); dc.SelectObject(pOldBrush); DWORD style[] = {6, 3}; LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(255, 0, 0); // 여기서부터... CPen* pOldPen; CPen FirstPen; { FirstPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 20, &lb, 2, style); pOldPen = dc.SelectObject(&FirstPen); dc.MoveTo(40, 40); dc.LineTo(240, 40); } CPen SecondPen; { SecondPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 40, &lb, 2, style); dc.SelectObject(&SecondPen); dc.MoveTo(40, 240); dc.LineTo(240, 240); } { CPen ThirdPen; ThirdPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 60, &lb, 2, style); dc.SelectObject(&ThirdPen); dc.MoveTo(40, 440); dc.LineTo(240, 440); } dc.MoveTo(40, 640); dc.LineTo(240, 640); dc.SelectObject(pOldPen); } 위 코드에서는 총 4개의 직선을 그리고 있습니다.여기서, CPen ThirdPen은 스코프 안에서 소멸자가 불러질 때 DeleteObject()가 실행되면서 gdi는 없어집니다. 하지만 디바이스컨텍스트(dc)는 계속 해당 gdi를 가리키고 있습니다. 그런데 그 이후에 dc는 지워진 gdi의 방식대로 직선을 그리고 있습니다.(dc.MoveTo(40, 640); dc.LineTo(240, 640);) dc가 가리키고 있던 gdi가 지워졌는데도 불구하고 어떻게 기존의 방식대로 그릴수 있는지 이유를 모르겠습니다. 그리고 위의 코드에서,dc.MoveTo(40, 440);dc.LineTo(240, 440);를 지우게 되면 ... { CPen ThirdPen; ThirdPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 60, &lb, 2, style); dc.SelectObject(&ThirdPen); // dc.MoveTo(40, 440); // dc.LineTo(240, 440); }ThirdPen이 스코프를 벗어난 이후 마지막 직선은 ThirdPen의 방식이 아닌 SecondPen의 방식으로 그려지고 있습니다. 좀 전의 위에서 동작한 방식과 일관성이 맞지 않는것같아요. 질문글이 길어서 요약을 해보자면..2개의 소스코드가 사소한 차이가 있는데 왜 DC가 동작하는 방식이 다를까요?DC와 GDI에 대한 저의 생각에서 혹시 오류가 있을까요?