|
Oh thanks Mr.Nish for the reply, now i understand what is thread pool.
Also thanks for your "simple" artiles on Client-Server I/O. Really as a beginner I learn't a lot from them. I don't know why the rating is so low????
|
|
|
|
|
Nowadys, I often find that many softs use ini files, instead of dll files, to support multi-languages such as Flashget, Netants, Createinstall and so on. They employ a ini file to support another language, and need not modify the exe file. As a result, this method is better than the former. But I can not think of how to do it. Can you give me a favour?
Thank you.
|
|
|
|
|
I forget the names, but Microsoft provides heaps of API calls for ini files. Nevertheless, C++ iostreams are more than up to the task if you don't mind doing a little parsing.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|
|
If you are asking what the INI functions are, here you go:
GetPrivateProfileString
GetPrivateProfileInt
GetPrivateProfileSection
GetPrivateProfileSections
GetPrivateProfileStruct
as well as the WritePrivateProfileXXX versions of all of these functions.
I would not reccomend trying to parse these files yourself as the API functions provide quite a bit of error checking and handling for you.
If you are wondering how to use this data in your program, I would create a set of global variables that have IDS associated with them, and the IDS will have the corresponding string in the ini file.
I would recommend that you look into string tables and create a resource only DLL in order to hold these Multi-language strings. You can create a string table with multiple LCID or locale IDS, that are associated with different langauges. Then you would create all of the string entries in this table, and you would only be responsible for selecting the correct LCID. When you load the string from the table it will get the correct one for you.
This also solves the problem from managing the different number of ini files, and prevents users from messing around and being able to edit these files.
Good Luck!
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
Thank you very much. I had known how to support multi-languages with dlls. But nowadays, I see many softs use ini files instead of dlls, so i think it must has some good things, or they will not do this. I also find that they also use the code_page. How to modify the code_page dynamicly?
thank you very much.
zl
|
|
|
|
|
Hello all
I am developing an application which contains three panes.In the left most and middle pane, trees are displayed.I want to give user following facilities,plz help me in this regard.
1: To drag and drop nodes from the middle pane to the left most pane.Can anybody tell me how to do it?
2:I want to save the whole tree in both panes on hardisk and later load it back so that user can edit,delete and make new nodes in existing tree.Please suggest what will be the best method
3:I want to give my application an auto saving option like in MS Word which activates(saves) after a specified interval of time.
regards
|
|
|
|
|
1. I'm assuming your "panes" contain CTreeCtrl or CTreeViews. You can look at the documentation in MSDN for dragging and dropping from CTreeCtrl. The documentation really is quite good.
2. oh dear.
3. once you've implemented (2), create a timer, and in the timerproc call the function from (2).
STL is a religeon. Enquiries to Reverend Christian Grauss
|
|
|
|
|
Hi there!
I'd like to use the ReadFile function to read data from a serial port. But there are few thing that I don't really understand.
So here's this function:
ReadFile(HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // address of buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead,// address of number of bytes read
LPOVERLAPPED lpOverlapped // address of structure for data
);
What i don't relly understand is:
nNumberOfBytesToRead - I know that it shows, how many bytes i want to read, but is it changed when the function returns? I saw that some people uses it to see how many bytes were recieved. Does it show it? Or maybe the lpNumberOfBytesRead does show it.
Thanks for the answers!
|
|
|
|
|
Rudy Brown wrote:
Or maybe the lpNumberOfBytesRead does show it.
Yes.
nNumberOfBytesToRead is just the size of your buffer (lpBuffer). I.e the maximum number of bytes you can receive in one call.
|
|
|
|
|
I have a program in which i have a background process running and i have to update the progress of the Progress bar according to the activities of the Background process .
Can Anyone suggest a solution.
Samir Sood
|
|
|
|
|
put your "background process" in a worker thread. Then your main (UI) thread is free to redraw the screen.
Signature space for rent. Apply Within.
|
|
|
|
|
Could u please post a code snippet of that.
Samir Sood
|
|
|
|
|
Or put your progress dialog in its own thread. Either way will work.
Todd Smith
|
|
|
|
|
Hi..
I know two ways to do so:
The first:
to pass a handle of a progress bar to the worker thread and use it as follows
1. Create a helper class that will hold data passed to the worker thread:
<br />
class CData<br />
{<br />
HWND m_hWnd;<br />
}<br />
2. In the dialog class create a member variable of type CData:
private:
CData MyData;
3. Before the call to AfxBeginThread() fill members of CData :
<br />
{<br />
MyData.m_hWnd=(GetDlgItem(IDC_PROGRESS))->m_hWnd;
<br />
is the ID of the progress bar..<br />
<br />
AfxBeginThread(WorkerFn,&MyData, );<br />
}<br />
4. In the Worker thread function write the following code:
<br />
UINT WorkerFn(LPVOID pData)<br />
{<br />
CData* data=(CData*)pData;<br />
CProgressCtrl* progBar=CWnd::FromHandle(data->m_hWnd);<br />
<br />
progBar->SetRange(0,100);<br />
<br />
}<br />
The second:
Pass the handle of the dialog enstead of the progress bar then use:
<br />
::PostMessage(data->m_hWnd,WM_USER+1,0,0)<br />
and handle the message in the dialog..
Send again if you find any problems..
|
|
|
|
|
Multithreaded apps are simplest if only the main thread deals with drawing the UI, as in your second solution. There is, however, no need to introduce a new message handler in your dialog. Just have the worker thread post a messages directly to the progress control:
Before starting the worker thread, save the window handle of the progress control in a variable that will be accessible to the worker thread (e.g. m_hProgressCtrl ). Then in your worker thread code, post messages to update the progress control directly
<br />
::PostMessage (m_hProgressCtrl, PBM_SETRANGE, 0, MAKELPARAM (min, max));<br />
::PostMessage (m_hProgressCtrl, PBM_SETPOS, position, 0);<br />
Using ::PostMessage() (instead of the ::SendMessage() inside the CProgressBar member functions) means that the messages to update the progress controls will be queued for the main GUI thread.
Stephen C. Steel
Kerr Vayne Systems Ltd.
|
|
|
|
|
Hi,
I want to write a driver for a USB Cam? and waht to learn what must I need to know to write a driver that will work on Windows 2000 and intereact with a USB device. or is there any generic usb driver that can give me data acquire.
karanba
|
|
|
|
|
It's not easy. Read about the DDK in MSDN.
Signature space for rent. Apply Within.
|
|
|
|
|
I have socket server and i would want to know,
how to print client sockets address to screen.
Is there so function, that makes it to
normal ip address form (e.x 120.1.1.2)
|
|
|
|
|
getpeername(...)
Rickard Andersson@Suza Computing
ICQ#: 50302279 (Add me!)
E-mail: nikado@pc.nu
I'm from the winter country SWEDEN!
|
|
|
|
|
inet_ntoa(from.sin_addr)
Nish
p.s. from is a sockaddr_in
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
inet_ntoa() will convert a struct in_addr into dotted number string format.
|
|
|
|
|
It goes like this :
if((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
{
perror("accept");
}
printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));
The remote adrese is returned by the secondn parameter of 'accept' function
Bye,
Orbital^
...the night is long ... but not long enought to do some real coding ...
|
|
|
|
|
|
It's there someone that know how can I compile a program that uses STL on an LINUX system ( I have gcc 2.96 and it seams that it never heard about STL )
Bye,
Orbital^
...the night is long ... but not long enought to do some real coding ...
|
|
|
|
|
If your compiler is so out of date as to not provide STL, try www.stlport.com, they may have a version compatile with your (non-C++) compiler.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
And you don't spend much time with the opposite sex working day and night, unless the pizza delivery person happens to be young, cute, single and female. I can assure you, I've consumed more than a programmer's allotment of pizza, and these conditions have never aligned. - Christopher Duncan - 18/04/2002
|
|
|
|