|
gotcha ... indeed, I'm going to store the dates as datetimes i'm just trying to get a grip on the generics at the moment. You make a v. good point.
|
|
|
|
|
Jammer wrote: Can a generic list hold multiple fields? Somethihing akin to a datatable like, a few strings, an int a couple of bools ... ??
A Generic List can contain items of any 1 particular type. Define a class that exposes properties representing whatever data items you want to store and you can store instances of this class in your generic list.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
Gotcha, so I'm barking up the wrong tree at the moment.
I'm still stuck in database mode when I think of storing data. So if I wanted to achieve the storage of the data I listed I would have to store each value type in a separate generic list. One with strings, one with ints and one with bools ... liked with key values?
so each list would be something like:
key(of type int), string, string, string
key(of type int), int, int, int
key(of type int, bool, bool, bool
and its the keys that bring those items of data back together again?
I'm basically wanting to store a list of files with all manner of information about them and allow a user to query that data ...
|
|
|
|
|
If you store your data in a class, then you can build dictionarys that map keys to class instances, and they will be references to the same class instances in your main list. If you had a numeric value to search, so there could be more than one result, you could do a dictionary mapping int to list of myClass.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
whoa ... that really has gone right over my head!!!
|
|
|
|
|
A dictionary/hashtable is a container with two types, and instead of storing a sequential list you can look up with just an index, it associates one value with another. So, as dictionary<string, string> may have a key of "fish" and a value against that key of "eyes". You do that with myHash["fish"] = "eyes"; and you can look up the value with string thisStringWillBeEyes = myHash["fish"]
So, you can use any type as a key to look up any other type.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Ahhhhh ... this is all making sense now ... i think!
|
|
|
|
|
Christian Graus wrote: If you store your data in a class, then
led mike
|
|
|
|
|
The generic List<t> takes one type parameter. This means you can only make a list of one type.
{string, string...}
or, like you said: {struct, struct... } - which effectively makes it a list of anything.
If you are thinking of data - don't forget the Dictionary<tkey,tvalue> which lets you have an indexer.
Edit: Whoa, real deja vu on the question...
|
|
|
|
|
Gotcha ... thanks for that mark ... where's the de ja vu come from?
|
|
|
|
|
Ah i swear i've seen this question before with almost identical wording. I had a google and I mustve been wrong :P
|
|
|
|
|
ahhhh ... i know that my head is spinning with code at the moment! de ja vu aplenty!
|
|
|
|
|
Hi,
I've implemented low level mouse hook in my application to capture mouse clics, which is pretty easy.
But I've experienced great performace drop when moving windows when the hook is working. So I'd like to run the hook on a separate thread and I cant figure out how to do that correctly. The callback function gets never called thus the hook was created on a separate thread.
I've spend some time studying msdn however I still can't make it work.
thanx for help
zilo
|
|
|
|
|
|
You chose the hard way for me
ok, at least I'll exactly know what I'm doing.
So I guess calling WaitMessage after creating that hook should help to create message quee on my thread?
zilo
|
|
|
|
|
Zilo(svk) wrote: So I guess calling WaitMessage after creating that hook should help to create message quee on my thread?
<sarcasm>
Yes, and then all the mouse move messages from the UI created in that thread will go into the queue.
</sarcasm>
Zilo(svk) wrote: ok, at least I'll exactly know what I'm doing.
Sure, if you say so.
led mike
|
|
|
|
|
allright. didn't work.
is it possible?
zilo
|
|
|
|
|
Zilo(svk) wrote: is it possible?
It's not possible the way you are thinking about it. What you can do is develop a solution by receiving the messages from the queue in the main thread and using your own implementation of inter-thread communications (there are many ways to do that like this one[^]) to pass the information on to the worker thread. Of course if you also require passing information back to the main thread ( like to display something in the UI ) you have to account for that as well.
led mike
|
|
|
|
|
I thought I can make it work running completely on separate thread. Otherwise it's not going to help me with performance. I have no heavy proccesses contected to that hook event, just simple things and still it doesn't perform well. But I have strong feeling that my performace lost is connected to mouse tracking over NC area, as I have implemented custom border painting which involves a lot of unmanaged API calls. I'll try to figure that out.
anyway thanx for help. I didn't think that you will provide me with a straightforward answer like this one
zilo
|
|
|
|
|
Zilo(svk) wrote: I didn't think that you will provide me with a straightforward answer
I can't possibly do that since I have no idea what actual problem you are trying to solve. You only posted what you think the problem is.
led mike
|
|
|
|
|
You already did by saying it's not possible. It's not really possible to post here all the code that it's used for the non-client painting, because it's quite a lot. However I can figure this out easily by removing that functionality to see if what happens.
zilo
|
|
|
|
|
To my big surprise, removing that custom painting and sizing code didn't help at all. Do you have any idea how could I make it run smoother? Just the simple act of creating that mouse hook causes the whole UI to run not optimally...
zilo
|
|
|
|
|
Zilo(svk) wrote: Just the simple act of creating that mouse hook causes the whole UI to run not optimally...
Sure there is no reason to hook mouse messages for the UI thread you are already running in yes? Are you creating a System Wide Hook? That would be even more expensive.
Zilo(svk) wrote: non-client painting
You really need to specify your functional requirements if you want to receive any help on this problem.
led mike
|
|
|
|
|
Yes I'm making system wide hook. Let me explain why I'm hooking mouse events. I want to be able to use context help system. That means, by holding a specified key (CTRL for example) and left-clicking on a control, help file rather than control OnClick event will be raised. So I need to hook keyboard for my special key (that is running w/o problems) and mouse hook to catch any lef mouse click on my application form surface (any control), run the help file (.chm scrolled down to that control found by key-name). Rather than overriding OnClick in any possible control that I will ever use, I decided that the mouse hook is easier way how to accomplish this.
dont worry about the NC painting anymore...
zilo
|
|
|
|
|
And one more question. When I want hook only events regarding my Application Domain, I need to call SetWindowsHookEx with my AppDomain.GetCurrentThreadId() which is unmanaged thread id. Now this method is deprecated and msdn states that I should use ManagetThreadId instead. But this id is not working of course. How can I avoid AppDomain.GetCurrentThreadId() and still create the hook locally (which signifficantly improves the performance)?
zilo
|
|
|
|