|
For a project i need to make a persistent file open dialog. I mean i want to remember the latest view mode (icon,detail,thumbnail) and if in detail then also the latest sort order. I thought of 2 possible ways to handle this.
1. I found out that the list control is created throught COM. MSDN states that a IShellBrowser interfaces is exposed by the common dialog. through IShellBrowser you can get a IShellView and call it's SaveViewState() member. But how do you get the IShellBrowser object ??
2. Using a message hook and try to intercept the column click messages, and the menu commands sent when the user changes the view-mode through the toolbar button and the then popped up menu. But i can't see/find thoose messages ...
Any help would be appreciated.
Gr. Mark
|
|
|
|
|
I am using a keyboard hook and everything is getting called correctly except I can't seem to change the keycode for instance when you press 'a' i want the output to be 'z' ... here is my code for the KeyboardProc()
LRESULT LOCKSCR_API CALLBACK KeyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(hKeyHook, nCode, wParam, lParam);
}
I've tried returning CallNextHookEx(hKeyHook, nCode, (WPARAM) 'z', lParam);
but it seems to ignore the 'z' and get the wParam from somewhere else anyways.
any help would be appreciated.
Thanks,
Vince
|
|
|
|
|
How can I create an invisible thread? I mean I want my thread not to be visible when you press CTRL+ALT+DEL. For example kernel32.dll is such a thread. If I create a thread within an application, my app name is shown when I press ctrl+alt+del. If I terminate the application, the thread is automaticaly terminated too. I heard that in UNIX you can leave a thread running forever (zombie thread). What is the equivalent of this for Visual C++ (MFC) ???
Sorin
PS: pls answer to subso@yahoo.com Thankss
|
|
|
|
|
ah it seems that im at the same road block
but i cant get my dll(thread) to evan start
|
|
|
|
|
I recently needed a spell checker for one of my applications, and after trying to find one that existed already, DLL, ActiveX etc, and using OLE and Word to do things, I decided to make one myself.
I started, but after experimenting, decided I needed a dictionary first to test results accurately, so for the last four months I've been compiling one (almost 75,000 words - UK English).
I'm using a CObArray to store the words, and this was fine to begin with until I got to around 15,000 words, and then things slowed down drastically.
What I'm basically doing is finding each word in a text box, then going through the dictionary list (the CObArray) and see if it exists, otherwise try and find words that start with the same characters from the left.
It's so slow though, it's completely unusable, and the intelligence is ridiculous (I also need to do things like vowel swapping, etc.)
I'd just like to know what the best way speed wise is of using an array or list - I've never had any problems before, but that was will arrays < 20,000.
I'm using MFC (CStrings and all that), so that's probably half the problem, but even trying chars and strncmp etc. didn't really make that much of a difference.
I was going to post the project to CodeProject when I'd finished, but since it's slow, doesn't work, and the code probably needs a complete re-write and I haven't got the expertise in that area, is it worth just submitting the code and project anyway, and everyone has a look and tries to improve it?
Regards,
Peter Peason
|
|
|
|
|
Peter,
My vote is go ahead and post it, I think it will be a project that quite a few people would like to spend some brain-time on. I'd be clear in the opening paragraph of your article that you're posting it to encourage people to help improve and refine it, I've noticed that people can be pretty harsh here sometimes (which certainly has the effect of keeping the quality high, but can be daunting to those considering making a submission).
I for one would love to add a spell checker to CodeProject's forums and lounge, so if you post your code maybe that would make for a good starting point
David
|
|
|
|
|
G'day Peter,
I know next to nothing about spell checker implementation and you may already know about this stuff, but here goes...
I suspect that some spell checkers may use a Soundex[1] algorithm (or variation thereof) to encode their master word list. When checking the spelling on an individiual word, you'd generate a soundex code for the check word, and look for words with matching soundex codes in your master word list. This soundex comparison search may turn up lots of 'hits', but you could then refine matters bu searching the soundex hit list with a more exact word comparison.
[1] Soundex encodes the 'sound' of words by sripping out the vowels and representing similar sounding consonants with numerics (i.e 'd' and 't' are represented by the numeral 3) . A search on Google for 'soundex algotithm' will turn up plenty of pages detailing the original Soundex algorithm and several refined versions.
Hope this helps,
Steve
--------------------------------------
Steve Driessens
|
|
|
|
|
Hi,
Thanks for the information - I notice that Matt Gullett also posted an article on using this type of algorithm in spell checkers, so I'll have a look around.
Regards,
Peter
|
|
|
|
|
Programming Pearls 2nd (ISBN 0201657880) has a section that will probably be useful for this (column 13), you should probably take a look if you can.
|
|
|
|
|
Is your array of words sorted? If not, then nothing you do will help the speed, because every time you search the list, you'll have to do a brute-force search.
If you do have the words ordered, put them in a binary tree instead of a flat array. That greatly speeds up searches, and it's easy to add new words, whereas it's _very_ expensive to add something in the middle of an ordered array.
I wrote a spell checker for myself back in college to teach myself some C++, but it just did lookups, not suggestions or letter-matching like yours. I used a simple hash table, but a hash table isn't ordered, so that wouldn't be a good solution for you.
As an aside, if you have access to a Unix system, grab its /usr/dict/words file - it's a word list. I'm sure there are also word lists out on the net, if you look (or search Google).
--Mike--
http://home.inreach.com/mdunn/
"That probably would've sounded more commanding if I wasn't wearing my yummy sushi pajamas."
--Buffy
|
|
|
|
|
You beat me by seconds to the "use a tree!" comment. Ah well...
Posting the spell checker to CodeProject would be way cool. If you make it clear it's a work in progress you will be surprised at the number of readers who will grab the code and run with it to get it up to spec.
cheers,
Chris Maunder
|
|
|
|
|
Yes, it is sorted, but the suggestion code I'm using is crap, and it needs completely re-writing.
I've submitted an article to CodeProject, there's a fair amount of documentation there, and I've also included the dictionary file. I got most of the dictionary from Unix versions of open source spell checker libraries actually, but I've checked through most of it and added quite a few words.
Cheers,
Peter
|
|
|
|
|
>>I got most of the dictionary from Unix versions of open source spell checker libraries actually
Are you sure you're not violating the license for the opensource project?
|
|
|
|
|
Not that I know of, but It's worth a check.
Regards,
Peter
|
|
|
|
|
Not that I know of, but It's worth a check.
Regards,
Peter
|
|
|
|
|
Right.
I got the majority of the words from here:
http://dosware.nfo.sk/txtms02.htm#words
but I took quite a few words out that were specific or that I couldn't find elsewhere.
The readme file it came with contains this:
Dallas, TX
6-Sep-91
This is a list of over 100,000 English words transcribed
orthographically. I obtained it from The Interociter bulletin
board in Dallas (214/258-1832). The original read.me file said
that the list came from Public Brand Software.
The original list contained 146,440 words, but I discovered that
there were thousands of duplicate words. I resorted the list and
removed the duplicates using the Unix utility uniq. The total
number of words is now 109,582. I have repackaged the list into
four files (the original was five):
File Bytes Words Range
--------- ------ ----- -----
words1.lst 315376 29839 A-D
words2.lst 242484 23101 E-K
words3.lst 325716 30439 L-R
words4.lst 270759 26203 S-Z
----------------
Total 1154335 109582
This word list includes inflected forms, such as plural nouns and
the -s, -ed and -ing forms of verbs. Thus the number of lexical stems
represented in the list is considerably smaller than the total
number of words.
Evan Antworth
Academic Computing Department
Summer Institute of Linguistics
7500 W. Camp Wisdom Road
Dallas, TX 75236
U.S.A.
Internet: evan@sil.org
UUCP: ...!uunet!convex!txsil!evan
phone: 214/709-2418
fax: 214/709-3387
----
Do you recon it's okay to use/post a dictionary I've compiled mainly from this source or not?
It doesn't say anything about not using them, it even says it was taken from another source in the first place.
Regards,
Peter
|
|
|
|
|
Hi, the following code works fine (AFAIK) in release builds, however, it gives annoying warning in debug builds... I am passing a CPropertySheet* between an application and a DLL function loaded using GetProcAddress. In the debug version, I get several ASSERTION failures informing me that I should pass the window by HWND rather than CWnd*. I have tried to do this, but cannot seem to get it to work. Here is the code that causes the ASSERTIONS:
calling function: (checks removed for brevity)
extern CPropertySheet* pP;
extern HINSTANCE hInst;
typedef void (*foo)(CPropertySheet*);
foo f = (foo)GetProcAddress(hInst,"Foo");
foo(pP);
dll:
extern "C" _declspec(dllexport) void Foo(CPropertySheet* pP)
{
ASSERTIONS occur here, if I use pP, specifically, I am using the dll to add CPropertyPage derived objects
...
}
I have tried to pass an HWND, create a new CPropertySheet* and attach it, but this doesn't seem to work, and if I do things like add pages to this CPropertySheet, they don't seem to have any effect in the calling app.
Here's what I've tried:
calling:
typedef void (*foo)(HWND);
foo(pP->m_hWnd);
dll:
CPropertySheet* pNew = new CPropertySheet;
pNew->Attach(hWnd);
// now try to use pNew, but it doesn't have any effect in the main app
Could somebody show me the 2 or 3 lines of code to pass a CWnd* properly between an app and dll?
Sincerely,
Joe Hastings
Mach5 Enterprises, LLC. http://www.mach5.com/
"Web Intelligence for the New Economy"
|
|
|
|
|
I don't know how to write 2D fullscreen applications (games) in Visual C++ in MFC. Can you help me ? I will very happy, if you send me some informations or files with source code about fullscreen programming.
|
|
|
|
|
You want to use DirectX, you can set up a DirectDraw surface to take over the whole screen, plus you get back buffers, etc. Download the SDK from Microsoft and have a look at the samples that come with it - that's how I've been teaching myself and I got a 2D game up and running within a week, so it can't be too hard.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
Hi
Does anybody know the algorithm or function to obtain the "3D Object" color.
For instance on Windows 2000 with the 'Personalized Menus' feature enabled, I need to know what the light color is on the menu. Once I have this algorithm I will release my class to enable MFC Applications to have personalized menus with bitmaps
Regards
Norm
|
|
|
|
|
GetSysColor( COLOR_3DFACE );
--Mike--
http://home.inreach.com/mdunn/
"That probably would've sounded more commanding if I wasn't wearing my yummy sushi pajamas."
--Buffy
|
|
|
|
|
Мне нужен контрол в котором пользователь не мог бы менять размер колонок.
|
|
|
|
|
Help, People!!!
We have: A certain bitmap (in the application resources or in a CBitmap - not important) and a certain device context (CClientDC for example).
We need: To draw this bitmap in this context in the eXcluding OR mode (it's required for dragging elements).
Well, I've found one way. I create a campartible DC in memory by CDC::CreateCompartibleDC, draw the bitmap in it, and then copy the image into my target context by using CDC::BitBlt(...,SRCINVERT).
BUT (!) the image we obtain this way is transformed into black-and-white.
Who knows how to draw a full-color XOR bitmap please answer.
|
|
|
|
|
Try setting the SetTextColor and SetBkColor on the target DC before executing BitBlt, I've spent a good hour trying to get BitBlt(...SRCAND) to work, only to find I forgot to set SetTextColor and SetBkColor. Theres not much documentation detailling the raster operations.
Good Luck
Norm
|
|
|
|
|
Can anyone tell me how much work or time is involved in implementing a Network Provider DLL for a very simple network protocol?
The Microsoft documentation is fine but a little thin on examples.
Any help would be greatly appreciated. I am WAY out of my element here.
thanks
|
|
|
|
|