일단 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 다이얼로그 창 크기 변경 못하도록 하기  (0) 2017.10.11
MFC 버튼에 아이콘 표시 관련  (0) 2017.10.11
MFC 버튼에 이미지 넣기  (0) 2017.10.10
MFC CMenu 폰트 변경하기  (0) 2017.10.08
MFC String table  (0) 2017.09.29
Posted by 구차니

댓글을 달아 주세요