|
ThatsMe. wrote: please tell me how can i convert CString to float or vice Versa.
You can always use std::stringstream and the << operator instead of the old, insecure C-ish atof.
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
Hi,
I use GetDlgItem in thread. But it shows the error that GetDlgItem() does not take 1 parameter. For that i found i have to incude handle for my dialog box. I have displayed the dialog by using DoModal().
I dnt know how to create HANDLE for this dialog.Pls help me .
Anu
|
|
|
|
|
From your question, I think you're using MFC and your dialog class is derived from CDialog . Then call GetSafeHwnd() to get your dialog handle.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Try this.
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);
GotoDlgCtrl(pBoxOne);
IN A DAY, WHEN YOU DON'T COME ACROSS ANY PROBLEMS - YOU CAN BE SURE THAT YOU ARE TRAVELLING IN A WRONG PATH
|
|
|
|
|
Anu_Bala wrote: I use GetDlgItem in thread
You probably then call GetDlgItem outside your dialog class, which means that you are calling ::GetDlgItem and not CDialog::GetDlgItem (which are two different functions). The way to solve this is to pass the pointer to your class instance (the this pointer) in the thread parameter, cast it back to your class in the thread function and call GetDlgItem on it.
|
|
|
|
|
Whats the error? it needs to a handle to window?
|
|
|
|
|
you havent understand the MFC right. GetDlgItem() is a class member of a CWnd dervied class. A Thread not!!!
You better redesign your program with help of a seasoned mate.
Make change in the dialog only in the dialog (thread: your main app)
unse only HWND and communicate with PostMessage-API.
Greetings from Germany
|
|
|
|
|
How to implement CDC MoveTo(int, int) in windows sdk.
Regards
|
|
|
|
|
No need to implement. Microsoft did it for you [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
|
Need the windows api version of CDC::MoveTo() ? Check MoveToEx() function.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Do you need to MoveTO and LineTo? see this example of MSDN:
void Marker(LONG x, LONG y, HWND hwnd)
{
HDC hdc;
hdc = GetDC(hwnd);
MoveToEx(hdc, (int) x - 10, (int) y, (LPPOINT) NULL);
LineTo(hdc, (int) x + 10, (int) y);
MoveToEx(hdc, (int) x, (int) y - 10, (LPPOINT) NULL);
LineTo(hdc, (int) x, (int) y + 10);
ReleaseDC(hwnd, hdc);
}
|
|
|
|
|
On Proc or Message loop add hook on WM_PAINT
switch ( Message )
{
case WM_PAINT: {
PAINTSTRUCT ps;
ZeroMemory ( &ps, sizeof ( PAINTSTRUCT ));
HDC hDc = BeginPaint ( /*handle of your window*/, &ps );
MoveToEx ( hDc, 0, 0, NULL );
LineTo ( hDc, 10, 10 );
EndPaint ( /*handle of your window*/, &ps );
}
return 0L;
}
}
You can adjust color with HPEN and SelectObject.
Bye...
...
|
|
|
|
|
how to craete a thread in MFC????and implement multithreading,i need to implement a seperate thread of operation inside a button click,what should be done,and createthread() doesn't work
Raja
|
|
|
|
|
Check this -
http://www.codeproject.com/KB/threads/threads_and_mfc.aspx[^]
Mohanraj D wrote: and createthread() doesn't work
Check the error code by adding @err,hr in the watch window. You'll get the reason why its getting failed. If you still have trouble, the post the relevant code.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
my application is for windowsmobile...is there any different methodology for that
Raja
|
|
|
|
|
Mohanraj D wrote: my application is for windowsmobile..
You can use AfxBeginThread() function. My msdn documentation says that its supported in "Pocket PC". So i think you can use it.
Mohanraj D wrote: is there any different methodology for that
Ofcourse . For instance,
1)
AfxBeginThread()<br /> 2) CreateThread()
3) _beginthread(), _beginthreadex()
4)
SHCreateThread()<br />
<br /> But, since your target platform is Windows Mobile, all the specified functions may not be available.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Mohanraj D wrote: how to craete a thread in MFC????and implement multithreading
Do you know this site has a search engine for articles [^]?
Mohanraj D wrote: need to implement a seperate thread of operation inside a button click,what should be done,and createthread() doesn't work
CreateThread works, of course.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Hi,
There's a class call CWinThread (for more information look on msdn).
-> MFC is a good lib only for Graphic User Interface, for the rest to not use it...
Perso i prefere use the win32 version :
// H.
HANDLE m_hThread;
DWORD m_dwThreadId;
static DWORD WINAPI ThreadProc( LPVOID pParam );
inline bool ThreadFuntion ();
// CPP.
xxxxxxx:xxxxxxxx () :
hThread ( NULL )
, m_dwThreadId ( 0 )
{
}
xxxxxx::OnClick ()
{
hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadProc, // thread function
this, // argument to thread function
0, // use default creation flags
&dwThreadId ); // returns the thread identifier
....
}
bool xxxxxx::ThreadFuntion ()
{
}
// Static function.
DWORD xxxxxx::ThreadProc ( LPVOID pParam )
{
xxxxxx * pThis = reinterpret_cast<xxxxxx *="">( pParam );
if ( !pThis )
{
return -1;
}
// Call non static function.
if ( !pThis -> ThreadFuntion ())
{
return -1;
}
return 0;
}
Use CriticalSection (InitializeCriticalSection)to secure data Access.
Use Event (CreateEvent) with WaitForMultipleObjects or WaitForSingleObject for synchonysation.
Thinks to release handle ( THread, critical section, event...) when your finised.
Take care to thread and application ending condition.
Do not call GUI object (button, list, edit...) from the thread.
Bye...
...
|
|
|
|
|
i get the following error in the wincore if createthread is used,whast should be done???
ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
(p = pMap->LookupTemporary(m_hWnd)) != NULL);
}
ASSERT((CWnd*)p == this);
// Note: if either of the above asserts fire and you are
// writing a multithreaded application, it is likely that
// you have passed a C++ object from one thread to another
// and have used that object in a way that was not intended.
// (only simple inline wrapper functions should be used)
//
// In general, CWnd objects should be passed by HWND from
// one thread to another. The receiving thread can wrap
// the HWND with a CWnd object by using CWnd::FromHandle.
//
// It is dangerous to pass C++ objects from one thread to
// another, unless the objects are designed to be used in
// such a manner.
}
}
Raja
|
|
|
|
|
Check if your compilation option is in "multithread dll" mode
...
|
|
|
|
|
my application is set to this "Multi-threaded Debug (/MTd)",is that correct??
Raja
|
|
|
|
|
With MFC Application (exe) it's better to set it to "Multi-threaded Debug Dll", i known that it's not logique because it's an exe and not a dll but it's like that...
...
|
|
|
|
|
Hi,
I have display the system timings in ListCtrl using OnTimer().
But when the scrollbar appearing in ListCtrl then the ListCtrl is getting shaked or vibrating liek that.
Whats the reason? My Ontimer coding is
CListCtrl *pCtrl = (CListCtrl*)GetDlgItem(IDC_REPLAYLIST);
char ListBoxStr[50];
CString now;
CTime time;
static int j=1;
int index = 0;
pCtrl->DeleteAllItems();
for(int i=0;i<=nosize;i++)>
{
sprintf(ListBoxStr,"%d",i+1);
pCtrl->InsertItem(i,(CString)ListBoxStr);
sprintf(ListBoxStr,"%s",rptime[i]);
pCtrl->SetItemText(i,1,(CString)ListBoxStr);
}
Initially nosize is zero.And then it incesed in thread function up to 100.
Anu
modified on Wednesday, June 11, 2008 7:15 AM
|
|
|
|
|