BOOL CYourFormView::PreTranslateMessage(MSG* pMsg)
{
    if(IsDialogMessage(pMsg))           
        return TRUE;
    else  
        return CWnd::PreTranslateMessage(pMsg);   
 
}

 

 

출처 : https://m.blog.naver.com/beterran/60169163335

'공부 > MFC' 카테고리의 다른 글

[MFC] std::list 를 std::vector로 복사  (0) 2022.11.30
[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] CImage CBitmap HBITMAP 변환  (0) 2022.11.29
[MFC] 전체화면 사용  (0) 2022.11.24
[MFC] 다이얼로그 DLL 만들기  (0) 2022.11.16
std::vector<TestInfo> vec(std::begin(listTest), std::end(listTest));

 

ex

struct TestInfo
{
int nIndex;
int nTest;
TestInfo(int nIndex1,int nTest1)
{
nIndex = nIndex1;
nTest = nTest1;
}
};

std::list<TestInfo> listTest;
for (int i = 0 ; i < 100 ; i++)
{
listTest.push_back(TestInfo(i, i * 100));
}

std::vector<TestInfo> vec(std::begin(listTest), std::end(listTest));

 

//출처 : https://stackoverflow.com/questions/5218713/one-liner-to-convert-from-listt-to-vectort

Png 이미지 리소스에서 가져오기

 

// Based on afxbutton.cpp's static function ButtonLoadBitmap
HBITMAP __stdcall ButtonLoadBitmap(UINT uiBmpResId)
{
    if (uiBmpResId == 0)
    {
        return NULL;
    }

    LPCTSTR lpszResourceName = MAKEINTRESOURCE(uiBmpResId);
    ENSURE(lpszResourceName != NULL);

    HBITMAP hbmp = NULL;

    // Try to load PNG image first:
    CPngImage pngImage;
    if (pngImage.Load(lpszResourceName))
    {
        hbmp = (HBITMAP) pngImage.Detach();
    }
    else
    {
        HINSTANCE hinstRes = AfxFindResourceHandle(lpszResourceName, RT_BITMAP);
        if (hinstRes == NULL)
        {
            return NULL;
        }

        UINT uiLoadImageFlags = LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS;

        hbmp = (HBITMAP) ::LoadImage(hinstRes, lpszResourceName, IMAGE_BITMAP, 0, 0, uiLoadImageFlags);
    }

    return hbmp;
}

 

//출처 :  https://stackoverflow.com/questions/3005685/load-a-png-resource-into-a-cbitmap

CImage를 사용하기 위해서 #include <atlimage.h> 포함한다.


Cimage cimage;

HBITMAP hbitmap;

CBitmap cbitmap;


<CImage - > HBITMAP>

hbitmap = (HBITMAP)cimage;


<HBITMAP- > CImage >

cimage.attach(hbitmap);


<HBITMAP -> CBitmap>

CBitmap *bitmap = CBitmap::FromHandle(hbitmap);

 

<CImage -> CBitmap>

cbitmap = CBitmap::FromHandle(cimage);

//Assert 뜰때

CBitmap * cbitmap = CBitmap::FromHandle(cimage);

 

<CBitamp-> HBITMAP>

cbitmap.Attach(hbitmap); 

 

//출처 : https://m.blog.naver.com/ghoism51/220288053732

'공부 > MFC' 카테고리의 다른 글

[MFC] std::list 를 std::vector로 복사  (0) 2022.11.30
[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] 전체화면 사용  (0) 2022.11.24
[MFC] 다이얼로그 DLL 만들기  (0) 2022.11.16
[MFC] SDI 전체 화면  (1) 2022.09.23

 

//출처 :  https://learn.microsoft.com/ko-kr/archive/blogs/pusu/how-to-add-full-screen-mode-in-your-mfc-app-visual-studio-2008-or-later

 

 

MFC SDI 사용시 전체화면 사용하고 싶을때 사용

화면 가득차게 됨

 

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
   ...

   EnableFullScreenMode(0);
   EnableFullScreenMainMenu(FALSE);
   ShowFullScreen();
}

 

 

// 단점 :  전체화면 닫기 툴바가 강제로 생김

 

 

//수정본 

 

기존 함수는  afxfullscreenimpl.cpp 의   void CFullScreenImpl::ShowFullScreen(CFrameWnd* pFrame)  함수에서 메뉴를 생성함

 

대충 그 생성부분

 

이부분이 없으면 전체화면 메뉴가 나타나지 않음

 

저부분만 따로 복사해서 클래스 생성하여 사용

 

MainFrm.h 에서  메뉴관련 모두 제거 

//CMFCMenuBar       m_wndMenuBar;
//CMFCToolBar       m_wndToolBar;
//CMFCStatusBar     m_wndStatusBar;

 

MainFrm.cpp 의 OnCreate에서 메뉴관련부분 모두 제거하고 마지막부분에

 

CFullScreenImplUser cFullScreen(0 , FALSE);
cFullScreen.ShowFullScreen(this);

 

추가

 

되돌리고 싶을때

 

cFullScreen.RestoreState(this);

 

 

