Repainting of dialog box takes time.
-
For buttons i use this.
CBitmapButton m_t_btn;
m_t_btn.LoadBitmaps(IDB_B_N, IDB_B_P, IDB_B_N, IDB_B_P);
m_t_now_btn.SizeToContent();here IDB_B_N and IDB_B_P//id of image
and on dialog box i m using picture ctrl pf bitmap type and provide image id to used
Is any memmory leak from CBitmapButton class..? Use this utility separately in a test app to check the behavior...
-
Is any memmory leak from CBitmapButton class..? Use this utility separately in a test app to check the behavior...
-
actully i dont know how can i detected memory leak in application, so how can i know memory leak occur from CBitmapButton or not.
Create a test application that using CBitmapButton class. Use the above code in that application and continuously use that application. Check the usage in Task Manager... It will help you to find the memory leak is from CBitmapButton ...
-
Create a test application that using CBitmapButton class. Use the above code in that application and continuously use that application. Check the usage in Task Manager... It will help you to find the memory leak is from CBitmapButton ...
-
That means, the problem is not from the CBitmapButton. Now check your dialog skinning code.Just like commenting the code for coloring the dialog or controls. This way you can find out the exact problem...
-
That means, the problem is not from the CBitmapButton. Now check your dialog skinning code.Just like commenting the code for coloring the dialog or controls. This way you can find out the exact problem...
i use this for color
CBrush m_brush;
m_brush.CreateSolidBrush(RGB(241,244,250));//in OnInitDialogHBRUSH CTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);switch (nCtlColor) { case CTLCOLOR\_EDIT: pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(255,255,255)); return hbr; case CTLCOLOR\_STATIC: LOGBRUSH logbrush; m\_brush.GetLogBrush( &logbrush ); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(logbrush.lbColor); return m\_brush; case CTLCOLOR\_BTN: case CTLCOLOR\_MSGBOX: case CTLCOLOR\_DLG: return m\_brush; default: return m\_brush; }
}
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CPen myPen,hpenOld;
CRect rect;
GetClientRect(&rect);
for(int i=0;i<rect.bottom;)
{ myPen.CreatePen(PS_SOLID,1,RGB(241,244,250));
pDC->SelectObject(&myPen);
pDC->MoveTo(0,i);
pDC->LineTo(rect.right,i);
i++;
myPen.DeleteObject();
}
return 1
} -
actully i dont know how can i detected memory leak in application, so how can i know memory leak occur from CBitmapButton or not.
Could you post your
BitmapButton.cpp
here ? :)Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
-
Could you post your
BitmapButton.cpp
here ? :)Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
-
i use this for color
CBrush m_brush;
m_brush.CreateSolidBrush(RGB(241,244,250));//in OnInitDialogHBRUSH CTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);switch (nCtlColor) { case CTLCOLOR\_EDIT: pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(255,255,255)); return hbr; case CTLCOLOR\_STATIC: LOGBRUSH logbrush; m\_brush.GetLogBrush( &logbrush ); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(logbrush.lbColor); return m\_brush; case CTLCOLOR\_BTN: case CTLCOLOR\_MSGBOX: case CTLCOLOR\_DLG: return m\_brush; default: return m\_brush; }
}
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CPen myPen,hpenOld;
CRect rect;
GetClientRect(&rect);
for(int i=0;i<rect.bottom;)
{ myPen.CreatePen(PS_SOLID,1,RGB(241,244,250));
pDC->SelectObject(&myPen);
pDC->MoveTo(0,i);
pDC->LineTo(rect.right,i);
i++;
myPen.DeleteObject();
}
return 1
}I cant find any problem in your code... Any way just comment your code in the OnEraseBkgnd and try to sort out the problem... If the problem is still there then we can avoid this one also from the problem list...
-
OK :) Do you have the following in all used *.cpp ?
#ifdef _DEBUG
#define new DEBUG_NEW
#endifWhat output comes now after the exiting ?
Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
-
OK :) Do you have the following in all used *.cpp ?
#ifdef _DEBUG
#define new DEBUG_NEW
#endifWhat output comes now after the exiting ?
Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
yes i add this in all *.cpp
'Test.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'Test.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'Test.exe': Loaded 'C:\Windows\System32\user32.dll'
'Test.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'Test.exe': Loaded 'C:\Windows\System32\msimg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\comdlg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'Test.exe': Loaded 'C:\Windows\System32\shlwapi.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll'
'Test.exe': Loaded 'C:\Windows\System32\shell32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winspool.drv'
'Test.exe': Loaded 'C:\Windows\System32\oledlg.dll'
'Test.exe': Loaded 'C:\Windows\System32\ole32.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winmm.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleacc.dll'
'Test.exe': Loaded 'C:\Windows\System32\imm32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msctf.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6002.18005_none_9e50b396ca17ae07\GdiPlus.dll'
'Test.exe': Loaded 'C:\Windows\System32\lpk.dll'
'Test.exe': Loaded 'C:\Windows\System32\usp10.dll'
'Test.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'Test.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'Test.exe': Unloaded 'C:\Windows\System32\dwmapi.dll'
Detected memory leaks!
Dumping objects ->
{235} normal block at 0x00286728, 145 bytes long.
Data: < % d > C0 25 C9 01 64 00 00 00 80 00 00 00 01 00 00 00
{227} normal block at 0x002866D8, 20 bytes long.
Data: < % > C0 25 C9 01 03 00 00 00 03 00 00 00 01 00 00 00
{226} normal block at 0x00286640, 85 bytes long.
Data: < % D D > C0 25 C9 01 44 00 00 00 44 00 00 00 01 00 00 00
{225} normal block at 0x00286598, 103 bytes long.
Data: < % V V > C0 25 C9 01 56 00 00 00 56 00 00 00 01 00 00 00
Object dump complete.
The program '[3536] Test.exe: Native' has exited with code 0 (0x0). -
yes i add this in all *.cpp
'Test.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'Test.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'Test.exe': Loaded 'C:\Windows\System32\user32.dll'
'Test.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'Test.exe': Loaded 'C:\Windows\System32\msimg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\comdlg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'Test.exe': Loaded 'C:\Windows\System32\shlwapi.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll'
'Test.exe': Loaded 'C:\Windows\System32\shell32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winspool.drv'
'Test.exe': Loaded 'C:\Windows\System32\oledlg.dll'
'Test.exe': Loaded 'C:\Windows\System32\ole32.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winmm.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleacc.dll'
'Test.exe': Loaded 'C:\Windows\System32\imm32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msctf.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6002.18005_none_9e50b396ca17ae07\GdiPlus.dll'
'Test.exe': Loaded 'C:\Windows\System32\lpk.dll'
'Test.exe': Loaded 'C:\Windows\System32\usp10.dll'
'Test.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'Test.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'Test.exe': Unloaded 'C:\Windows\System32\dwmapi.dll'
Detected memory leaks!
Dumping objects ->
{235} normal block at 0x00286728, 145 bytes long.
Data: < % d > C0 25 C9 01 64 00 00 00 80 00 00 00 01 00 00 00
{227} normal block at 0x002866D8, 20 bytes long.
Data: < % > C0 25 C9 01 03 00 00 00 03 00 00 00 01 00 00 00
{226} normal block at 0x00286640, 85 bytes long.
Data: < % D D > C0 25 C9 01 44 00 00 00 44 00 00 00 01 00 00 00
{225} normal block at 0x00286598, 103 bytes long.
Data: < % V V > C0 25 C9 01 56 00 00 00 56 00 00 00 01 00 00 00
Object dump complete.
The program '[3536] Test.exe: Native' has exited with code 0 (0x0).- Try to create, select and delete your background pen outside the drawing loop. 2) Could you post your *.cpp here ? :)
Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
-
- Try to create, select and delete your background pen outside the drawing loop. 2) Could you post your *.cpp here ? :)
Check your definition of Irrationality[^] :) 1 - Avicenna 5 - Hubbard 3 - Own definition
-
i use this for color
CBrush m_brush;
m_brush.CreateSolidBrush(RGB(241,244,250));//in OnInitDialogHBRUSH CTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);switch (nCtlColor) { case CTLCOLOR\_EDIT: pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(255,255,255)); return hbr; case CTLCOLOR\_STATIC: LOGBRUSH logbrush; m\_brush.GetLogBrush( &logbrush ); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(logbrush.lbColor); return m\_brush; case CTLCOLOR\_BTN: case CTLCOLOR\_MSGBOX: case CTLCOLOR\_DLG: return m\_brush; default: return m\_brush; }
}
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CPen myPen,hpenOld;
CRect rect;
GetClientRect(&rect);
for(int i=0;i<rect.bottom;)
{ myPen.CreatePen(PS_SOLID,1,RGB(241,244,250));
pDC->SelectObject(&myPen);
pDC->MoveTo(0,i);
pDC->LineTo(rect.right,i);
i++;
myPen.DeleteObject();
}
return 1
}Le@rner wrote:
BOOL CTest::OnEraseBkgnd(CDC *pDC) { CPen myPen,hpenOld; CRect rect; GetClientRect(&rect); for(int i=0;iSelectObject(&myPen); pDC->MoveTo(0,i); pDC->LineTo(rect.right,i); i++; myPen.DeleteObject(); } return 1 }
Actually you are filling dialog with RGB(241,244,250) color. Change the OnEraseBkgnd
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(rect,RGB(241,244,250));
return TRUE;
}to avoid for loop, unnecessary creation and destroying of pen,and filling dialog background color using LineTo and MoveTo functions. This one can make you drawing bit faster.
modified on Tuesday, March 9, 2010 8:00 AM
-
Le@rner wrote:
BOOL CTest::OnEraseBkgnd(CDC *pDC) { CPen myPen,hpenOld; CRect rect; GetClientRect(&rect); for(int i=0;iSelectObject(&myPen); pDC->MoveTo(0,i); pDC->LineTo(rect.right,i); i++; myPen.DeleteObject(); } return 1 }
Actually you are filling dialog with RGB(241,244,250) color. Change the OnEraseBkgnd
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(rect,RGB(241,244,250));
return TRUE;
}to avoid for loop, unnecessary creation and destroying of pen,and filling dialog background color using LineTo and MoveTo functions. This one can make you drawing bit faster.
modified on Tuesday, March 9, 2010 8:00 AM