Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

CuteBug

HELP - MFC - GetPixel doesnt work!!!

This topic is 5577 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

In an SDI application I created a new Class, say, CTest. In one of the member functions of CTest I included the following code -
  
void CTest::SomeFunc(...)
{ 
     ...
  
     int x;
  
     int y;
     ...

     CFrameWnd* pFrame = (CFrameWnd*)(AfxGetApp()->m_pMainWnd);
     CMyAppView* pView = (CMyAppView*)(pFrame->GetActiveView());
     CClientDC dc(pView);

     COLORREF pix = dc.GetPixel(x, y);
  
     ...
}  
  
But the function GetPixel doent return the correct value of the the pixel color at (x,y); when I debugged it pix always had the value 0xffffffff. Please help... "There is a Bug in every Code!"

Share this post


Link to post
Share on other sites
Advertisement
yeah lose it unless your making a business program, plus I dont think your view is correct.

maybe be true or may not be true

Share this post


Link to post
Share on other sites
I dont know how to use GetLastError(). But I gave the following command after

COLORREF pix = dc.GetPixel(x, y);

DWORD d = GetLastError();


Instead of getting the DC thru CClientDC I tried passing the pDC pointer from the OnDraw() function of the View class to a ststic member pDC of my own class.

while debugging the value of d is 0xcccccccc

and that of pDC is 0x0012f9d4 {hDC = 0xcccccccc attrib = oxcccccccc}

can u help me out?

"There is a Bug in every Code!"

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I dont know how to use GetLastError(). But I gave the following command after

COLORREF pix = dc.GetPixel(x, y);

DWORD d = GetLastError();


Instead of getting the DC thru CClientDC I tried passing the pDC pointer from the OnDraw() function of the View class to a ststic member pDC of my own class.

while debugging the value of d is 0xcccccccc

and that of pDC is 0x0012f9d4 {hDC = 0xcccccccc attrib = oxcccccccc}

can u help me out?

Share this post


Link to post
Share on other sites
quote:
Original post by CuteBug
I dont know how to use GetLastError(). But I gave the following command after

COLORREF pix = dc.GetPixel(x, y);

DWORD d = GetLastError();

Instead of getting the DC thru CClientDC I tried passing the pDC pointer from the OnDraw() function of the View class to a ststic member pDC of my own class.

while debugging the value of d is 0xcccccccc

and that of pDC is 0x0012f9d4 {hDC = 0xcccccccc attrib = oxcccccccc}

can u help me out?

"There is a Bug in every Code!"


The 0xcccccccc means that the DC was not initialized (0xcccccccc is the value that the debugger assigns uninitialized variables). Can you show me the code you use to pass the pDC pointer from the OnDraw function to the static member of your class (perhaps the entire OnDraw function also)?

I also encourage you to learn how to use the MSDN because then you would have been able to look up how to use GetLastError().




Qui fut tout, et qui ne fut rien
Invader''s Realm

Share this post


Link to post
Share on other sites
I added two static variables to my class CTest.

Test.h

  
static CDC* pDC;
static bool gotView;


Test.cpp

  
CDC* Spawn::pDC = NULL;
bool Spawn::gotView = false;


Then I initialized pDC in the OnDraw() function

MyView.cpp

  
void CMyView::OnDraw(CDC* pDC)
{
Spawn::pDC = pDC;
Spawn::gotView = true;

CFloodDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}


I used the gotView variable to ensure that I will be using the member functions of pDC only after it is initialized.

"There is a Bug in every Code!"

Share this post


Link to post
Share on other sites
Don''t listen to anyone one of these kids
nick5454
MattS423
Oberon_Command

As for your problem test the value it is returning check to see it''s not CLR_INVALID. Remeber that the x and y coordinates are logical coordinates.

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!