Programming/C Win32 MFC2017. 8. 28. 11:17

예전에 netbeans에서 JFC로 만들어서 창 크기를 조절하면

적절하게 레이아웃에 맞춰 내용물들이 늘어났던거 같은데

MFC 다이얼로그는 그런 기능이 없다 보니 빈공간만 쭈~욱 늘어 나버린다.

아무튼.. 그런걸 보완해주기 위한 녀석들이 존재는 하는데


레이아웃 매니저로 검색하면 나올려나?


[링크 : https://www.codeproject.com/Articles/568/CResizableDialog]

[링크 : https://www.codeproject.com/Articles/116/Layout-Manager-for-Dialogs-Formviews-DialogBars-an]

   [링크 : https://stackoverflow.com/questions/138040/how-to-create-a-resizable-cdialog-in-mfc]


VS2015 이후 부터 지원하는 Dynamic Layout?

[링크 : https://msdn.microsoft.com/en-us/library/mt270148.aspx]

[링크 : https://docs.microsoft.com/ko-kr/cpp/mfc/dynamic-layout]

Posted by 구차니
Programming/C Win32 MFC2017. 8. 23. 10:56

1.

BOOL WINAPI AllocConsole(void);

[링크 : https://docs.microsoft.com/en-us/windows/console/allocconsole]

2.

TRACE 매크로 - 디버그 출력창에 뜸

afx.h

#define TRACE ATLTRACE

atltrace.h

#define ATLTRACE ATL::CTraceFileAndLineInfo(__FILE__, __LINE__)


3.

프로젝트 속성에서 하위시스템을 /SUBSYSTEM:CONSOLE로 설정


[링크 : http://memoryfilm.tistory.com/2]

[링크 : http://shaeod.tistory.com/291]

'Programming > C Win32 MFC' 카테고리의 다른 글

MFC 프로그램 관리자 권한으로 실행하도록 하기  (0) 2017.08.30
MFC 플렉서블 다이얼로그?  (0) 2017.08.28
#define new DEBUG_NEW 넌 머냐?  (0) 2017.08.23
unsigned char [] -> LPCSTR  (0) 2017.08.21
MFC 타이머  (0) 2017.08.08
Posted by 구차니
Programming/C Win32 MFC2017. 8. 23. 10:43

MFC 보다 보니 이런게 있어서

디버그 모드 용인가?하고 뒤적뒤적...


일단 메모리 누수 찾는 용도로 쓴다고 하네..?

[링크 : http://hackereyes.tistory.com/entry/펌-define-new-DEBUGNEW-의-비밀]


Assists in finding memory leaks.

[링크 : https://msdn.microsoft.com/en-us/library/tz7sxz99.aspx]

+

릴리즈와 디버그 모드에서는 전처리기 정의가 다르게 되고

이걸 이용해서 디버그 문을 출력하도록 하는 듯

WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)

WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)

'Programming > C Win32 MFC' 카테고리의 다른 글

MFC 플렉서블 다이얼로그?  (0) 2017.08.28
MFC 디버그용 콘솔 띄우기  (0) 2017.08.23
unsigned char [] -> LPCSTR  (0) 2017.08.21
MFC 타이머  (0) 2017.08.08
MFC 다이얼로그 쓰레드 UpdateData() 오류  (0) 2017.08.07
Posted by 구차니
Programming/C Win32 MFC2017. 8. 21. 16:47
Posted by 구차니
Programming/C Win32 MFC2017. 8. 8. 22:07
Posted by 구차니
Programming/C Win32 MFC2017. 8. 7. 19:09

쓰레드 사용법

[링크 : http://blog.naver.com/myrinoa8/140129819777] 다이얼로그 변수/함수 사용하기

[링크 : http://dosnipe.tistory.com/20] 쓰레드 생성 AfxBeginThread

[링크 : http://blog.naver.com/mincheol9166/220718941148] 쓰레드 종료 SuspendThread


쓰레드에서 UpdateData() 오류시

간단하게 설명(?)하면 그러면 안되니까 SendMessage를 쓰레드에서 다이얼로그로 던져서 처리하도록 해라~

[링크 : http://blog.naver.com/pointer98/150043664789]

'Programming > C Win32 MFC' 카테고리의 다른 글

unsigned char [] -> LPCSTR  (0) 2017.08.21
MFC 타이머  (0) 2017.08.08
MFC 창 상태 확인하기(SW_SHOW/SW_HIDE)  (0) 2017.08.07
MFC 다이얼로그 rich edit 사용하기  (0) 2017.08.07
MFC 모달리스(modaless) 다이얼로그  (0) 2017.08.01
Posted by 구차니
Programming/C Win32 MFC2017. 8. 7. 11:24

다이얼로그를 ShowWindow(SW_SHOW)를 통해 표시한 경우

이에 대한 상태를 받아 오려면 꽤나 귀찮아 지네..

간단하게 GetShowWindow()라던가 GetWindowStatus() 이런게 있으면 참 좋을텐데..


if (!IsWindowVisible(hWnd))

    swState = SW_HIDE;

else

if (IsIconic(hWnd))

    swState = SW_MINIMIZE;

else

if (IsZoomed(hWnd))

    swState = SW_MAXIMIZE;

else

{

    // not hidden, minimized or zoomed, so we are a normal visible window

    // last ShowWindow flag could have been SW_RESTORE, SW_SHOW, SW_SHOWNA, etc

    // no way to tell

    swState = SW_SHOW;

[링크 : https://stackoverflow.com/questions/28266448/get-the-last-showwindow-state-for-a-window-in-winapi]

[링크 : https://stackoverflow.com/questions/1432336/how-to-find-a-windows-sw-show-sw-hide-status]



+

귀찮으니 단순화 하기 ㅋㅋ

  if(pDlg)

{

if(pDlg->IsWindowVisible())

pDlg->ShowWindow(SW_HIDE);

else pDlg->ShowWindow(SW_SHOW);

}


Posted by 구차니
Programming/C Win32 MFC2017. 8. 7. 10:10

희한하게 Rich edit만 추가하면 빌드는 되는데 실행하면 깜깜 무소식인 문제가 있어서

확인을 해보니 DoModal() 에서 죽어버려서 미궁이 빠진적이...


아무튼 오늘 문득 생각이 나서 찾아보니

InitInstance() 에서

AfxInitRichEdit(); 

를 해주어야 문제없이 작동됨을 확인!


BOOL CtestApp::InitInstance()

{

// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을

// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다.

// InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다.

INITCOMMONCONTROLSEX InitCtrls;

InitCtrls.dwSize = sizeof(InitCtrls);

// 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록

// 이 항목을 설정하십시오.

InitCtrls.dwICC = ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);


CWinApp::InitInstance();



AfxEnableControlContainer();

AfxInitRichEdit();


// 대화 상자에 셸 트리 뷰 또는

// 셸 목록 뷰 컨트롤이 포함되어 있는 경우 셸 관리자를 만듭니다.

CShellManager *pShellManager = new CShellManager;


// 표준 초기화

// 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면

// 아래에서 필요 없는 특정 초기화

// 루틴을 제거해야 합니다.

// 해당 설정이 저장된 레지스트리 키를 변경하십시오.

// TODO: 이 문자열을 회사 또는 조직의 이름과 같은

// 적절한 내용으로 수정해야 합니다.

SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성된 응용 프로그램"));


CtestDlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: 여기에 [확인]을 클릭하여 대화 상자가 없어질 때 처리할

//  코드를 배치합니다.

}

else if (nResponse == IDCANCEL)

{

// TODO: 여기에 [취소]를 클릭하여 대화 상자가 없어질 때 처리할

//  코드를 배치합니다.

}


// 위에서 만든 셸 관리자를 삭제합니다.

if (pShellManager != NULL)

{

delete pShellManager;

}


// 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고  응용 프로그램을 끝낼 수 있도록 FALSE를

// 반환합니다.

return FALSE;

}

 



[링크 : http://ospace.tistory.com/171]

Posted by 구차니
Programming/C Win32 MFC2017. 8. 1. 14:55

쓸일이 있어서 해보는데.. 당연한 내용이겠지만...

포인터가 아니라 변수로 만들면 scope를 벗어 나면서 바로 해당 클래스가 파괴되면서 창이 닫힌다.

그런 이유로 new를 이용해서 생성을 해주어야 한다.


void CtestDlg::OnBnClickedButton12()

{

// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

// CFileUploader dlg;

// dlg.Create(IDD_UPLOAD_DIALOG, this);

// dlg.ShowWindow(SW_SHOW);


CFileUploader *pDlg =  new CFileUploader();

if(pDlg)

{

pDlg->Create(IDD_UPLOAD_DIALOG);

pDlg->ShowWindow(SW_SHOW);

}


그나저나.. 그냥 저렇게 해두니 버튼 누를때 마다 창이 증식하네 ㅋㅋㅋ


[링크 : http://lapislazull.tistory.com/80]

[링크 : http://j07051.tistory.com/107]

[링크 : http://heart4u.co.kr/tblog/318]


+

2017.08.07

모달리스 child dialog와 부모 통신하기

[링크 : http://blog.daum.net/finalz84/173]

[링크 : http://blog.naver.com/xtelite/50022212767]

Posted by 구차니
Programming/C Win32 MFC2017. 8. 1. 14:31

테스트 프로그램 만드는데 분석 내용을

좀더 꾸며서 해보겠다는 욕심으로

모양만 만들때 richedit을 넣어서 했더니

MFC 다이얼로그가 안뜬다 -ㅁ-?


먼가 해서 하나씩 뒤져보니

메인 다이얼로그를 doModal() 할때 죽어 버리는데

혹시나 해서 기존 버전들과 비교를 해보니 richedit이 하나 추가된게 발견!

설마하고 rc 파일에서 해당 내용만 삭제하니 문제없이 실행!


뭐야 -_-???

VS2010 버그인가?

'Programming > C Win32 MFC' 카테고리의 다른 글

MFC 다이얼로그 rich edit 사용하기  (0) 2017.08.07
MFC 모달리스(modaless) 다이얼로그  (0) 2017.08.01
MFC 다이얼로그 - 탭  (0) 2017.07.21
MFC 다중문서 / 단일문서  (0) 2017.07.21
MFC 다이얼로그 숨기기  (0) 2017.07.13
Posted by 구차니