|
Check SetWindowsHookEx with idHook = WH_GETMESSAGE.
Don't try it, just do it!
|
|
|
|
|
Hi Alexandar
Not workinng.
I tried a hook in the same dialog box.
Hook gets installed but hookproc never catches it
Any suggestions?
Regards
HHOOK g_hHook;
LRESULT CALLBACK HookProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code>=0)
{
MSG* vl_pMsg = (MSG*)lParam;
if(vl_pMsg->message==LB_ADDSTRING)
{
TRACE("Got It ...................\n");
}
}
return ::CallNextHookEx(g_hHook,code,wParam,lParam);
}
void CHookMeDlg::OnButton1()
{
g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE,HookProc,::AfxGetInstanceHandle(),::GetCurrentThreadId());
}
void CHookMeDlg::OnButton2()
{
this->m_ctrlList.AddString("hello");
}
|
|
|
|
|
Hi guys,
I'm developing a source code that I need to make an imagem rotate and move on the 4 screen sides.
Inside OnPaint function I'm increasing the x value of the image, but I have no sucess viewing the image moving around, it seems that the screen is not being updated.
I'm debuging and this functions is being called and X is being incremented.
How can I do that?
What's wrong?
VOID OnPaint(HDC hdc)
{
Graphics graphics(hdc);
graphics.RotateTransform ( (float) coin->getAngle( ) );
graphics.DrawImage( coin->bmp, coin->getX( ), 0, coin->bmp->GetWidth( ), coin->bmp->GetHeight( ) );
coin->setX( coin->getX( ) + 5 );
coin->setAngle( coin->getAngle( ) + 1 );
if( coin->getX( ) == 100 )
{
coin->setX( 0 );
}
}
|
|
|
|
|
You may not want to do the rotate/move in OnPaint(), unless you want it to occur every time
the window needs repainting, which includes when another window is dragged over and/or off
your window.
Only the drawing should be done there.
To force an immediate repaint whenever the rotation/position changes, you can call
Invalidate() and UpdateWindow() (or RedrawWindow()) to force the WM_PAINT message
and the corresponding call to your OnPaint() method.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Answer: RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); //updates the screen.
|
|
|
|
|
Hi,
How to convert a PDF Doc with CID FONT TYPE2 to PDF Doc without CID font embedded. Please help me in this... contact me @ sundargr@gmail.com
----G
|
|
|
|
|
As the subject says, I need to play a sounds continuously (until explicitly cancelled) noise. This is to alert the user "Oi, pay attention, something important has happened." Personally, this would drive me dippy, but they're the ones who want it...
PlaySounds only works the once, then shuts up. This may be very easy with DirectSound, but I've never used it.
Any hints, pointers to examples / articles, giftwrapped pieces of code would be bery welcome!
Thanks,
Iain.
|
|
|
|
|
What about PlaySound() with the SND_LOOP flag?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
Did you see flags on PlaySounds function ?
|
|
|
|
|
I'd used it before, and thought I knew them all. Sigh....
Thanks!
Iain.
|
|
|
|
|
HI
can anybody give me a good reference to a site where i can learn
advenced C, and MFC
THNKS
kobkob
|
|
|
|
|
See here.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Interesting your link returned 2,530,000 address of codeproject does he must see these addresses
|
|
|
|
|
Take a look around at the MFC articles on this site...
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
You didn't post a link...what site?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
This one[^] and
this other one[^]
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
|
1.I created some ownerdrawn controls and put them on a dialog.
2.I want to use a custom gradient as the background of the dialog.
3.I override OnEraseBkgnd :
BOOL CDlgButtons::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
4.I leave OnPaint without any changes.
Problem: None of the buttons on the form draw correctly. I don't have any other control. Ownerdraw buttons are completely hidden. None ownerdraw, turn to white rectangles, no text, nothing.
if I draw my gradient without using pDC in OnEraseBkgnd , and instead use a new dc: CPaintDC dc(this); it's ok.
I am completely confused. Can any one please describe this strange behavior?
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
|
|
|
|
Something wrong is happening elsewhere.
I use this code in the main dialog of the app I use for quickly
testing code I post here on CP:
BOOL CMFCTesterDlg::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
COLORREF c1 = RGB(64, 0, 64);
COLORREF c2 = RGB(0, 128, 128);
for(int i = 0; i < rect.Height(); i++)
{
int r, g, b;
r = GetRValue(c1) + (GetRValue(c2) - GetRValue(c1)) * i / rect.Height();
g = GetGValue(c1) + (GetGValue(c2) - GetGValue(c1)) * i / rect.Height();
b = GetBValue(c1) + (GetBValue(c2) - GetBValue(c1)) * i / rect.Height();
pDC->FillSolidRect(0, i, rect.Width(), 1, RGB(r, g, b));
}
return TRUE;
}
There's a potpourri of controls on the dialog and they all draw correctly.
What happens if you comment-out the ON_WM_ERASEBKNGD() entry in the message map?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Sorry for late response. I was out for a (long) while.
Thank you for your help. I have more time to find the problem, today. I think the problem is with clipping.
Thank you again for your help.
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
|
|
|
|
I would use the device Context given as parameter.
May this pDC has cliping areas defined.
CPaintDC is not useful here because it calls BeginPaint / EndPaint.
Beginpaint emit's an WM_ERASEBACKGROUND.
see MSDN documentation of BeginPaint.
You should also consider setting WS_CLIPCHILDREN style for dialog window.
|
|
|
|
|
Sorry for late response. I was out for a (long) while.
karle wrote: CPaintDC is not useful here because it calls BeginPaint / EndPaint.
Beginpaint emit's an WM_ERASEBACKGROUND.
However I'm not sure how it works exactly, but it was also strange to me that why it does not cause an infinite loop. It's more like every time OnPaint or OnEraseBkgnd is called, it's in a new thread!
I forgot clipping totally.
Thank you for your kind helpful answer.
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
|
|
|
|
I need to add two .cpp files, each containing a class with the same name, to a project. I use the #ifdef and #include directives to tell the compiler which instance of the files to include in a build session. the compile procedure terminates successfully
BUT then I get LINK ERRORs:
Error LNK2005 ... already defined in some .obj file.
Can any one help me to really exclude a .cpp and .h file from compile procedure AND LINK procedures?
Tnx a lot.
|
|
|
|