Programming/C Win32 MFC2017. 8. 30. 09:59

WinExec로 실행하니 안되는 놈이 있어서 확인해보니

권한 부족으로 실행하려는 놈이 관리자 권한을 필요로 하는 녀석이라

그냥 실행을 못하고 죽는 것으로 확인..


그래서 그 녀석을 실행할 애도 관리자 권한을 요청하도록 해야 하는데

UAC설정하는 어려운것도 있지만 간단하게 링커에서 UAC 실행 수준을 설정하면 끝!


비주얼 스튜디오는 항상 관리자 모드로 실행되는게 아니니

해당 모드로 설정한 프로젝트를 실행하려면 비주얼 스튜디오도 관리자 모드로 실행되도록 재시작 된다.


[링크 : https://stackoverflow.com/questions/666672/forcing-my-mfc-app-to-run-as-administrator-on-vista]

Posted by 구차니
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 구차니