FullScreenImplUser.cpp
0.01MB
FullScreenImplUser.h
0.00MB

'공부 > MFC' 카테고리의 다른 글

[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] CImage CBitmap HBITMAP 변환  (0) 2022.11.29
[MFC] 다이얼로그 DLL 만들기  (0) 2022.11.16
[MFC] SDI 전체 화면  (1) 2022.09.23
[MFC] unordered_map  (0) 2021.10.19

출처 : https://pencil1031.tistory.com/82

 

Visual Studio 2015 사용

 

1. dll프로젝트 생성

상단 메뉴바

파일 - 새로만들기 - 프로젝트
템플릿 - Visual C++ - MFC - MFC DLL 

DLL 프로젝트 명 : PopUpDialogDll

Dll 형식:
'MFC를 정적으로 링크한 기본 DLL' 선택
추가기능: 모두 체크해제

 


===============================================

2. 사용할 다이얼로그 생성

클래스 마법사 실행
 (ctrl + shift + x) 
또는 
 보기 - 클래스 뷰 - 클래스뷰에 프로젝트명 우클릭 - 클래스마법사 

클래스마법사 - 클래스 추가 - MFC 클래스 

클래스 이름 입력 (여기선 CDlgAlarm )
기본 클래스 CDialogEx 선택 마침

 


3. 코드 추가 
PopUpDialogDll.cpp 에서 BOOL CPopUpDialogDllApp::InitInstance 아래 함수 추가

#include "DlgAlarm.h"

void WINAPI ShowPopupTest()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

CDlgAlarm dlg;
dlg.DoModal();
}

 


PopUpDialogDll.def 에서  아래 항목 추가 @1은 순서 

EXPORTS
    ; 명시적 내보내기를 여기에 사용할 수 있습니다.
 ShowPopupTest @1


 4. 컴파일
 dll , lib 파일을 사용 프로젝트에 복사
실행파일 위치에도 복사

 

5. DLL을 사용할 프로젝트 생성

상단 메뉴바

파일 - 새로만들기 - 프로젝트
템플릿 - Visual C++ - MFC - MFC 응용프로그램 - 대화상자로 생성

 


stdafx.h 에 추가

__declspec(dllimport) void WINAPI ShowPopupTest();
#pragma comment(lib, "PopUpDialogDll")

 



리소스 뷰에 버튼하나 두고 버튼 이벤트에 추가
::ShowPopupTest();

 

 

 

=====================================

6. 실행화면

 

 

 

DllTest.zip
1.33MB

 

 

 

 

 

 

'공부 > MFC' 카테고리의 다른 글

[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] CImage CBitmap HBITMAP 변환  (0) 2022.11.29
[MFC] 전체화면 사용  (0) 2022.11.24
[MFC] SDI 전체 화면  (1) 2022.09.23
[MFC] unordered_map  (0) 2021.10.19

해당 예제는  OnCreate 에서 CMFCToolBar  CMFCMenuBar  제거되어 있

 

게임의 전체화면 처럼 보임

EnableFullScreenMainMenu(TRUE);  //메뉴 보임

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
   ...

   EnableFullScreenMode(0);
   EnableFullScreenMainMenu(FALSE);
   ShowFullScreen();
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{

   ...
//모니터 해상도 수동입력 
cs.cx = 1920;
cs.cy = 1080;
//모니터 해상도 받아와서 입력
cs.cx = (int)GetSystemMetrics(SM_CXSCREEN);
cs.cy = (int)GetSystemMetrics(SM_CYSCREEN);
   ...

}


void CTestView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

//기존항목 주석처리
//GetParentFrame()->RecalcLayout();
//ResizeParentToFit();

}

실행화면

그냥 실행시 

 

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 사용시

 

위의코드 사용시

EnableFullScreenMainMenu(TRUE); 사용시

 

참고 :

https://learn.microsoft.com/ko-kr/archive/blogs/pusu/how-to-add-full-screen-mode-in-your-mfc-app-visual-studio-2008-or-later

http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=20748

 

'공부 > MFC' 카테고리의 다른 글

[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] CImage CBitmap HBITMAP 변환  (0) 2022.11.29
[MFC] 전체화면 사용  (0) 2022.11.24
[MFC] 다이얼로그 DLL 만들기  (0) 2022.11.16
[MFC] unordered_map  (0) 2021.10.19

std::map는 삽입 삭제시 정렬이 일어나 느림

std::unordered_map 은 정렬이 일어나지 않음

 

사용법은 map와 같음

 

헤더파일에 추가

#include <unordered_map>

 

선언

std::unordered_map<unsigned long, Mat> m_mapBuffer;

 

 

'공부 > MFC' 카테고리의 다른 글

[MFC] png Image Load From Resource  (0) 2022.11.29
[MFC] CImage CBitmap HBITMAP 변환  (0) 2022.11.29
[MFC] 전체화면 사용  (0) 2022.11.24
[MFC] 다이얼로그 DLL 만들기  (0) 2022.11.16
[MFC] SDI 전체 화면  (1) 2022.09.23

+ Recent posts