|
i must use broadcast from project specifiation...
I use to routine to create Server socket:
As it is it runs wrong, i got an error calling listen, if i create a SOCK_STREAM instead of SOCK_DGRAM all goes well:
<br />
int passive_sock(int port, int qlen)<br />
{<br />
struct sockaddr_in sin;<br />
int s;<br />
int flag=1;<br />
int rv;<br />
<br />
memset((char *)&sin, 0, sizeof(sin));<br />
sin.sin_family = AF_INET;<br />
sin.sin_addr.s_addr =INADDR_ANY; <br />
sin.sin_port = htons(port);<br />
s = socket(AF_INET, SOCK_DGRAM, 0);<br />
rv=setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char *)&flag,sizeof(flag));<br />
if (s<0) return -1;<br />
if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) return -2;<br />
<br />
if (listen(s, qlen) < 0){<br />
return -3;<br />
printf("listen error");<br />
}<br />
return s;<br />
}<br />
This is the client-side:
<br />
server.sin_family=AF_INET;<br />
server.sin_addr.s_addr=INADDR_BROADCAST;<br />
server.sin_port = htons(port);<br />
<br />
opt=(char *)malloc(10);<br />
strcpy(opt,"TRUE");<br />
conn_socket = socket(PF_INET,SOCK_DGRAM,0); <br />
retval=setsockopt(conn_socket,SOL_SOCKET,SO_BROADCAST,(char *)&flag,sizeof(flag));<br />
connect(conn_socket,(struct sockaddr*)&server,sizeof(server);<br />
i've noticed that if i change from SOCK_DGRAM to SOCK_STREAM setsockopt returns -1 (error)..
The main problem is that client sends packet.. i think (sendto returns 4)
but server doesn't receive nothing.. maybe server-side is wrong..ù
What do you think 'bout it??
|
|
|
|
|
I want to write a ActiveX Combo box support Unicode.
But when subclassing COMBOBOX, my Unicode ComboBox don't
display correctly. The standart combobox can not sizing in
Horizontal direction, but my Combo can.
Any one can tell me why??
My Unicode ComboBox is build using MFC ActiveX Control Wizard, subclassing COMBOBOX.
Thanks a lot.
|
|
|
|
|
Hi
Sometimes, i have a listview which has about 6000 records in it. It can take a while before showing the entire list.
Does anyone know how to display a label message or a message 'List is loading .. Please wait' while the list is loading. When the list is shown, message should disappear.
Anyone knows a good article about solving this problem.
Best regards
Jens
|
|
|
|
|
There is an article here on CP that displays a small progress bar while a tree is populated. That might be of use.
However you would be better off either trying to improve the load time or using a load on demand technique with a virtual list box. I don't know where your 6000 records are coming from but one would like to think that loading them should be almost instantaneous. Users don't like to wait!
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
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!
|
|
|
|
|