|
several sockets (multiple threading) on server-side share same public resource, such as user-array, for deleting, adding users etc.
sometimes, server crashes.
reason of server's crashing can't be debugged properly, but, from debug hints, I guess the reason is that when a socket is doing something on user-array but another socket start adding or deleting users on same array.
If this is real reason, how to avoid it? lock user-array? or other ways?
Thanks for comments.
|
|
|
|
|
You HAVE to use synchronization if you have multiple threads accessing the same object if that object is being altered!!!!!
You can use a critical section[^] or a mutex[^] to ensure only one thread can use the protected object at a time.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Put the code that accesses the shared resources between the EnterCriticalSection and LeaveCriticalSection APIs.
|
|
|
|
|
See also :
class CUserInfo;
typedef CUserInfoArray CArray<CUserInfo*>;
class CUserSyncArray : protected CUserInfoArray
{
CCriticalSection m_cLock;
public:
CUserSyncArray() {..}
virtual ~CUserSyncArray() {..}
CUserInfo* GetAt(INT_PTR iPos) {
CSingleLock cExceptionFreeLock(&m_cLock, true);
return CUserInfoArray::GetAt(iPos);
}
};
They sought it with thimbles, they sought it with care;
They pursued it with forks and hope;
They threatened its life with a railway-share;
They charmed it with smiles and soap.
|
|
|
|
|
includeh10 wrote: reason of server's crashing can't be debugged properly, but, from debug hints, I guess the reason is that when a socket is doing something on user-array but another socket start adding or deleting users on same array.
In continuation with Superman you can also utilize service of Events or semaphore also. the benefits of semaphore ( you can solve reader writer problem using it)
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Need a way to detect the properties of the text of any object on an application window example the displayed name of a button or a tab, label etc. Is there a means to get properties like :
1. name of the font
2. color of the font
3. size of the font
4. bold/italic/regular
etc..
|
|
|
|
|
not really.
remember, a window can draw on itself using any font, with any set of attributes, at any time. and it doesn't have to keep track of any of that.
|
|
|
|
|
How about the current set of properties for example :
the page contains a listview and the text of the listview items is set at a particular set of properties font,size,color etc.
Now can we get the properties of the currently displayed text in the listview.
|
|
|
|
|
sure, if the author of the control wants to store and report all the font usage for that control, you'll be able to get it. but in general, there's no way to know which fonts a window has used.
|
|
|
|
|
As Chris said, it is not guaranteed to get what you want.
A window or control has an associated device context and a device context has an associated font.
However, when a window draws text it can change this.
You can get the currently associated font using the GetTextMetrics[^] function.
But this may not be the expected result.
|
|
|
|
|
You could try experimenting with API hooking, however, this might prove to be quite a challange, if possible at all, and it might or might not produce the required result.
You could try hooking the GetDC[^], GetWindowDC[^], BeginPaint[^]... (and probably their counterparts also, ReleaseDC, EndPaint, ...) and the kinds, also DrawText[^], DrawTextEx[^], TextOut[^], ..., keep track of the connection between the Device Contexts and window handles, querying the font information at the right places (e.g. like when DrawText is called).
Check out this article: API hooking revealed[^] for more info on API hooking. The hooking part itself is somewhat easier if you try to hook things in your own process, no need to 'Inject' a DLL, you can simply load it.
Btw, why do you need that information? Just curious here...
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> //TODO: Implement signature here<
|
|
|
|
|
In general case, except the discovering of the font color :
void TryGetFontInfo(CWnd* pcWnd)
{
if (pcWnd->GetSafeHwnd()) {
CFont* pcFont(pcWnd->GetFont());
if (pcFont->GetSafeHandle()) {
LOGFONT sLF = {0};
pcFont->GetLogFont(&sLF);
}
}
}
They sought it with thimbles, they sought it with care;
They pursued it with forks and hope;
They threatened its life with a railway-share;
They charmed it with smiles and soap.
|
|
|
|
|
Hi all,
How to keep the Modeless dialog Active on the screen.
I have created modeless dialog,when i click outside that dialog that dialog gets disappered.
How can i make it active,even if i click outside the dialog to modify something.
I dont want to make it as Modal because,i cant go to other dialog for modification
Please let me know any suggestions
Thanks
Sharan
|
|
|
|
|
Try adding WS_TOPMOST[^] to the extended style of your dialog.
The best things in life are not things.
|
|
|
|
|
This is expected behavior, if you click outside a modeless dialog, the focus goes to whatever you selected, that's what modeless dialogs do. If you don't want to lose focus, use a modal dialog. You can use the top most approach that was suggested, but your dialog is going to always be in the way of whatever it is you're selecting behind it so this should only be done if your dialog is small.
|
|
|
|
|
Simply set the System Modal property of the dialog to True and it will get the top most style.
|
|
|
|
|
«_Superman_» wrote: Simply set the System Modal property of the dialog to True
if you put system modal property to true,it will lose it basic functionality as modeless dialog box
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
// I have created modeless dialog...
What parent was set ?
They sought it with thimbles, they sought it with care;
They pursued it with forks and hope;
They threatened its life with a railway-share;
They charmed it with smiles and soap.
|
|
|
|
|
So which C++ documentation tools have you used? I know about Doxygen, of course. I'm just wondering if there's anything better/easier to use. It doesn't have to be free.
|
|
|
|
|
i use // and, sometimes, /*...*/
|
|
|
|
|
Chris Losinger wrote: use // and, sometimes, /*...*/
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
I use the MSDN recommended XML Documentation[^] these days, but I only code for my own amusement.
The best things in life are not things.
|
|
|
|
|
I also use Doxygen, but I've also set up my UML tool, Enterprise Architect, to automatically convert the comments I add in the diagrams to the right format for Doxygen, and I set up my VisualAssist makros to also create function header documentation in the right format with all parameters and the return value listed. So all I have to do is fill in the actual meaning, no matter whether the code comes straight from UML, or has been added within VS.
The funny thing is, noone ever looks at the docs I created with Doxygen, people (including myself) are happy enough just with the oddly formatted comments 
|
|
|
|
|
What are the differences between overlapped window and popup window. Does the overlap mean that window can overlap each other? and popup window can't?
|
|
|
|
|
Perhaps you should return to go and collect $200?
MSDN: Window Styles[^]
|
|
|
|