|
Or just paint them yourself!
led mike
|
|
|
|
|
asterisks look more like bullet holes to me *
|
|
|
|
|
Do any of you guys know of a control which allows you to capture key combinations, and then present them in a human readable format? For instance, if I click the control, and then hit Win+F, it'll present Win+F.
--
Verletzen zerfetzen zersetzen zerstören
Doch es darf nicht mir gehören
Ich muss zerstören
|
|
|
|
|
OnKeyDown
led mike
|
|
|
|
|
I'm already investigating various possibilities... The problem with OnKeyDown (if my memory serves me right), I won't get Alt/Ctrl/Shift-keys. I'm currently playing with a thread local keyboard hook. So far, so good. Now I just have to figure out when a keypress ends. (Which isn't as trivial as it may seem it turned out)
--
Verletzen zerfetzen zersetzen zerstören
Doch es darf nicht mir gehören
Ich muss zerstören
|
|
|
|
|
That is what I remember as well. I would think down and up might need to be trapped depending on the requirements. I know you can handle it though.
led mike
|
|
|
|
|
The thing with hooks is that you can trap pretty much anything, except Win-key combos. No meddling with PreTranslateMessage() required.
But it'll just have to wait until monday. It's 17:15 here now, and that means that I'm out of here!
--
Verletzen zerfetzen zersetzen zerstören
Doch es darf nicht mir gehören
Ich muss zerstören
|
|
|
|
|
Joergen Sigvardsson wrote: that means that I'm out of here!
Have a great weekend! It's Super Bowl weekend for us so PARTY TIME!
led mike
|
|
|
|
|
|
Hohoho! I did some searching and found CHotKeyCtrl/msctls_hotkey32! I had no idea that such a thing existed as part of Windows.. Thanks mate! I owe you one!
--
Verletzen zerfetzen zersetzen zerstören
Doch es darf nicht mir gehören
Ich muss zerstören
|
|
|
|
|
No problemo The one negative is that the hotkey control doesn't recognize the Windows key - I just checked on Vista and the shell picks up the Windows key and doesn't let the hotkey control see it.
|
|
|
|
|
Yep, I just whipped up a test app (it was sitting in the MFC toolbox all the time! ). I can live without the Win-key though.
--
Verletzen zerfetzen zersetzen zerstören
Doch es darf nicht mir gehören
Ich muss zerstören
|
|
|
|
|
Hi
I´ve got the following doubt. I ñve got a datagrid that can be sorted. I have attached a dataset.
For example.
DataSet ds = new DataSet("JAMONES");
ds.COLUMN(nombre);
ds.COLUMN(id);
I have associated a ArrayList with all the JAMONES. I would like to delete the selected JAMON from JAMONES using the id. How can i do to indexed easily the ArrayList?
ArrayList jamones = {jamon1, jamon2};
DataGrid jaomnesDG = {jamon2, jamon1}.
I tried to delete jamon1. How can i delte from jamones.
Best regards,
John
|
|
|
|
|
Did I miss something? There is a "DataSet" in MFC?
led mike
|
|
|
|
|
I have a single document application with a custom GUI. When the user starts the program I calculate the width of the screen and then I place my GUI in the middle of the screen based on the retrieved int-value that decides the x-coordinate.
I've discovered now that users are confused by the fact that the area where they work is located at screen center but the Windows menu with File Edit... etc. is located in the top left.
Due to other reasons I can't just make the application window as big as the GUI, the GUI must be centered in a full screen window.
So, how do I offset the choices in the Menu (File, Edit, etc.) so that it's centered above the GUI?
|
|
|
|
|
sortegrip wrote: ...the GUI must be centered in a full screen window.
So why not just call CenterWindow() ?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
What would I center it against and where in my CView or CDoc would I do it?
I only have one window and in the center of that window I draw the GUI on the DC in OnDraw().
|
|
|
|
|
sortegrip wrote: What would I center it against...
That all depends on the argument you pass to it. By default, it centers child windows relative to their parent window, and pop-up windows relative to their owner.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I have a TabControl ( not the MFC one ) on my View.
In this Tab i have a huge number of Views.
If the User clicks in the Menu on "Customers" it opens the customers in this current Tab, if he
clicks on articles, so it opens the articles AND DOESN'T erase the Customers-View, because he can re-open the used-View with the old-state ...
So i need to close/delete all these views if the Tab closes...
In the "destructor" of the Tab i close all opened Views from this Tab
But if i close the whole application, it doesn't close the Tab ( which closes the Views )
It closes the Views, then the Tabs, then the TabControl
If he steps into the Destructor of the Tab, the Pointers of the Views are still there,
but their hWnd aren't valid anymore...
Now the question : How can i test, if a pointer on a View has a valid hWnd or if the object behind
the pointer is still deleted ?
It's certainly possible or not?
Thanks
|
|
|
|
|
if (::IsWindow(*pView))
// HWND is valid
else
// HWND is NOT valid
|
|
|
|
|
Thanks for your answer.
But this dont work
Because the pointer is already 0xcdcdcdcd. If the pointer is 0x000000 i could test him on
if(View!=NULL) or can i test also on 0xcdcdcdcd ?
Is it a special-adress-value for deleted objects? Because if an instance is deleted, the pointer
sets to 0xcdcdcdcd ...
Thanks
|
|
|
|
|
If your "views" or "tabs" are derived from CFrameWnd then they delete themselves when you call
DestroyWindow(). Therefore you should set the pointers to NULL so you can check them before
trying to use them.
It's up to you to track the lifetime of these objects. That means if any child windows of a
given window class are not CFrameWnd derived and are allocated with new then the child object
should be deleted - usually this is done in a WM_DESTROY handler of the parent.
To destroy a CFrameWnd derived window
pFrameWnd->DesstroyWindow();
pFrameWnd = NULL;
To destroy a CWnd derived window
pWnd->DesstroyWindow();
delete pWnd;
pWnd = NULL;
|
|
|
|
|
And no, don't test on 0xcdcdcdcd - that's a debug value but there's no guarantee the CRT will
change a pointer to that value when it's deleted. It's up to the programmer to keep track of
all that
|
|
|
|
|
I am using a Tabbed Dialog (6 dialogs in total).
Now in some of these Tabbed Dialogs I need to wait for an external event, so I do the following:-
while(waiting)
{
Sleep(100);
ProcessMessages();
CheckForEvent();
}
void ProcessMessages()
{
CWinApp* pApp = AfxGetApp();
MSG msg;
while(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
pApp->PumpMessage();
}
But my question is 'Do I need to have a separate ProcessMessage in each of the Tabbed Dialogs' and are they a better way of doing this sort of processing.
Note I use a 3rd party API for the external event.
Many thanks,
Andy.
|
|
|
|
|
Andy202 wrote: I need to wait for an external event...
So why aren't you using CreateEvent() and WaitForSingleObject() ?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|