Click here to Skip to main content
15,885,216 members
Please Sign up or sign in to vote.
1.33/5 (2 votes)
See more:
The CDC (SetPixel) function cannot be accessible inside the member function of another class.

//OnPerformIBIT is a member function created by me
void CSplitterOne:: OnPerformIBIT()
{
C#
CDC *myDC = GetDlgItem(IDC_PICBOX)->GetDC();

myDC->SetPixel(0, 0, RGB(0,0,0));
myDC->SetPixel(1, 1, RGB(0,0,0));
myDC->SetPixel(2, 2, RGB(0,0,0));
myDC->SetPixel(3, 3, RGB(0,0,0));
myDC->SetPixel(4, 4, RGB(0,0,0));
myDC->SetPixel(5, 5, RGB(0,0,0));
myDC->SetPixel(6, 6, RGB(0,0,0));

}

//In the above function is called from MainFrm.cpp. In the same function I cannot create the object for CDC. It give assertion. I am not get the Handle for Window (hWnd).
If I am do the same in thing in OnPaint() it works. Please Help me.

//CSplitterOne is FormView class.
Posted
Comments
Jochen Arndt 9-Mar-13 7:38am    
Is IDC_PICBOX a child window of CSplitterOn?
Rajeshkumar Ramasamy 20-Mar-13 8:02am    
Yes, IDC_PICBOX is child window of CSplitterOne class.

1 solution

It looks like you are calling GetDlgItem at a moment when the window has not been created yet. Then it's m_hWnd is still 0 and you run into an ASSERT.

You can easily verify this assumption by testing m_hWnd before calling GetDlgItem.
 
Share this answer
 
Comments
Rajeshkumar Ramasamy 12-Mar-13 8:09am    
I had Create same form using Splitter Window. I have to call the OnPerformIBIT() function from MainFrm.cpp. I am not got the handle when I am calling from MainFrm.cpp, If I put the same function from OnPaint & OnInitialUpdate, it works. How can i get the window handle if i'm call from Mainfrm.cpp?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900