|
the only thing i can think of, is writing some own
memcmp function based on KnuthMorrisPrat or BoyreMoore algorithms... I actualy dont know how the standard memcmp behaves but I imagine it has a O(nm) runtime, so if your pattern is relativly long, you can speedup your app a lot. (I GUESS)
|
|
|
|
|
=[ Abin ]= wrote:
it takes like 50 seconds to finish the searching, and that makes my application completely useless.
If by "useless" you mean nonresponsive, then I suggest you put the processing code in a separate thread. That way, your UI remains responsive. See this article for more.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Hello,
Can someone explain me please (in as more detail as you can) what the purpose of the (somewhat annoying) precompiled header(s) is?
I am referring of course to the famous MFC's stdafx.h . What's its purpose? Do I really need to have one of these beasts?
All comments are welcome.
|
|
|
|
|
|
Precompiled headers allow you to compile a stable body of code, store the compiled state of the code in a file, and, during subsequent compilations, combine the precompiled code with code that is still under development. Each subsequent compilation is faster because the stable code does not need to be recompiled.
The first compilation (the one that creates the precompiled header file) takes a bit longer than subsequent compilations. Subsequent compilations can proceed more quickly by including the precompiled code.
You can precompile both C and C++ programs. In C++, it's common practice to separate class interface information into header files. These header files can later be included in programs that use the class. By precompiling these headers, you can reduce the time a program takes to compile.
dNimrod#X wrote:
Do I really need to have one of these beasts?
No, but I would recommend using precompiled headers to reduce build time.
See this[^] MSDN link for a nice explanation.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
|
Hi there,
I have this workspace which holds one project that generates a static-library. I am trying now to split this (big) project into smaller ones, not only to make it more easily readable but also because I think it's more logical and one should implement modularity whenever possible.
Now what I would like to know is how I can have multiple projects, parts of the previously referred workspace, have their compiled code be appended to ONE (and the same) static-library? -- is this at all possible?
Also, I have some stand alone source files which are not a part of any project just yet. How can I create a blank project to incorporate them (if such a thing is possible) ?
Thank you so much.
|
|
|
|
|
You may want to consider splitting the large lib into several smaller ones (as long as they aren't dependent on each other). Each lib would be in its own project. You can combine multiple projects into a single workspace.
I tend to keep my general purpose libs in separate, distinct projects, each in its own workspace. When I build an app, I just link with the appropriate lib(s). I'm careful to have no inter-lib dependencies - i.e. lib_1 doesn't require you to also link with lib_2 .
I use the following directory layout for each lib.
/lib_1
/src (.cpp files and private .h files)
/inc (public .h files)
/bin (debug & release build targets - i.e. the .lib files)
/doc (Doxygen generated documentation)
/Debug (compiler generated files - Debug builds)
/Release (compiler generated files - Release builds)
I use the "D" suffix for debug build targets. So my lib files are named lib_1.lib and lib_1D.lib . Both release and debug flavors of the built libs reside in the <code? bin<="" code=""> directory.
Only the <code>lib_1, /src and /inc dirs are backed up (and under version control). Everything else is generated and doesn't need to be saved.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Great stuff Ravi!
I'm really impressed with the kind of organisation you employ. I was thinking of doing something not so quite similar, but you have indeed given me great ideas on how to improve my initial idea! For that, thank you.
Ravi Bhavnani wrote:
/doc (Doxygen generated documentation)
Now you have mentioned Doxygen: is this some sort of an automatized documentation generation app? I can't tell you how much I've been looking for one -- hell, I was even considering building one up from scratch.
Can you tell me a bit more about this Doxygen app of yours?
|
|
|
|
|
Doxygen is a free, open source doc generator and rocks the big one! You can download it from here[^]. I also use GraphViz[^] (which plugs into Doxygen) to generate pretty class hierarchy diagrams. GraphViz is also open source and free.
For a nice write-up on how to use Doxygen in your VC++ projects, see Peter Chen's article[^]. For a quick look at a Doxygen-ated lib, see my FooButton[^] article.
Doxygen makes writing documentation easy. Once you start using it, you'll wonder how you ever got by without it!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Ravi,
I've jsut downloaded it five minutes ago or so and have been trying it out. It seems that in order for Doxygen to document code you have to comment it using a special syntax?
It seems like it is pretty complete though!
|
|
|
|
|
dNimrod#X wrote:
It seems that in order for Doxygen to document code you have to comment it using a special syntax?
Yes. See FooButton.h in my FooButton[^] article for an example. The syntax is very simple (and is in fact even customizable).
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Ravi, one last question please.
In your opinion, is this the best (freeware) documentation generating app available?
|
|
|
|
|
Dunno about "best", but with thousands of commercial and open-source projects using it, it's pretty darn good. Also, the price is hard to beat!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
dNimrod#X wrote:
is this at all possible?
yes, completely.
ex. if you have three libraries A, B and C VC++ will combine them into a single library A, if you simply make A dependent on B and C.
dNimrod#X wrote:
How can I create a blank project to incorporate them (if such a thing is possible) ?
i'd just create an empty Win32 static library project and drop them in there.
Software | Cleek
|
|
|
|
|
Hello EveryOne,
I have made a simple program to enumerate the running processes of the system and i want to show the processes's information that includes Name, Path, Type, Threads etc. Everything goes fine except Type.
I want to categorize the processes into System Processes, User Processes, Local Services and Network Services. How can i do that?
Thanks
|
|
|
|
|
How do we bind a ADO dialog control Edit box to a comboBox to the second recordset field data?
|
|
|
|
|
|
|
I want to put a HBITMAP into clipboard,my project is a dialog-based project and codes as follow:
CDC memDC;
HBITMAP hRes=NULL;
BITMAP bmp;
HBITMAP hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"D:\\023.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
HBITMAP hClip =(HBITMAP) GlobalAlloc( GHND, (DWORD) sizeof(BITMAP) );
GlobalLock ( hClip );
memcpy(&hClip,&hBitmap,sizeof(HBITMAP));
GlobalUnlock(hClip );
if(::OpenClipboard(m_hWnd)==0)
return FALSE;
else if(EmptyClipboard()==0)
return FALSE;
else if(SetClipboardData(CF_BITMAP, hClip)==NULL)
return FALSE;
else
CloseClipboard();
if(::OpenClipboard(m_hWnd)==0)
return FALSE;
else if(IsClipboardFormatAvailable(CF_BITMAP)==0)
return FALSE;
else if((hRes=(HBITMAP)GetClipboardData(CF_BITMAP)) == NULL)
return FALSE;
else if(GetObject(hRes,sizeof(BITMAP),&bmp))
return FALSE;//Errors happen here
else if(memDC.CreateCompatibleDC(GetDC())==0)
return FALSE;
else
{
CRect rect(90,10,140,50);
memDC.SelectObject(hRes);
GetDC()->StretchBlt(90,10,50,50,&memDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
InvalidateRect(&rect);
}
what should I do? thanks a log
|
|
|
|
|
I have a list box, but I need it to auto scroll down, because everytime a message is posted, the box just stay where it is.
I could have like 10 messages posted, but it would only show the first 5...
Help me please, make it simple for me to understand I'm new to MFC.
Thanks ALOT!
Arun
|
|
|
|
|
You may want to consider using a CListCtrl instead of a CListBox . That way you could call its EnsureVisible() method to scroll a specific row into view.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I didn't understand half the things you said.
Could you simplify it.
I already coded most of it, and it would break my heart to recode it.
I just want it simply to autoscroll down
Please help me.
|
|
|
|
|
|
I could only make it CListBox::SetTopIndex, without the (). And I couldn't even add the GetItemCount()-1
Even the CListBox::SetTopIndex didnt work...
What do I do?
|
|
|
|