다이얼로그를 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 구차니

댓글을 달아 주세요

희한하게 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 구차니

댓글을 달아 주세요

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

포인터가 아니라 변수로 만들면 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 구차니

댓글을 달아 주세요

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

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

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

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


먼가 해서 하나씩 뒤져보니

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

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

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


뭐야 -_-???

VS2010 버그인가?

신고
Posted by 구차니

댓글을 달아 주세요

직접 구현을 해본적이 없어서 신기해서 조사


[링크 : http://jaiyun.tistory.com/5]

신고
Posted by 구차니

댓글을 달아 주세요

항상 다이얼로그로만 짜봐서

한번 다른 방법도 해봐야지..


예전에 영상처리 프로그램 학교에서 배울때 MDI로 짠적은 있는데

그냥 책보고 따라친 수준이라 다시 봐야 할듯.. 기억도 안남 ㅠㅠ


[링크 : http://blog.naver.com/chaose21c/150133862259]

[링크 : http://nenunena.tistory.com/66]

[링크 : http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=534]

신고

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

MFC에서 richedit 때문에 실행이 안돼?  (0) 2017.08.01
MFC 다이얼로그 - 탭  (0) 2017.07.21
MFC 다중문서 / 단일문서  (0) 2017.07.21
MFC 다이얼로그 숨기기  (0) 2017.07.13
2차원 배열에 대한 포인터  (0) 2017.06.21
slider control / settic  (0) 2017.06.12
Posted by 구차니

댓글을 달아 주세요

아직은 구현해보지 않았음..

조만간 쓸 예정


[링크 : https://linsoo.co.kr/archives/13725]

  [링크 : http://phiru.tistory.com/128]

  [링크 : http://frostguy.tistory.com/39]


신고

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

MFC 다이얼로그 - 탭  (0) 2017.07.21
MFC 다중문서 / 단일문서  (0) 2017.07.21
MFC 다이얼로그 숨기기  (0) 2017.07.13
2차원 배열에 대한 포인터  (0) 2017.06.21
slider control / settic  (0) 2017.06.12
mfc 파일 경로 얻기  (0) 2017.05.30
Posted by 구차니

댓글을 달아 주세요

*(var)[width]


식으로 선언하면 될듯


[링크 : https://dojang.io/mod/page/view.php?id=312]

신고

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

MFC 다중문서 / 단일문서  (0) 2017.07.21
MFC 다이얼로그 숨기기  (0) 2017.07.13
2차원 배열에 대한 포인터  (0) 2017.06.21
slider control / settic  (0) 2017.06.12
mfc 파일 경로 얻기  (0) 2017.05.30
MFC CHttpConnection timetout 설정  (0) 2017.05.29
Posted by 구차니

댓글을 달아 주세요

SetTicFreq()는 Tick Marks True / Auto Ticks True로 해야 한다면

SetTic()은 Tick Marks True / Auto Ticks False로 해야 한다


[링크 : https://msdn.microsoft.com/ko-kr/library/5tw28355(v=vs.100).aspx]

신고

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

MFC 다이얼로그 숨기기  (0) 2017.07.13
2차원 배열에 대한 포인터  (0) 2017.06.21
slider control / settic  (0) 2017.06.12
mfc 파일 경로 얻기  (0) 2017.05.30
MFC CHttpConnection timetout 설정  (0) 2017.05.29
win32 외부 프로그램 실행  (0) 2017.05.29
Posted by 구차니

댓글을 달아 주세요

GetCurrentDirectory() - 작업 디렉토리

GetModuleFileNameW() - 현재 실행중인 파일의 경로+파일명


[링크 : http://egloos.zum.com/katalog/v/4637907]

[링크 : http://ds3evx.tistory.com/entry/MFC-Tip-실행-파일-폴더-구하기]



망할유니코드랑 썪이면서 혼돈의 카오스 ㄷㄷ

WCHAR pathstr[256];

GetModuleFileNameW(NULL, pathstr, 256);

PathRemoveFileSpec(pathstr); // 실행파일의 경로만 받아옴


// 실행파일과 동일 디렉토리내의 test.exe를 /h 옵션으로 실행

CString exec("test.exe");

Cstring opt("/h");

CString path(pathstr);

path = _T("\"") + path + _T("\"");

cmd.AppendFormat(_T("%s\\%s %s"),path, exec, opt);


m_ret.SetWindowTextW(cmd);

_wsystem(cmd); 


신고

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

2차원 배열에 대한 포인터  (0) 2017.06.21
slider control / settic  (0) 2017.06.12
mfc 파일 경로 얻기  (0) 2017.05.30
MFC CHttpConnection timetout 설정  (0) 2017.05.29
win32 외부 프로그램 실행  (0) 2017.05.29
cstring 'null' append 문제?  (0) 2017.05.18
Posted by 구차니

댓글을 달아 주세요