|
hi there,
if got an server application, each connection(client thread) must be able to get data in and out of the database. Because of the multible connections the database must be contacted by only 1 class(because of locked up records and that stuff). What is the best way to do something like that?
My own solution would have been to make a message list(/waiting list) for the database-class(like windows does) and make the database-class a thread that keeps checking the messages and respond to them. That way the class handles each oparation after eachother and gives the feedback toward the thread. This would mean that i have to make a linked list of a structure that contains something like this:
<br />
- Owner of the message(thread ID)<br />
- Command for the database(something like SQL or maybe a selfmade kind)<br />
- Pointer to the Recordset where the thread retrieves all information from the database<br />
My problem is not to realize something like this, my problem comes wenn i have to make an Recordset that is variable and only contains information. CRecordset only makes a Recordset that is connected to an database, and thats not what i need. Does anyone know how to do this?
I hope you'll understand what i mean, my english is not the best.
[]D [] []D [] (from holland)
|
|
|
|
|
MSDN says:
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl->GetItemText(lParam1, 0);
CString strItem2 = pListCtrl->GetItemText(lParam2, 0);
return strcmp(strItem2, strItem1);
}
void snip_CListCtrl_SortItems()
{
extern CListCtrl* pmyListCtrl;
pmyListCtrl->SortItems(<code>MyCompareProc</code>, (LPARAM) pmyListCtrl);
}
In the above,
pmyListCtrl->SortItems(<code>MyCompareProc</code>, (LPARAM) pmyListCtrl);
there are no arguments passed to MyCompareProc> So what is it comparing? I am puzzled. I thought somehow I would need to send in the list of items in that column to the comapre function? Thats what lPAram1 and lPAram2 are right? How is it automatically stepping along my column and comapring stuff? I dont see this in the code....
Appreciate your help,
ns
|
|
|
|
|
|
That is what list control does internally, it calls supplied function to sort the items.
|
|
|
|
|
Okay. I didnt realize that theres magic going on I cant see.....like the listctrl getting cleared and repopulated with the new sorted items etc. Nor did I see the items going in by pairs......it just knew that it was responsible for sending in the items in that clicked column and doing the compare as long as I give it the CompareFunction body....hmmmm.
Thank you.
Appreciate your help,
ns
|
|
|
|
|
Hi, everyone!
The two terms always puzzled me. Who can give me an
example to explain the difference?
Thanks in advance,
George
|
|
|
|
|
If you really want to know read books by Scott Meyers:
"Effective C++", "More Effective C++"
|
|
|
|
|
Let me see ... ...
|
|
|
|
|
CString *example1;<br />
CString *example2;<br />
<br />
example1 = new CString;
delete example1;<br />
<br />
example2 = new CString[10];
delete [] example2;
Simply said: delete is for deleting single objects, delete[] is for deleting arrays of objects.
Everything you allocated with new[] you should must free with delete[] .
--
karl
|
|
|
|
|
How to Enable /Disable the Toolbar?If the user closed directly the toolbar I want check the menuitem?
|
|
|
|
|
To disable/enable a toolbar i think CToolBar::EnableWindow(true/false) may do it
for the second question, use ON_UPDATE_COMMAND_UI macro on the menu item to update its state, and in the handler function just check the item according to the toolbar visiblitly:
the code could be like:
<br />
void CMainFrame::OnUpdateMyMenuItem(CCmdUI *pCmdUI)<br />
{<br />
if(::IsWindow(m_Toobar.GetSafeHwnd()))<br />
{ <br />
pCmdUI->SetCheck(m_Toolbar.IsVisible());<br />
}<br />
}
|
|
|
|
|
Thank U for reply.
I have one more doubt.Toolbar is implemented byusing CToolbarCtrl.I got successfully in the DEBUG.But I was change the settings from DEBUG to Release Toolbar window is not display properly.Please help me.
|
|
|
|
|
Well! I re-checked the code in a sample program under DEBUG and RELEASE and found nothing abnormal.
It is not clear what you mean by not display properly. What kind of error you exactly encounter.
|
|
|
|
|
HI I KNOW HOW TO CAPTURE VIDEO FROM WEBCAM
BUT HOW TO TRANSPHER IT THROUGH WINSOCK..
I WANT TO DO VIDEO CONFERENCING THROUGH VC++
PLEASE TELL ME HOW TO DO IT
|
|
|
|
|
I think you NEED to get in touch with the TV-Mogul. Try this link.
http://www.software-rus.com/[^]
Chris Meech
"what makes CP different is the people and sense of community, things people will only discover if they join up and join in." Christian Graus Nov 14, 2002.
"AAAAAAAAAHHHHHH!!!!! Those leaks are driving me crazy! How does one finds a memory leak in a garbage collected environment ??! Daniel Turini Nov. 2, 2002.
|
|
|
|
|
Chris Meech wrote:
I think you NEED to get in touch with the TV-Mogul.
Ooooh, that's harsh!
(even that it had it coming from screaming its question the way it did)
Why not point it to something that actually could be used instead, like VLC?
That way we would have both helped something, and would get rid of it.
|
|
|
|
|
Did you go:
http://www.banasoft.net/AVPhone.htm
|
|
|
|
|
How can I add Header information. Like Version info and other important information?
Thanks
SPGV
|
|
|
|
|
Hi guys
I have an app (single document) that prints perfectly, but the print preview is wrong. When I press the zoom button, the page changes to the next one to print.I'm doing something wrong?
There is a way to avoid that the page changes when I press the zoom in the preview?
Best Regards
Dr. Pi
|
|
|
|
|
This is probably a problem in your OnPrint() code. When you render your output you need to check the value of pInfo->m_nCurPage to make sure you render the correct output. The big difference between preview/print is that in preview your OnPrint() can get called with a random order of pages, you cannot assume it will go page 1,2,3,....,n where it normally does when actually printing.
Roger Allen
Sonork 100.10016
WHats brown and sticky?
A stick or some smelly stuff!
|
|
|
|
|
Hi,
I'm using lots of containers objects such as Vectors and am being constantly frustrated at how awkward it is to look at the contents when debugging. A large Vector (of which I use many) may take half an hour to cycle through within the watch window, doing Vector._first, Vector._first+1, Vector._first+2 etc... seems to be the only way to look at the entire Vector. Please tell me there is some other way??
Thanks in advance,
Julian Churchill
|
|
|
|
|
Add a global function to return entry n, and use the result of that function in the watch window. Something like:
vector<int> vec;
/* I used 'int' arg. type to keep down example size */
int foo(const vector<int>& v, int entry)
{
return v[entry];
}
Then in the watch window, to see entry 47 of vector vec,
foo(vec, 47);
++luck;
|
|
|
|
|
When you are debugging vectors (or any pointer to an array of items), you can follow the expression with a comma and a count. This will display count elements.
So, Vector._first,10 will display 10 elements starting at Vector._first.
Best regards,
John
|
|
|
|
|
thanks for all the help, that's a debugging golden nugget as far as I'm concerned... can't find it anywhere in the help
|
|
|
|
|
hello,
and i'd like to monitor a server, to see when the server is down. of course, i could ping periodically, but is there a better way, maybe to get a notification from windows?
thanks
|
|
|
|