Programming/C Win32 MFC2017. 10. 11. 12:57

일단 BMP를 ICO로 웹에서 변경하고 다운 받은 후

리소스에 추가하고 그걸 불러 오는 쪽으로 전환을 했는데..

속성에 보면 Bitmap과 Icon이 있는데 둘다 체크해도 상관없고

둘중에 하나라도 체크를 해주어야 아이콘이 표시된다.


왼쪽은 icon/bitmap true로 설정

오른쪽은 둘다 false로 설정했을때 표시되는 내용


다만, 둘다 false로 표시해도

충분히 크면 표시는 되는데 예상한 것과는 좀 다르게 작동하는 것 같아서

아이콘 크기라던가 이런거 좀 고민중..

버튼을 줄이면 이런식으로 나오는데.. 

버튼의 중심점을 기준으로 왼쪽에 표시하고 크기에 따라 잘리게 되는것 같은 느낌?


BM_SETIMAGE is not a button style, but a message which is sent to the window in order to set a bitmap. What you probably want is the BS_BITMAP style. Unfortunately as far as I know, it is not possible to have both text and a bitmap on a standard button. But you should find plenty of working implementations of a custom button class on sites like codeguru or codeproject. 

[링크 : https://stackoverflow.com/.../how-to-show-both-icon-and-text-on-button-on-mfc]

[링크 : https://www.codeproject.com/.../HowpluscanplusIpluscreateplusplusbuttonplusshowing]


이상하다.. 왜 두배 정도 커졌지?


+

SetIcon 대신에 LoadImage를 해서 HICON 핸들을 얻은후 그걸로 넣으면 해결

간단한 방법 없나...

[링크 : http://forums.codeguru.com/showthread.php?394090-Resizing-icon-on-a-button]

[링크 : https://www.experts-exchange.com/.../MFC-SetIcon-problem-if-called-twice.html]

[링크 : https://www.experts-exchange.com/.../CMFCButton-Icon-twice-as-big-as-it-should-be.html]


+

void CtestDlg::setIconBydlgitem(int dlg, int icon)

{

CButton *btn;

btn = ((CButton*)GetDlgItem(dlg));

HICON DSN_ICON = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(icon), IMAGE_ICON, 16, 16, 0);

btn->SetIcon(DSN_ICON);


+

HICON SetIcon(

   HICON hIcon,

   BOOL bBigIcon 

);

hIcon

A handle to a previous icon.

bBigIcon

Specifies a 32 pixel by 32 pixel icon if TRUE; specifies a 16 pixel by 16 pixel icon if FALSE. 

[링크 : https://msdn.microsoft.com/ko-kr/library/9cb3b7b5.aspx]

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

MFC CMenu  (0) 2017.10.16
MFC 다이얼로그 창 크기 변경 못하도록 하기  (2) 2017.10.11
MFC 버튼에 이미지 넣기  (0) 2017.10.10
MFC CMenu 폰트 변경하기  (0) 2017.10.08
MFC String table  (0) 2017.09.29
Posted by 구차니
Programming/C Win32 MFC2017. 10. 10. 13:17

아무래도 리소스의 비트맵이나 아이콘이 편할 듯?


비트맵 이미지를 리소스에 넣고 그걸 이용하는 소스

CBitmapButton 클래스 사용

[링크 : http://l71026.tistory.com/105]


BOOL LoadBitmaps(

   LPCTSTR lpszBitmapResource,

   LPCTSTR lpszBitmapResourceSel = NULL,

   LPCTSTR lpszBitmapResourceFocus = NULL,

   LPCTSTR lpszBitmapResourceDisabled = NULL 

);

BOOL LoadBitmaps(

   UINT nIDBitmapResource,

   UINT nIDBitmapResourceSel = 0,

   UINT nIDBitmapResourceFocus = 0,

   UINT nIDBitmapResourceDisabled = 0 

); 

[링크 : https://msdn.microsoft.com/ko-kr/library/6y6acs49.aspx]


리소스의 아이콘을 setIcon을 통해 이용하는 소스

[링크 : http://as1202.tistory.com/321]



CImage 클래스를 이용해서 png를 불러들여 CMFCButton 클래스에서 설정하는 방법

[링크 : http://blog.naver.com/hextrial/220156224504]

[링크 : https://msdn.microsoft.com/en-us/library/bb984522(v=vs.90).aspx]

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

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

MFC 버튼에 아이콘 표시 관련  (0) 2017.10.11
MFC 버튼에 이미지 넣기  (0) 2017.10.10
MFC String table  (0) 2017.09.29
MFC 다이얼로그 메뉴 추가하기  (0) 2017.09.29
MFC alt키 조합 입력 받기  (0) 2017.09.29
Posted by 구차니
Programming/C Win32 MFC2017. 9. 29. 15:56

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

MFC 버튼에 이미지 넣기  (0) 2017.10.10
MFC CMenu 폰트 변경하기  (0) 2017.10.08
MFC 다이얼로그 메뉴 추가하기  (0) 2017.09.29
MFC alt키 조합 입력 받기  (0) 2017.09.29
MFC 프로그램 아이콘 변경하기  (0) 2017.09.08
Posted by 구차니
Programming/C Win32 MFC2017. 9. 29. 15:52


[링크 : http://www.tipssoft.com/bulletin/tb.php/FAQ/1191]

[링크 : http://jangjy.tistory.com/42]


이벤트 핸들러

[링크 : http://lovestory0408.tistory.com/57]

[링크 : http://yyman.tistory.com/entry/MFC-윈도우-프로그래밍-기초-팝업메뉴-만들기리소스의-이해]


vs2010에서 Menu 추가시 최상위 항목은 자동으로 ID가 생성되지 않는다.

그렇기에 ID 편집을 체크해서 활성화 하고, ID 추가 후 속성에서 caption을 추가해

최상위에 대해서는 ID를 생성해 주어야 먼가 할 수 있을 듯 하다.


[링크 : https://blog.naver.com/klp0712/220697923189]


리소스 파일의 메뉴 관련 문법구조

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa381025(v=vs.85).aspx]


menuitem 문법구조

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa381024(v=vs.85).aspx]


popup 문법구조

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa381030(v=vs.85).aspx]

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

MFC CMenu 폰트 변경하기  (0) 2017.10.08
MFC String table  (0) 2017.09.29
MFC alt키 조합 입력 받기  (0) 2017.09.29
MFC 프로그램 아이콘 변경하기  (0) 2017.09.08
MFC DC대신 비트맵  (0) 2017.09.05
Posted by 구차니
Programming/C Win32 MFC2017. 9. 29. 09:52

alt - 엔터

alt - 방향키 조합


BOOL Cvktest_testDlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.

if(pMsg->message == WM_SYSKEYDOWN)

{

switch(pMsg->wParam)

{

case VK_LEFT: break;

case VK_RIGHT: break;

case VK_UP: break;

case VK_DOWN: break;

case VK_RETURN: break;

}

}

}


[링크 : http://jethro.tistory.com/entry/MFC-다이얼로그창에서-Alt-F4나-F1막기]

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


[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/ms646286(v=vs.85).aspx]

[링크 : https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx]

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

MFC String table  (0) 2017.09.29
MFC 다이얼로그 메뉴 추가하기  (0) 2017.09.29
MFC 프로그램 아이콘 변경하기  (0) 2017.09.08
MFC DC대신 비트맵  (0) 2017.09.05
visual studio runtime 없이 실행하게 하기(?)  (0) 2017.09.01
Posted by 구차니
Programming/C Win32 MFC2017. 9. 8. 16:15

검색 몇개 해보니까 리소스 바꿔치기를 하는데

좀 더 간단(?)하게 하자면 소스에서 컨스트럭터를 수정해 버리면 된다.

CtestDlg::CtestDlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CtestDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);


기본으로 생성한 아이콘이라면 IDI_ICON1 이렇게 생성되니 아래처럼 수정하면 끝!

CtestDlg::CtestDlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CtestDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

}

[링크 : http://blog.naver.com/braveht7/50073931752]

Posted by 구차니
Programming/C Win32 MFC2017. 9. 5. 09:48

유입경로 보다 보니 헐... 이런 좋은 아이디어가!!


[링크 : http://enginius.tistory.com/275]

Posted by 구차니
Programming/C Win32 MFC2017. 9. 1. 10:09

VC6.0에서는 없어도 되었는데

그때는 OS에 msvcrt.dll가내장 되어 있었고, Visual Studio 6.0에서도 msvcrt.dll의 기능만 사용했기 때문인데


그럼 runtime 안깔게 하고 하려면

1. runtime 포함한 인스톨러 만들거나

2. static linking해서 runtime없이 돌게 하거나

3. vc6.0으로 개발하거나

4. vc6.0에 맞춰서 링크할수 있는 무언가 방법을 찾거나 인데...


[링크 :  https://stackoverflow.com/.../why-does-my-application-require-visual-c-redistributable-package]

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


프로젝트 속성을 다이나믹에서 스태틱으로 변경하기

구성 속성 - 일반 - 프로젝트 기본값 - MFC 사용 - 공유 DLL에서 MFC 사용 -> 정적 라이브러리에서 MFC 사용

[링크 : https://stackoverflow.com/.../how-to-switch-a-project-built-on-visual-studio-2010-from-dynamic-to-static]

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