|
First of all, tell me if i am right or wrong: You made a program which hooks into the other application -probably one you got with your TV card- to catch messages (and perform your bidding) it sends itself when the remote control is invoked. If so, you could try using Spy++ to see what messages are being sent when certain buttons are pressed for starters. But it can also be that that certain program will only respond to certain remote-keyhits when an application it knows about is running and responds to these, that's why your commands work only when you TV program is running. What is that proggie you are hooking into?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
hmm.. the program, I have made, sets a global hook (so I used DLL) which "probably" catch all messages, before any other application receive them, and when the message has a WM_USER parameter then on the screen is displayed a Message Box. If I don't press "OK" button, the message won't be passed to it's destination app. I'm new to the C++ and WinApi, so this is how I think it works due to things that have happend when I've launched it and pressed some button on remote control. And it looks to my that, when I press other buttons, than TV and FM, messages aren't generated by OS, drivers or some other programes connected with my TV card. And the program, I'am hooking into is WinFast Wizard. Probably there is some other application that receives all signals from my remote control, but if so, then I don't know how it's called like.
And about Spy++ (I've had no idea that something like this exists, so thank you for advice)....
I'am using DevC++, and as I know from the msdn site the spy++ is a part of Visual C++. I've got somewhere 2008 Express Edition but is Spy++ in there too?. I didn't see any information about it, that's why I ask.
modified on Friday, January 23, 2009 4:24 PM
|
|
|
|
|
Well, if controlling applications is all you want to do then -if i were you- i'd look for some already written application to achieve it, like this[^], there are usually tonns of apps like that to allow you control. No use reinventing the wheel.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
Thanks, this application does almost exactly that what I wanted my app for, but anyway I want to write my own program. If I make it, I will have a satisfaction, useful program which looks and behave as I want to, and I will learn something new. That is why I didn't look for already written apps. So, I will keep trying. One more time thank you for help, I'm sure that spy++ will be helpful (if I get it somehow) and in case of failure I can use the application you pointed to.
|
|
|
|
|
Hi.
I've been googling this for a while now, and I still find no good answer for it.
Before you throw RTFM at me, I'm still searching for the answer.
But if you've been through this before, any useful links are appreciated.
This would fold nicely:
This would fold nicely also:
This wouldn't fold:
This wouldn't fold either:
It won't kill me to see these, but as the code grows it's getting harder and harder to see the function names.
|
|
|
|
|
Doxygen provides several ways to mark what it should process. Have you tried the alternatives like:
or
or
|
|
|
|
|
Thanks for your reply!
The slash star and slash slash exclamation is out of the question due to company's coding standard.
What I don't understand is why the triple slashes when it's tabbed inside it won't fold? I don't think the Eclipse CDT team haven't noticed that format already...
|
|
|
|
|
Using the vertical tab control style TCS_VERTICAL in themed XP is not possible, because Windows draws the tab horizontal instead of vertical. I have written code (in Win32) to draw the tabs vertical. The TCS_OWNERDRAWFIXED flag should prevent Windows from updating the tab. However, Windows still paints the tab background. Only the interior (text and icon) is not painted. To my code it means that one or more of the tabs are drawn empty, because Windows painting is done after my code is executed. Moreover, in a single line tab control with tabs extending the client window, Windows adds a spin control for scrolling. It seems to be updated elsewhere than WM_PAINT, because my code can get it disappear.
Does anyone know how to control the way Windows is drawing the tab control?
Best regards
Anton112
|
|
|
|
|
Check out this[^] article, maybe it can give you hints. Good luck.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
Thanks for your answer.
I cannot argue that I can't use anything from it. But it still doesn't answer the main part of my question: how do I prevent Windows from painting the tab control background. I cannot use the sample directly because I don't have MFC (that's why I'm using Win32).
Thanks.
Anton112
|
|
|
|
|
Did you try handling WM_ERASEBKGND[^]?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
Yes, I have tried. It makes no difference.
Anton112
|
|
|
|
|
I'm out of ideas right now, sadly afaik in many controls the WM_PAINT message and such sort does not get always invoked when drawing occurs, instead probably the drawing code gets called directly by who knows what event handlers. I have seen this happening a few times. Of course i could be wrong...
Anyways, try adding the WS_EX_TRANSPARENT style, no idea if it changes anything or even if it does not make things worse, it's just a hinch.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
Apperently, WS_EX_TRANSPARENT makes no difference.
Anton112
|
|
|
|
|
Are you handling WM_DRAWITEM[^]?
Best Wishes,
-David Delaune
|
|
|
|
|
|
Sorry, what is AIM?
Anton112
|
|
|
|
|
Hi David, and thanks for your interest.
I have analysed my problem a bit more. WM_DRAWITEM is not sent at all. WM_ERASEBKGND is sent only upon repaint of the application (focus changed, window rezise etc.). If I add return 0; to WM_PAINT, Windows stops updating the tabs, but the application is not updated either. By adding a flag to control WM_PAINT when the mouse is within the tab area (WM_MOUSEMOVE and WM_MOUSELEAVE) I can override Windows update, but only as long as the mouse is within the tab area.
Do you have other ideas to which events I could respond?
Kind regards
Anton112
|
|
|
|
|
Hi Anton,
There may be some useful information on the link provided below. Looks like the Tab control will require some ugly hacks to be fully customized.
Hacking the Overall Background Color of a Windows Tab Control[^]
I looked at a customized tab control I wrote a few years back and it looks like I was doing something similar. I was essentially drawing on top of what was already drawn!
Best Wishes,
-David Delaune
|
|
|
|
|
Hi David,
I have to realize that it is too long time ago I wrote code for Windows last.
First, I used GetDC/ReleaseDC to get the DC for WM_PAINT where (I suppose) it should have been BeginPaint/EndPaint .
Second, I used the hWnd entered through the WndProc call for one of the functions and the locally stored m_hWnd for the other. I.e. GetDC(hWnd) ReleaseDC(m_hWnd) . I don't hnow if it causes any trouble, but it is not very nice.
Anyway, now I can prevent Windows from drawing the tabs, and the spin control is controlled by Windows (except in the vertical alignment: they are painted but not handled ). The remaining problem is that I have to draw the whole tab background by myself. But I expect it to be a relatively small problem.
Best regards
Anton
Anton112
|
|
|
|
|
Hello.
I have the hwnd of another window and I am trying to get the text. I know how to get text from another window (WM_GETTEXT) but I don't know hot to get the text from the currently focused control in that window.
Unfortunately GetFocus() won't work so I am out of ideas.. I would even try using EnumChildWindows, but I don't know how to find out if a particular control is focused.
Can anybody help? Thank you in advance.
|
|
|
|
|
nc3b wrote: Unfortunately GetFocus() won't work...
Is it because the window (containing the control) is in another thread?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
Yes, it's in a different program.
|
|
|
|
|
Then you may need to use GetGUIThreadInfo() first.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
Can you please give an example?
Suppose I have a HWND of a window (GetForegroundWindow()) and wnat to get it's focused child. How would I do that? Thank you.
|
|
|
|