blancx
asked on
Change ICON of Picture Control
I create a ATL dialog and put a pitcure control, IDC_TESTICON.
I try to put system icon in this pitcure control but nothing changed.
Do I miss something?
I try to put system icon in this pitcure control but nothing changed.
Do I miss something?
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CAxDialogImpl<CppInvalidRecipientsDlg>::OnInitDialog(uMsg, wParam, lParam, bHandled);
// Centres the window relative to the parent window.
CenterWindow();
BringWindowToTop();
if (::GetParent(m_hWnd) == NULL)
{
::ShowWindow(m_hWnd, SW_MINIMIZE);
::ShowWindow(m_hWnd, SW_RESTORE);
}
// nothing change in TESTICON
GetDlgItem(TESTICON).SetIcon(::LoadIcon(NULL, IDI_INFORMATION));
return 1; // Let the system set the focus
}
ASKER
Regarding the code you mention, It is just the testing code that I forgot to remove.
I have tried to put UpdateWindow or Invalidate function at the end of OnInitDialog(). Nothing changed.
I have tried to put UpdateWindow or Invalidate function at the end of OnInitDialog(). Nothing changed.
So check that LoadIcon brings the icon for you. You can just draw the icon in the client area from OnPaint.
Check that your dialog has the style to redraw the child windows. Check the control
Check that your dialog has the style to redraw the child windows. Check the control
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I think it is a solution but I can't use CStatic in my ATL dialog.
There are link errors when I try to include "Afxwin.h".
In order to minimize the side effect, I send STM_SETICON via SendMessage(). It also change the icon.
There are link errors when I try to include "Afxwin.h".
In order to minimize the side effect, I send STM_SETICON via SendMessage(). It also change the icon.
You actually redraw the window here (or deactivate and then activate):
if (::GetParent(m_hWnd) == NULL)
{
::ShowWindow(m_hWnd, SW_MINIMIZE);
::ShowWindow(m_hWnd, SW_RESTORE);
}
and then load the icon. why?