|
So you are looking for a status dialog or such?
I am using Chris Maunders excellent status dialog:
http://www.codeproject.com/miscctrl/progresswnd.asp[^]
To update dialog controls while processing a big amount of data you should always call a function "Peek And Pump" which processes dialog messages (for example allows the user to click the cancel button of a dialog, without PeekAndPump all controls would be frozen and not reacting).
With this dialog you also can show how many items you have processed already. If you don't need the progress bar, just hide it. Shouldn't be that hard.
Btw, if you are processing such a large amount of data you should perhaps consider using a virtual list view which is MUCH faster than the normal Windows list view:
http://www.codeguru.com/listview/VirtualListControl.html[^]
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
yeah i'm currently looking at the 'virtual list view'. I hope i can use it too because i have about 6 columns & all text in the cells.
I see the trick is to move all data in an array, and then when windows asks the text, just check which position (subitem) we are talking about & retrieve it from the array.
But i think i need to read more of this to understand it better.
Thanks for the good article. I'm sure it will be usefull.
Greetings
Jens
|
|
|
|
|
I assume you've already tried CListCtrl::SetItemCount() ?
|
|
|
|
|
Well it's hard to know at beforehand.
In my case there can be 5 customers at a little firm, but at another one there can be 60.000 or more customers.
Greetings
JensB
|
|
|
|
|
Why don't you use a virtual listview?
This basically means that you only need to load the records currently being displayed....
I don't know off hand of an article on CP for this, but there is documentation in the MSDN...
www.kinkycode.com
99 little bugs in the code, 99 little bugs,
Fix 1 bug, recompile....
101 little bugs in the code...
|
|
|
|
|
yeah i'm making my own project now with integration of 'virtual listviews'.
I've found some good articles on cp & codeguru that explain it pretty good
I like the idea of only loading what is necessary. Will greatly reduce the wait-time.
I'll let you know how much it went faster
Greetings
Jens
|
|
|
|
|
Sorry guys but I've never generated ZIP files to use in my applications and I was wandering if it's legal an free use them as a file format.
Have I to pay something if a zip file is generated or read from my app?
Best Regards
|
|
|
|
|
Hi
no, i think all formats are free to use.
but the programs who read the specific files like winzip etc, "must" be bought
Greets
Jens
|
|
|
|
|
Hi Jens
Just another thing.
If I'm using the Xzip class that can be found here in Codeproject, then all is free isn't it?
Best Regards
|
|
|
|
|
XZip is based on Info-Zips source codes... Read the header of the XUnzip.cpp file for their license. I think if you mention somewhere in your app that you use Info-Zips source codes and put the their license somewhere in the docs of your app it should be ok... (no guarantee, read the license yourself )
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Fastest way to search a std::vector for a value? .. string or number... whatver?
|
|
|
|
|
Tomas Wilhelmsson wrote:
Fastest way to search a std::vector for a value? .. string or number... whatver?
stl::find() probably. ( From < algorithm > )
You probably will not find faster than this one.
But maybe you need to revise your design to improve your performance?
You may need use something like hashing or sorting containers.
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
GRRRR ... I'm getting mad with these registry functions ...
So basically, i want to retrive the string stored in "HKEY_CURRENT_USER\Environment\TSLastName" using the RegOpenKeyEx and the RegQueryValueEx .
Why is this crashing ?
LONG yop;
LPBYTE buff;
LPDWORD length;
LPDWORD dummy;
PHKEY phKey;
yop=RegOpenKeyEx(HKEY_CURRENT_USER,"Environment",0,KEY_ALL_ACCESS,phKey);
yop=RegQueryValueEx(*phKey,"TSLastName",0,dummy,buff,length);
And why on hell is RegOpenKeyEX returning a PHKEY if each single Registry function needs a HKEY ????
~RaGE();
|
|
|
|
|
1) You have to allocate the memory where the registry functions can copy the data to. I.e. instead of declaring LPBYTE declare a byte array (BYTE arr[1024] for example), instead of LPDWORD declare DWORD and give the registry functions a pointer to it (using &).
2) The PHKEY is needed. The RegOpenKeyEx function could not modify the HKEY variable without a pointer. (Here the same: declare HKEY and give RegOpenKeyEx a pointer to it, i.e. &hkey).
3) Specify the length of your buffer. In the code above you just give the RegQueryValueEx function a length variable which you haven't initialized anywhere.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
OK !! Now I get it... In fact, I´used the function in a very stupid way.
That's how it works now (for the forum readers ):
BYTE buff[1024];
DWORD length=1024;
DWORD dummy;
HKEY hKey;
yop=RegOpenKeyEx(HKEY_CURRENT_USER,"Environment",0,KEY_ALL_ACCESS,&hKey);
yop=RegQueryValueEx(hKey,"TSLastName",0,&dummy,buff,&length);
Thanks a lot, Dominik, a for you
~RaGE();
|
|
|
|
|
Hi,
I have constructed a generic application with the idea to use it over and over again. The problem is that this application also has a user interface that is different for different customers. The functionality is roughly the same, though.
Now I'm trying to do the following. The GUI was implemented in document/view/frame combinations which run in an MDI application. These forms were originally programmed inside the exe but now I want to disconnect them from the exe one way or the other. My idea was to put them in a COM-component and let the component register the document/view/frames in the exe.
This doesn't work though. As soon as I try to create a childframe window in the COM-component, I get messages that the main window isn't valid (HWND obviously is corrupted, which I can understand).... Is there a way to get this job done?
I've been considering the following alternatives:
* Move the GUI-classes to a MFC Extention DLL and somehow extract them from there and let the exe create the dialogs/views
* Put the GUI-classes inside a toolwindow docked inside the MDI-app. I still have problems with the parent-window pointer them, though
* Something else... Maybe use full-screen modal or modeless dialogs and create those inside a COM component....
I still prefer my first idea though, if it is technically realisable.... Can anyone help?
Structured programming vs. chaotic mind boggling
|
|
|
|
|
For a module I want to write my own stream class.
Although not identical the following example illustrates what I want to do:
suppose you have a class representing a printer:
class Printer { ...};
I want the user of this class to send data to this class using the << operator, so that any data type/class, for which << is defined on streams, e.g.
Printer myPrinter (printerName);
PrinterStream &printStr = myPrinter.getStream();
printStr << "Hello world" << 123 << std::endl;
So, how can I write my own stream class so that I can intercept the data send to printStr?
I probably need to inherit from some STL stream class, but I don't know where to start. Is this something that can be done easily, or is this almost impossible?
Another alternative (although I don't really like it) is to let my getStream() method to return a stringstream. My class then simply needs a kind of flush method to get the data from the stringstream, send it to the output where I want it and then empty the stringstream. I don't like this alternative because it exposes the fact that's a stringstream to the caller. Also I cannot add my own output manipulators (e.g. to set the font or color) to the stream.
Does anybody know a simple solution, or point me to an article that explains how to write your own stream class?
Thanks in advance.
Enjoy life, this is not a rehearsal !!!
My Articles:
- Implementing a Subject/Observer pattern with templates
- Different ways of writing class factories
- AutoRunner: a template class to automatically run start- and cleanup-code in code blocks
</
|
|
|
|
|
I would inherit from ostringstream, overloading output stream operators for your formatting classes. If the format written is binary (contains null characters) it needs special handling.
(Remember that std::endl doesn't just append a newline character. It also makes the stream call flush(). Hence, you need to consider how the flush() method should behave when using this class.)
|
|
|
|
|
Hi
I am drawing a rectangle on the screen using the following code:
void CImageControl::OnLButtonDown(UINT nFlags, CPoint point)
{
m_down = true;
pDC = new CClientDC(this);
pDC->DPtoLP(&point);
m_currentpoint = m_newpoint = point;
CStatic::OnLButtonDown(nFlags, point);
}
void CImageControl::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_draw)
{
pDC->DPtoLP(&point);
pDC->SetROP2(R2_NOTXORPEN);
pDC->Rectangle(m_currentpoint.x, m_currentpoint.y, m_newpoint.x, m_newpoint.y);
CStatic::OnLButtonUp(nFlags, point);
pDC->SelectObject(oldpen);
m_draw = false;
ReleaseDC(pDC);
}
}
void CImageControl::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_down && nFlags == MK_LBUTTON)
{
m_draw = true;
pDC->DPtoLP(&point);
oldpen = pDC->SelectObject(boxpen);
pDC->SetROP2(R2_NOTXORPEN);
pDC->Rectangle(m_currentpoint.x, m_currentpoint.y, m_newpoint.x, m_newpoint.y);
m_newpoint = point;
pDC->Rectangle(m_currentpoint.x, m_currentpoint.y, m_newpoint.x, m_newpoint.y);
}
CStatic::OnMouseMove(nFlags, point);
}
Sometimes the rectangle stays on the screen sometimes it disappears immediately.
How do I get it to stay on the screen? No resizing is done that one would think would cause the screen to be repainted.
|
|
|
|
|
Try adding a TRACE() statement to the OnPaint() and ensure it isn't being called.
It looks like you aren't deleting the CClientDC. Also if OnLButtonUp() is called an !m_draw you aren't cleaning up at all.
FranzKlein wrote:
ReleaseDC(pDC);
I can't find a Release( CDC* ). Does this do a DeleteDC(). I can't see where you are doing delete pDC either.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Is there a function to add a number to the system time?
After I retrieve the system time I want to add lets say 3 hrs to the system time.
Thanks!
|
|
|
|
|
How do you retrieve the system time (post your code) ?
~RaGE();
|
|
|
|
|
I'm using COleDateTime::GetCurrentTime();
Of course, there are many ways to retrieve the system time. If it makes life much easier I can easily use a different function call.
Thanks!
|
|
|
|
|
GetLocalTime(...) & SetLocalTime(...) .
BuggyMax
|
|
|
|
|
hi
I'm too lazy to login, sorry...
did anybody manage it to compile and link a mfc-app with stlport ?
I get all kinds of compiler- and linker-errors...
tia
-widi
vc6 sp5, platformasdk nov2001, stlport453
|
|
|
|