|
hey thanks, I dont know how to use is but sounds good, ill try
|
|
|
|
|
Hallo.
I've created an activeX control, now I need to put this control on a dialog. It seem's easy, but I need to creat a dll library where are two functions Start(CRect rect,CWnd pParentWnd) and CloseShow(). A dialog has a button and when you click it it calls Start(CRect,CWnd). I've spent a lot of on that. Help me if you can.
|
|
|
|
|
How you host an ActiveX control would depend on when libraries you're using - ATL, MFC, etc.
Steve
|
|
|
|
|
|
In MSVC6:
1. "Project->Add To Project->Components and Controls..."
2. Open "Registered ActiveX Controls" folder.
3. Pick control.
4. Click "Insert".
5. Press "OK".
6. Press "Close".
An icon for the new control will appear on the dialog editors controls toolbar. Proceed as you would for other dialog controls.
Steve
|
|
|
|
|
Thanks, but the problame is not in that.
I've connected the ActiveX, showed it on my parent CWnd, but when I create it
CWnd * m_chiled;// is in header
m_chiled = new MyContral();
I have memory leak, I need to alloc memory for veriables of DLL.
|
|
|
|
|
I'm using straight Win32 API, no MFC.
I've set up a custom control in a dialog app.
It receives WM_KEYDOWN/UP events just fine.
I can tab to it, but it doesn't "show focus".
The actual drawing of the control as focused is easy,
but HOW to I correctly respond to these focus messages???
Any example code around?
Also, although I can tab into the control and tab out of it,
clicking it with the mouse DOESN'T move keyboard focus to it.
(no WM_KEYDOWN/UP events after clicking it's area w mouse.)
Any help?
Thanks in advance!
...Steve
|
|
|
|
|
Steve Hazel wrote: The actual drawing of the control as focused is easy,
but HOW to I correctly respond to these focus messages???
most of the buttons i've done just check the flags in the DRAWITEMSTRUCT they get in their DrawItem handler and draw as focused if necessary (ie. if (pDIS->itemState & ODS_FOCUS) != 0).
you don't need to track key presses or anything like that - Windows will keep track of which control has focus. the control just draws itself accordingly, with the flags Windows hands it.
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
Well, thanks for answering. But I'm not using a button control, i'm using a custom control.
A DRAWITEMSTRUCT only comes to you in a WM_DRAWITEM message.
(an owner drawn button, etc).
Let me back up and explain my problem better.
I'm trying to capture WM_KEYDOWN and WM_KEYUP events in my dialog app - a midi sequencer.
I'm going to use keydown/up to make the keyboard behave "sorta like" a midi keyboard.
(synthesizer keyboard).
So I have a custom control (window class of KBD) that captures WM_KEYDOWN/UP just fine.
But it doesn't show any focus rectangle, etc.
I need to know WHEN to display the thing as focused and when not.
Also, I need for the thing to be focused when clicked on in addition to
when tabbed to. Tabbing to it works fine. Clicking on it doesn't give
it focus...
Any ideers?
also, I tried using a subclassed (WinProc over-ridden) static control marked w
WS_TABSTOP (or whatever) and didn't get keypresses in it.
Will a button control pass along WM_KEYDOWN/UP messages?
Or any other type of control?
Thanks for givin it a shot
...Steve
-- modified at 16:30 Thursday 19th January, 2006
|
|
|
|
|
You need to respond to the WM_SETFOCUS and WM_KILLFOCUS messages.
Steve
|
|
|
|
|
Thanks
I just figured that out.
But how do I make the thing get focus when it's clicked on with the mouse?
...Steve
|
|
|
|
|
You could try calling SetFocus in your WM_LBUTTONDOWN handler. Before this I'd make sure you're passing these messages to the DefWindowProc - It may take these steps for you (I'm not sure).
Steve
|
|
|
|
|
THANKS!
That did it!
I'd been expecting that dang DefWindowProc to do this...
I mean, it does it for keydown (or something) so why not mousedown???
Oh well. It works and I'm off to make the thing DO somethin now
THANKYOUUUUUUUUUUUUUUUUUUUUUU !!!
...Steve
|
|
|
|
|
Hi, sorry in advance to those who may find this a dumb question.
I have the peak values of a wave file displayed in a frame in my dialog box. I want to have a line running across the waveform when the file is playing. I'm thinking that it's quite a hassle to have to use GDI to draw a line at a particular point, then erase and redraw at another point at every seconds of playback. While thinking of ways to avoid the trouble of having to call SetROP2 so many times, I thought of using a caret.
Question: Is a caret even possible in such a situation?
|
|
|
|
|
Well, this won't be much help, but if you can do it, it's possible
I guess the prob with drawing the line is undrawing it, eh?
SetROp (hdc, R2_NOTXORPEN); // <-- YOUR FRIEND
If you go with the caret approach, you'll either have to use the same SetROp xor
biz or else reserve room for the caret in your (probably) custom control...
In any case, it's not the drawing, it's WHEN to undraw that's the tricky part.
If you figure it out, lemme know...
I've got an app doing the same thing and occasionally it doesn't "undraw"...
...Steve
|
|
|
|
|
I have some code that renders multiple lines of text using a mono-spaced font (like Courier New, or Lucida Sans Typewriter).
The UI draws the text in an area of no more than 24 lines by 80 characters wide.
The font to draw this text is calculated so that it fills up as much of the current view rect as possible, so resizing the window causes the font size to get larger or smaller.
In Win2K I can resize the window such that there is no extra space at the edges, and on my machine in XP I can also do this. However on several of my users machines, in XP, they cannot do this, resizing will always cause the font size to jump up or down such that there's space left over at the edges.
I'm using the CDC::GetTextMetrics to get the font/text sizes.
Why would I see different text performance, using the same font name/family between Win2K and even between XP installs?
All versions of XP are identical in terms of the build/sp number (as reported by running the "winver" command).
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
I have noticed different font sizing (exactly the same face and point size) due to XP's ClearType being turned on or off. It seems that ClearType tends to render the font smaller than old W2K without ClearType.
onwards and upwards...
|
|
|
|
|
Yeah I thought that might be the case too. So I checked this in the Display options and tried with it turned on and turned off. It made no difference on my machine at all.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
|
|
|
|
|
You may want to use GetCharABCWidths to calculate the sizing for the width. Also, are you subtracting any scrollbar area, borders or 3D bevel edge sizes (GetSystemMetrics())? These can be different with the new XP themes.
onwards and upwards...
|
|
|
|
|
Hi,
I'm trying to bring the window of Excel to the foreground. I've tried SetForegroundWindow(), but don't work. I tried SendMessage(), but it seems too complicated to me.
What should I do? I have the hWnd of the excel application, I'm sure it is possible.
Also, where can I get more information on how to send messages to other windows, like submitting mouse clicks and key inputs, much like Sendkeys of VB? When I google "Windows Programming", I only get those discussing message loops, Windows proc etc, but not much about the message sending thing.
Thanks in advance.
Regards,
David Chan
|
|
|
|
|
im_chc wrote: I've tried SetForegroundWindow(), but don't work.
Does your applicaton meet all of the requirements described here?
im_chc wrote:
What should I do? I have the hWnd of the excel application, I'm sure it is possible.
How was the Excel window created?
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
DavidCrow wrote:
Does your applicaton meet all of the requirements described here?
I'm not sure, but probably it isn't because "The process was (not) started by the foreground process(my program)".
Yeah, I read that too, that's why I ask the question here for alternatives other than SetForegroundWindow, or for stuffs that fix the problems that make setfgwindow fail.
DavidCrow wrote:
How was the Excel window created?
Actually my code makes Excel run, I use getObject to get the COM object of an Excel Application (say xlApp), and set xlApp.visible to true.
I got hWnd from the xlApp object itself (xlApp.hWnd).
-- modified at 12:40 Sunday 22nd January, 2006
|
|
|
|
|
Hi ,
If you have created the excel through code then you can actually ask the COM interface to give the user the control and make it visible(if not visible),
Check this link also regarding Messages :-
http://www.flounder.com/messaging.htm[^]
Following code sets the yahoomessenger in the forground
HWND hwnd = ::FindWindow (NULL,"Yahoo! Messenger with Voice");<br />
::SetForegroundWindow (hwnd);
Regards,
FarPointer
|
|
|
|
|
Hey thanks! It is a very detailed page on Message API.
However, I have a question. In the article, it said one shouldn't "fake" the system by submiting event msgs like "WM_LBUTTONDOWN", coz I have to make sure that "all the rest of the system state is correct".
However, if I want to do automated testing, and I want to simulate the user's GUI input(just like what the Rational Robot does), I wonder if it is ok for me to do such faking? I mean, would it be very troublesome to achieve that said "all the rest of the system state is correct"?
Or, only better, is there any existing open source automatic GUI testing framework available? I don't mean those xUnit Unit testing frameworks, I mean the GUI ones and provide an API for doing things like getButton(buttonID).click, getWindow(windowID).GetCombo(cboID).selectItem(1), much like the SQABasic scripts?
Thanks!
-- modified at 12:40 Sunday 22nd January, 2006
|
|
|
|
|
I've made this work but I'm wondering if there's a better way that I'm overlooking.
So, I've developed a sub-class of a CEdit control in a development environment. I've got the two files MyCEdit.cpp and MyCEdit.h sitting in a directory of my development environment. My latest and greatest (at least most time consuming) project needs to use the new class object. I can't use New Class because that means I have to start from scratch. I can't add the class from a type library coz it isn't in one. So all I can do, and have done, is include the two files in my project. At this point the class wizard doesn't appear to know that CMyCEdit exists. Under Member Variables/Add Variable the Variable Type doesn't know that I've just introduced CMyEdit. I include MyCEdit.h in the ??????Dlg.h file and no difference.
In order to make the class appear in the class wizard I have to make sure that the class header file is #included in either the dialog or view header. I then delete/rename the .CLW file, invoke the class wizard which then offers to rebuild the class data from the files involved.
Certainly there has to be a better way to do this more directly through VC++.
TIA,
Lilith
|
|
|
|