|
Hello,
I posted a question yesterday about loggin a text fle from with in a UI Thread.. Anyway, I started logging all the threads actions all the way up to ExitThread and found no problems at all.. I think my problem is that I create the thread and some times the ResumeThread doesn't really resume the thread. It gets created then it sits there. Which causes a bunch of extra threads that are on my process doing nothing.. Is there anyway to ensure that the thread has resumed and if not just kill it?
Heres an example of how I am starting up the threads...
n = 10;
while(n > 0)
{
CConnectThread* thread = (CConnectThread*)AfxBeginThread(RUNTIME_CLASS(CConnectThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
thread->m_strMessage = strMessage;
thread->m_strDns = strDns;
thread->m_iPort = iPort;
thread->m_bAutoDelete = TRUE;
thread->ResumeThread();
n --;
}
Thanks,
Rob
|
|
|
|
|
Check the return value from ResumeThread!
DWORD ResumeThread( );
Return Value
The thread’s previous suspend count if successful; 0xFFFFFFFF otherwise. If the return value is zero, the current thread was not suspended. If the return value is one, the thread was suspended, but is now restarted. Any return value greater than one means the thread remains suspended.
van padoea
|
|
|
|
|
Thanks for the fast reply.. I should have looked for a return value before posting..
Thanks again,
Rob
|
|
|
|
|
How can I get the current line of a xml element / node ?
What I mean is the current line of a xml node / element in the xml file, like the get_line() function of the IXMLDOMParseError return.
I read some attributes of a xml node / element and check if they are in the possible range (eg. - 100 < attribute < +100). If the attribute is not in the range I want to display an error with the line, where I read the attribute / node / element!
I am working with the MSXML DOM parser!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
No you cannot do that (or at least I think you cannot). Basically the XML is just a string. It may or may not have carriage returns. Both are valid. The well formatted XML you see in your editor is a display and not necessarily the actual XML text.
So:
<SAMPLE>
<BLAH>jhgjsdgf<BLAH/>
<BLAH2>jhgjsdgf<BLAH2/>
</SAMPLE>
Is the same as
<SAMPLE><BLAH>jhgjsdgf<BLAH/><BLAH2>jhgjsdgf<BLAH2/></SAMPLE>
You can get position() but that will simply tell you the element position within the current collection. If you nodes/elements have any form of an ID then you can log the XPATH. This way a user could use some XML editor and apply the XPATH. Or put line numbers as an attribute to your elements/nodes and then report that attribute.
|
|
|
|
|
i have parent window (CDlg-derived) and 2 child windows, that hold same position inside parent dialog. i need programmaticaly activate one or another child window.
i used BringWindowToTop - to change z-order of child windows, but it doesnt work.
what should i do?
|
|
|
|
|
Use
LRESULT Dlg::OnActivateWindow1(WPARAM, LPARAM)
{
Window1.ShowWindow(SW_SHOW);
Window2.ShowWindow(SW_HIDE);
return 0;
}
LRESULT Dlg::OnActivateWindow2(WPARAM, LPARAM)
{
Window2.ShowWindow(SW_SHOW);
Window1.ShowWindow(SW_HIDE);
return 0;
}
|
|
|
|
|
this wont work, because i need both child windows visible at the same time - they have different HRGN.
|
|
|
|
|
Overlapping Windows is not a good idea. You could use one big window and set later
the region which includes the shapes of both windows. This approach will give
You full freedom over the shape.
|
|
|
|
|
i think its too complicated, because this region are already combined from others regions
and that other regions are made from bitmap with transparency zones.
maybe anyone knows how this algorithm realized in CTabCtrl?
i need almost the same behavior (please, dont suggest to derive my class from CTabCtrl )
|
|
|
|
|
Have you tried SetWindowPos ?
modified 12-Sep-18 21:01pm.
|
|
|
|
|
yes, i've tried - doesnt work too
|
|
|
|
|
After re-installation of Win NT on my PC,I noted that there are 4 options.
System start-up
1) Normal set-up
2) VGA Mode
3) Normal set-up
4) VGA Mode
I know there is a file to change n delete the start-up options, what is the filename and where ??
pls help
|
|
|
|
|
Should be in your boot.ini off of your system drive.
Rob
|
|
|
|
|
Sorry everyone this project is just really getting to me... I have to compute the check book and keep updating the charges....and then apply the charges at the end... What is the best way to do this? I'm just confused and where I'm supposed ot put it?
Thanks in advanced!!
GetSingleTransInfo (transCode, transAmount);
newBalance = 0.0;
while (transCode != 'E')
{
if (transCode == 'C')
{
ProcessCheck(transAmount, balance, currentBalance, charge);
GetSingleTransInfo (transCode, transAmount);
}
if (transCode == 'D')
{
ProcessDeposit(transAmount, balance, currentBalance);
newBalance = currentBalance + newBalance;
GetSingleTransInfo (transCode, transAmount);
}
}
PrintFinalTotals (month, newBalance);
return 0;
}
oid ProcessCheck(/*in*/ float amount, /*in*/ float balance,
/*out*/ float& currBalance, /*out*/ float& charge)
// Purpose: Deduct amount of check from balance....apply charges if balance falls below zero by
// cause of check. Apply charge if balance falls below $500.00.
// Pre:
// Post:
{
bool below500;
currBalance = balance - amount;
below500 = (currBalance < 500.00);
cout << " Check Transaction\n\n\n";
cout << fixed << setprecision (2) << endl;
cout << "Check Amount: " << amount << endl;
cout << "Current Balance: " << currBalance << endl;
cout << "Check Charge: " << CHECK_CHARGE << endl;
if (below500)
{
charge = ONE_TIME_CHARGE;
cout << "One Time Below $500.00 charge: " << charge << endl;
}
currBalance = balance - amount;
system ("pause");
system ("cls");
}
//***************************************************************************************************************
void ProcessDeposit (/*in*/ float amount, /*in*/ float balance,
/*out*/ float& currBalance)
{
currBalance = balance + amount;
cout << " Deposit Transaction\n\n\n";
cout << fixed << setprecision (2) << endl;
cout << "Deposit Amount: " << amount << endl;
cout << "Current Balance: " << currBalance << endl;
cout << "Deposit Charge: " << DEPOSIT_CHARGE << endl;
system ("pause");
system ("cls");
currBalance =
}
Autumn
|
|
|
|
|
Hi,
I want to develop an application which transfer data through telephone lines, using TAPI. Pls help. Is there any article published or a tool(with sourcecode) already available on this. If so, can anyone give me the link to it.
Kindly help.. Thanks in advance.
Regards..........
|
|
|
|
|
|
I'd like to programmatically minimize my app. while displaying a modal dialog box, without the dialog box being closed. All attempts to do this cause the modal box to be force-closed. However, the "Show Desktop" button (which calls IShellDispatch4.ToggleDesktop) can do it! How does ToggleDesktop do what it does ?
From an analysis of the messages that are sent to my main window by ToggleDesktop, I'd say it is calling ShowWindow with the SW_SHOWMINNOACTIVE parameter. So I wrote a little stand-alone app. to do exactly this. It finds the main window in my proper app., and calls ShowWindow (hWnd, SW_SHOWMINNOACTIVE), passing in the main window's HWND.
When minimized either way (ToggleDesktop or my little app.), the messages that are received by my main window are identical. The messages themselves, the order, the parameters... all is identical. And yet the behaviour is different: ToggleDesktop manages to minimze an app. without it exiting a modal state.
How ?!
TIA
|
|
|
|
|
Hi,
I am updating a content of a image control.
After setting the image if i say Invalidate() it works in 2k.But in 98 background is not been redrawn for this i have to call SetRedraw(TRUE).If i use this in 2k it doesn't work properly.
|
|
|
|
|
Have you tried Invalidate followed by UpdateWindow!
SetRedraw switches redraw on and off UpdateWindow forces a redraw
|
|
|
|
|
Yes,i had tried ,but no use...
|
|
|
|
|
as far as I'm aware the Invalidate(); ShowWindow(); combo should do it
so the only other thing i suggest is to look at their placement, if your running through code it may be somthing is causing the display to invalidate and not redraw after these calls.
This is the best I can do without seeing your code
|
|
|
|
|
If i use that combination,In 98 it erases the background.In win2k it gives some refresh problem.
|
|
|
|
|
I'm trying to launch an executable from a service using CreateProcess() but the executable never runs.
The service is running in an user account (and needs to) so can't use the LocalSystem and therefore have the 'Allow service to interact with desktop' flag set. (this solves the problem but like I said can't be used).
Help.
|
|
|
|
|
hi,
i do it like this and this works fine....
look at code snippet:
MyApp = another application name to like start
in .h
HANDLE m_hMyAppThread, m_hMyAppProcess;
in .cpp
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
CString strName;
strName = "C:\Progam Files\myApp.exe";
TCHAR Name[1024];
_tcscpy(Name, strName);
if(CreateProcess(NULL, Name, NULL, NULL, FALSE, ORMAL_PRIORITY_CLASS,
NULL, NULL, &si, &pi))
{
m_hMyAppThread = pi.hThread; //keep this handles for closing
m_hMyAppProcess = pi.hProcess;
}
//another function for closing
FILETIME ftCreationTime;
FILETIME ftExitTime;
FILETIME ftKernelTime;
FILETIME ftUserTime;
//GetThreadTimes not supported with win98
GetThreadTimes(m_hMyAppThread, &ftCreationTime, &ftExitTime,
&ftKernelTime, &ftUserTime);
if( ftExitTime.dwHighDateTime == 0 && ftExitTime.dwLowDateTime == 0 &&
ftCreationTime.dwHighDateTime > 0 && ftCreationTime.dwLowDateTime > 0)
{
TerminateProcess(m_hMyAppProcess, 0);
WaitForSingleObject(m_hMyAppProcess, INFINITE);
CloseHandle(m_hMyAppProcess);
CloseHandle(m_hMyAppThread);
}
Hope it helps,
Dan
|
|
|
|