|
ok it is a producer consumer problem
func3 is producing something which func2 is using but before using it i need to check the value of x.
I am using critical section only as of now. How do i add this notify thing ...
Dimple
|
|
|
|
|
You should read x outside of critical section only if the operation read x is atomic, i.e. it is guaranteed by the OS or hardware, that the reading will never be interrupted.
Generally, if x is a complex data type, there isn't any suitable atomic read operation. So you should enclose read x in a critical section too. It avoids you from a conflict, when one thread reads x and another thread writes to x simultaneously (so the reading thread could read inconsistent content of x )
Robert-Antonio
It's a good luck, when you meet a real fink. Then you get a respect to
normal, mid-honest people."
|
|
|
|
|
Ok it func3 writes data & func2 reads data
If data has been written it is refelected by x (a int value) so thats the reason i read x.
Simply put i want to know how to do a conditonal wait on x
|
|
|
|
|
I think it would be ok to use mutexes to synchronize things.
You could use WaitForSingleObject(MutexName, INFINITE) before reading or writing to x, then call ReleaseMutex(MutexName) after the process.
This would synchronize things. But be sure to put then in the right place, this might cause deadlocks if misused.
Hope this help. :>
SDE
|
|
|
|
|
Hi all,
Is there any way to get the IDocHostUIHandler from the IWebBrowser2 inteface pointer.I want to disable the context menu in IE all version?.
I am using BHOs which host the Iwebbrowser interface pointer.
thanks in advance
Abhi Lahare.
|
|
|
|
|
|
I am using Flash Player component to develope an application. I am wanna to use a flash component as a background object and draw text on it. IE can implement this to support css. When I drawed text on the object, the flash object always reflashed frame by frame and the new frame content covered the text that I drawed. However, the interfaces that the flash component offers are high level functions(e.g. play, stop etc.). I can not use those interafaces to do some low level processing to control the flash drawing flow or get the drawn content.
How does IE do this? How can I implement this?
Thank you.
|
|
|
|
|
Try creating a transparent, borderless child window that appears above the flash window (in the zorder). Then draw your text in this window, rather than on the window that hosts the flash control.
onwards and upwards...
|
|
|
|
|
I am Trying to retrieve the window version in vc++
i.e whether it is win98 or winxp or win2000
but i am not getting it .plz if any idea let
me know.
If possible send a sample program
milind
|
|
|
|
|
Check out GetVersion or GetVersionEx in MSDN its fairly simple to use it.
Regards.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
Hi,
This function return the Windows version,
LPTSTR CSystem::SystemVersion()<br />
{<br />
OSVERSIONINFOEX osvi;<br />
BOOL bOsVersionInfoEx;<br />
<br />
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));<br />
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);<br />
<br />
GetVersionEx ((OSVERSIONINFO *) &osvi);<br />
<br />
TCHAR tchBuffer[800]; <br />
<br />
switch (osvi.dwPlatformId)<br />
{<br />
case VER_PLATFORM_WIN32_NT:<br />
<br />
if ( osvi.dwMajorVersion <= 4 )<br />
sprintf(tchBuffer, "Microsoft Windows NT "); <br />
<br />
if ( osvi.dwMajorVersion == 5 )<br />
sprintf(tchBuffer, "Microsoft Windows 2000"); <br />
<br />
HKEY hKey;<br />
char szProductType[80];<br />
DWORD dwBufLen;<br />
<br />
RegOpenKeyEx( HKEY_LOCAL_MACHINE,<br />
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",<br />
0, KEY_QUERY_VALUE, &hKey );<br />
RegQueryValueEx( hKey, "ProductType", NULL, NULL,<br />
(LPBYTE) szProductType, &dwBufLen);<br />
RegCloseKey( hKey );<br />
if ( lstrcmpi( "WINNT", szProductType) == 0 )<br />
strcat(tchBuffer," Workstation ");<br />
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )<br />
strcat(tchBuffer," Server");<br />
<br />
<br />
break;<br />
<br />
case VER_PLATFORM_WIN32_WINDOWS:<br />
<br />
if ((osvi.dwMajorVersion > 4) || <br />
((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0)))<br />
{<br />
sprintf(tchBuffer, "Microsoft Windows 98 "); <br />
} <br />
else
sprintf(tchBuffer, "Microsoft Windows 95 "); <br />
<br />
break;<br />
<br />
case VER_PLATFORM_WIN32s:<br />
<br />
sprintf(tchBuffer, "Microsoft Win32s "); <br />
break;<br />
}<br />
<br />
return tchBuffer;<br />
<br />
<br />
}
With Regards,
R.Selvam
|
|
|
|
|
|
What is the difference between MessageBox and AfxMessageBox
when I need to use MessageBox or AfxMessageBox. What is the function or purpose between this two message.
|
|
|
|
|
humm, one difference that i can think of is AfxMessagebox can be used if the project has MFC support and MessageBox can be used in any win32 project.
They are more or less ditto in nature.
There are two messagebox one defined in CWnd and other is win32 api i.e ::MessageBox(...)
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
Hello,
MessageBox declared with in Cwindow or Cwin class. Afx family functions (AfxMessageBox, AfxBeginThread, etc) are declared Global in the Microsoft Foundation Class libraries.
Both Displays the formatted message box.
Help on Message Boxes is supported through the AfxMessageBox function.
With Regards,
R.Selvam
|
|
|
|
|
The parent of message box created by CWnd::MessageBox() is the instance of window, that called the MessageBox method.
The parent of message box created by AfxMessageBox() is the main application window.
Robert-Antonio
"Life is very hard, when you apply E-R model to it."
|
|
|
|
|
HOw do i make sure that the client has received the data that i wrote on the socket before i send some other data...
i know it can be done my ack way. but the other side of the socket program does not send ack.
any way around this prob???
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
I think that there wouldn't be anyway, but to let the client acknowledge it. In case you couldn't change the client code to send back acknowledgement, the only way I count think of is read the current buffer status. This way you can at least know that it has already been retrieved. But again it might be lost. I haven't tried doing this but I saw a function called select() which identifies the status of a socket. The best way is still to let the client acknowledge it. Hope this help. :>
SDE
|
|
|
|
|
Thanx for your reply,
Your answer makes perfect sense that the client should reply with some ack. but that increases the round trip time. Since i am above TCP level and the ack is implemented within TCP itself then i guess we should not go for the ack method. TCP garentees that the packet has reached its destination by ack -ve ack concept.
I dont know how much sense i am making. but still i will try to understand the solution you talked about.i.e the buffer status.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
Hi,
Environment: VC++ 7, IE 6.0, XML
Problem: How to get good formtted text in browser control.
Description: I am writing SDI Application which reads data from xml data and displays in browser control. Here I am splitting the window into two frames. First frame contains Questions and related fields, second frame contains browser control (it contains data with some blanks). When the user enters data in question related fields then it should populate in browser control. The populated data in browser control is causing to format problem when data exceeds the line (it is coming in next line from starting onwards). How can we solve this problem.
|
|
|
|
|
I have written a simple program that imports a DLL at compile time, and then displays a message box (MessageBox()) containing data from the imported DLL. The problem is that the data gets imported, but the message box doesn't get displayed, returning code 1407 'Cannot find window class'. But when I don't import the DLL, the message box displays fine.
Anyone have any ideas?
|
|
|
|
|
What kinda dll is it ?
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
Its an implicitly loaded DLL. The DLL code is as follows (NB its not my code, I got it out of a book):
#include <windows.h>
#define MYLIBAPI extern "C" __declspec(dllexport)
#include "MyLibFile.h"
int g_nResult;
int Add(int nLeft, int nRight)
{
g_nResult = nLeft + nRight;
return(g_nResult);
}
The header file is:
#ifndef MYLIBAPI
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
MYLIBAPI int g_nResult;
MYLIBAPI int Add(int nLeft, int nRight);
And the main code that includes the MessageBox() is as follows:
#include <windows.h>
#include "..\MyLibFile\MyLibFile.h"
int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, LPTSTR pszCmdLine, int)
{
int nLeft = 10, nRight = 25;
TCHAR sz[100];
wsprintf(sz, TEXT("%d + %d = %d"), nLeft, nRight, Add(nLeft, nRight));
MessageBox(GetActiveWindow(), sz, TEXT("Calculation"), MB_OK);
DWORD Error = GetLastError();
wsprintf(sz, TEXT("The result from the last Add is: %d"), g_nResult);
MessageBox(NULL, sz, TEXT("Last Result"), MB_OK);
return(0);
}
|
|
|
|
|
Oops, '/*Module: MyLib.h*/' should read '/*Module: MyLibFile.h*/'
|
|
|
|
|
Hi,
Did you get ?
With Regards,
R.Selvam
|
|
|
|