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