|
dont bother looking - I HAVE RESOLVED IT!
the problem was that I was also writing to the CTRL register in a thread, which I had forgotten about. Once I removed the write command, all works!
Sorry to have posted this!
69 Bay
|
|
|
|
|
in my SDI VC6.0 project, I have two property sheets in my form view. I want the left one to be skinny, so I can make the right one wider. I used IDD_PROPPAGE_SMALL as the template for the property pages in the left property sheet, and set the dimension to be 150x265 dialog units. But somehow, the left sheet is still pretty big. I googled a bit, and it turned out the limitation is PROP_SM_CXDLG defined in prsht.h.
I add thse to mypropertypage.h, but they don't seem to work. Anyone can point out what I did wrong please? TIA!
#ifdef PROP_SM_CXDLG
#undef PROP_SM_CXDLG
#define PROP_SM_CXDLG 150
#endif
#ifdef PROP_MED_CXDLG
#undef PROP_MED_CXDLG
#define PROP_MED_CXDLG 150
#endif
#ifdef PROP_LG_CXDLG
#undef PROP_LG_CXDLG
#define PROP_LG_CXDLG 150
#endif
|
|
|
|
|
Hi all...
I'm doing some development which queries a PC network by making requests to a file on the host system through HTTP. I'm experimenting with CInternetSession & CHttpFile, and some of the examples of each on this site.
I have a few questions/problems:
1) Is there a way I can easily determine the MAC address of the PC I'm connectedly to?
2) I'm encountering lock-up when the hardware becomes disconnected from the network midway through the CHttpFile->Read() operation. This function hangs infinitely. Is there a timeout you can set for this?
I countered this problem with the
WebGrab Example
Here is a snippet:
BOOL CWebGrab::GetFile ( LPCTSTR szURL, CString& strBuffer, LPCTSTR szAgentName , CWnd* pWnd )<br />
{<br />
m_rawHeaders ="";<br />
m_infoStatusCode=0;<br />
strBuffer.Empty();<br />
<br />
if (!m_pSession && !Initialise(szAgentName, pWnd))<br />
return FALSE;<br />
<br />
if (pWnd)<br />
m_pSession->SetStatusWnd(pWnd);<br />
<br />
<br />
DWORD dwCount = 0;<br />
CHttpFile* pFile = NULL;<br />
try<br />
{<br />
pFile = (CHttpFile*) m_pSession->OpenURL(szURL, 1,<br />
INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_DONT_CACHE<br />
);<br />
<br />
<br />
}<br />
catch (CInternetException* e)<br />
{<br />
TCHAR szCause[255];<br />
e->GetErrorMessage(szCause, 255);<br />
m_pSession->SetStatus(szCause);<br />
e->Delete();<br />
delete pFile;<br />
pFile = NULL;<br />
return FALSE;<br />
}<br />
<br />
COleDateTime startTime = COleDateTime::GetCurrentTime();<br />
LPSTR pBuf = NULL;<br />
if (pFile)<br />
{<br />
pBuf = (LPSTR) ::GlobalAlloc(GMEM_FIXED, BUFFER_SIZE+1);<br />
if (!pBuf)<br />
{<br />
pFile->Close();<br />
delete pFile;<br />
return FALSE;<br />
}<br />
<br />
BYTE buffer[BUFFER_SIZE+1];<br />
try {<br />
UINT nRead = 0;<br />
DWORD size;<br />
dwCount = 0;<br />
do<br />
{<br />
nRead = pFile->Read(buffer, BUFFER_SIZE); - LOCKS HERE waiting for the rest of the bytes.<br />
<br />
if (nRead > 0)<br />
{<br />
buffer[nRead] = 0;<br />
<br />
LPTSTR ptr = strBuffer.GetBufferSetLength(dwCount + nRead + 1);<br />
memcpy(ptr+dwCount, buffer, nRead);<br />
<br />
dwCount += nRead;<br />
strBuffer.ReleaseBuffer(dwCount+1);<br />
<br />
COleDateTimeSpan elapsed = COleDateTime::GetCurrentTime() - startTime;<br />
double dSecs = elapsed.GetTotalSeconds();<br />
if (dSecs > 0.0)<br />
{<br />
m_transferRate = (double)dwCount / 1024.0 / dSecs;<br />
m_pSession->SetStatus("Read %d bytes (%0.1f Kb/s)", <br />
dwCount, m_transferRate );<br />
<br />
}<br />
else<br />
{<br />
m_pSession->SetStatus("Read %d bytes", dwCount);<br />
m_transferRate = dwCount;<br />
}<br />
}<br />
}<br />
while (nRead > 0);<br />
}<br />
catch (CFileException *e)<br />
{<br />
TCHAR szCause[255];<br />
e->GetErrorMessage(szCause, 255);<br />
m_ErrorMessage = szCause;<br />
m_pSession->SetStatus(szCause);<br />
e->Delete();<br />
delete pFile;<br />
::GlobalFree(pBuf);
return FALSE;<br />
}<br />
pFile->QueryInfoStatusCode(m_infoStatusCode); <br />
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS ,m_rawHeaders);<br />
pFile->Close();<br />
::GlobalFree(pBuf);
delete pFile;<br />
}<br />
<br />
m_pSession->SetStatus("");<br />
<br />
return TRUE;<br />
}
Anybody have any suggestions?
Mike
|
|
|
|
|
Mike Doner wrote: Is there a timeout you can set for this?
Yes, you can use CInternetSession.SetOption() to set various kinds of timeouts. See this[^] page for values.
/ravi
|
|
|
|
|
Mike Doner wrote: 2) I'm encountering lock-up when the hardware becomes disconnected from the network midway through the CHttpFile->Read() operation. This function hangs infinitely. Is there a timeout you can set for this?
No and hanging should not happen. When the physical network is no longer available the read() should unblock and WSAGetLastError() should return an error like WSAECONNABORTED or something.
led mike
|
|
|
|
|
Mike Doner wrote: 2) I'm encountering lock-up when the hardware becomes disconnected from the network midway through the CHttpFile->Read() operation. This function hangs infinitely. Is there a timeout you can set for this?
Have you tried the INTERNET_OPTION_RECEIVE_TIMEOUT option using CInternetSession::SetOption()?
*EDIT* Never mind - I see that's what Ravi said
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
I have to display a message which has to enable for only two seconds.how to do this?
how to set timer for this???????
|
|
|
|
|
have a look at SetTimer and WM_TIMER /ON_WM_TIMER
|
|
|
|
|
See here.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
MFC does not have an Urgent Timer. Try the .NET Platform
System.Urgent.Timer
led mike
|
|
|
|
|
Once again, I can't wait to upgrade to .NET 2.0+ (VS2005) to take advantage of stuff like that.
Do you want fries with that?
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
|
If it's that urgent (for example, this post - it could take HOURS to figure out the
correct number of milliseconds for 2 seconds) then there's always this site[^].
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
prathuraj wrote:
how to set timer for this???????
settimer.. will be tough for implementing in your condition!
|
|
|
|
|
Hi all,
I have a form that contains one button and one textbox, the textbox will take a number that will be passed to another form. I have done this successfully.
The thing is that I need the second form to create a number of pictureboxes = the number received from the first form.
Any ideas?
|
|
|
|
|
Do you want to get values of form1 on the form2
|
|
|
|
|
nope, I've done this.
what I want is to create a number of pictureboxes in form2 that equals the number received from form1.
thanks,
|
|
|
|
|
something like this very pseudo-code code ? :
std::vector<CStatic*> myPictureBoxVector;
for ( int i = 0; i < NumberFromForm1; i++ )
{
CStatic pStatic = new CStatic;
CRect rect;
ComputePosition( rect );
myPictureBoxVector.push_back( pStatic );
}
|
|
|
|
|
thanks alot
|
|
|
|
|
i am having two buttons b1 and b2.i have to disable a button b2 for few seconds when b1 is clicked.
Arise Awake Stop Not Till ur Goal is Reached.
|
|
|
|
|
when b1 is clicked, disable b2 and start a timer upon which you will re-enable b2.
have a look at SetTimer and ON_WM_TIMER
|
|
|
|
|
Hello,
I have a question: I have an application that is using Wininet.lib (set in Object/Library module). On most of the machines works well – but on some machines using IE 7 the Wininet.dll is causing an application crash. So I have tried to put Wininet.dll in the same folder with my application (the Wininet.dll from my machine) but still no luck. Anyone can provide me a solution to fix this behavior.
Thanks.
|
|
|
|
|
Test against IE 7.0 and work out where the problem occurs. If you get stuck, post the exact error message and error codes.
The reason copying your own wininet.dll doesn't help is because wininet.dll is one of the KnownDLLs. See this KB article[^] for more on KnownDLLs.
I strongly recommend you do not attempt to make Windows load your own copy of wininet.dll. This DLL maintains the browser's cache which may well have changed (indeed, probably did) between IE 6.0 and 7.0, and using the wrong version may well corrupt the cache, and any other common data structures used by the browser.
|
|
|
|
|
Thanks a lot!
I will give it a try.
|
|
|
|
|
This is a very "popular" problem since the introduction of MS IE 7 beta.
Cause of the problem: WinInet API validation code was changed in Vista/IE7
Solution they propose is, in short, re-check and re-write your code...
Hope it helps,
- Dmitry.
-------------------------
Don't worry, be happy )
|
|
|
|