|
Ahh >_< lack of space. Anyways, not having VS .NET 2003 i don't know, but im assuming that devenv.exe is part of it?
Anyway, since this happened, have you tried restarting your computer? It could just be some wierd problem. Also try debuging a different app that you have available to see if it still steals all your CPU, it may be something to do with your application.
Or it could be Some kinda spywary virusy type thing.
I have stop sign, and at one point one of the 32KB exe's was taking up 190MB of RAM, whats up with that? In the end i had to re-install.
|
|
|
|
|
i'm sorry
i cannot help you
who know
can tell you ?
i also want to know?
h-ker@163.com
|
|
|
|
|
Wow - that's helpful.
Christian Graus - C++ MVP
|
|
|
|
|
|
Your sig doesn't show up right to me (i think).. i am using firefox, all i see if a big blue rectangle and a few lines.
I don't believe in failure. It is not failure if you enjoyed the process.
|
|
|
|
|
I think these styles are limited to IE because on Opera and (Firefox) I cant see any thing maybe I must modify my sig
|
|
|
|
|
What happens if you just run your app ? Could your app be maxing out the CPU ?
devenv.exe is the IDE. It could even still be compiling, and you're jsut freaking out. What happens if you let it do it's thing for a while ?
Christian Graus - C++ MVP
|
|
|
|
|
i have restarted computer,but it still is.
what's more ,i also build a new project,the cpu's usage is the same!
fresh man
|
|
|
|
|
Perhaps if you took the time to answer the questions people have put to you, we could help more.
Christian Graus - C++ MVP
|
|
|
|
|
Maybe you are in the wrong forum, but you posed it to a VCPP, MFC forum anyways, so here she goes. The basics of this are ASM Debugging Techniques:-
Sometimes things like that happen when writing MFC Code. It nearly always means that I landed in an infinitely recursing set of functions.
To unravell this, Start with writing a macro that documents and dumps ESP to a text File.
Then, prepare to spend a few days at it, setting breakpoints, and tracing manually to the problem. Keep a sheet of paper beside you to write down calling addresses, and, depending on the complexity of your code, the repeating feature of calling points will soon give you an idea where the problem is.
LateNightsInNewry
|
|
|
|
|
Its first time you have this problem or no?
|
|
|
|
|
Ok!
thanks all of you! especially MVP~
when i add "/devenv/skippkgs" to the compiler;
then the computer runs as normal.
i don't know why!
nice
|
|
|
|
|
If you do not now spend some time to find out the 'why' you have bot learned anything. Please let us know.
LateNightsInNewry
|
|
|
|
|
how do i tell if my mouse is over a button?
what api do i use or what event is triggered?
|
|
|
|
|
You'll get a WM_MOUSEMOVE anytime the mouse is over the client area of your button, but I suspect you want to know when the mouse has left your button, in which case you'll need the TrackMouseEvent api.
This article might be useful:
http://www.codeproject.com/gdi/mousecapture.asp[^]
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
ok what i am doing is i have 4 buttons and a static text on my main dialog and when the mouse is over the buttons i want it to display text for what the button does and show it on the static text window.
|
|
|
|
|
Can't think of a nice way to do this. How about tooltips instead?
What framework are you working in, pure Win32 API or MFC?
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
mfc but i dont want the tooltips i want to use a window i subclassed my buttons i have it telling me what button im over i just dont know how to set the window text from the subclassed class to the main dialog class
|
|
|
|
|
My MFC is a little rusty, but what I did was derive a new class from CButton, CMyButton which handles the WM_MOUSEMOVE event. OnMouseMove sends a custom message to it's parent, telling it that it's over the button. The parent (your dialog in this case), handles the custom message and set's the text of the static control appropriately.
A very crude example:
#define MYBTN_BUTTONHOVER WM_USER + 1000<br />
<br />
void CMyButton::OnMouseMove(UINT nFlags, CPoint point) <br />
{<br />
CButton::OnMouseMove(nFlags, point);<br />
<br />
GetParent()->SendMessage( MYBTN_BUTTONHOVER, (WPARAM) this->GetDlgCtrlID(), 0 );<br />
}<br />
And in your dialog class you'd have:
CStatic m_lblInfo;<br />
CMyButton m_btn2;<br />
CMyButton m_btn1;<br />
<br />
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)<br />
ON_MESSAGE( MYBTN_BUTTONHOVER, OnButtonHover )<br />
END_MESSAGE_MAP()<br />
<br />
void CMyDialog::OnButtonHover( WPARAM wParam, LPARAM lParam)<br />
{<br />
switch ( wParam )<br />
{<br />
case IDC_BUTTON1:<br />
m_lblInfo.SetWindowText( "This is button 1" );<br />
break;<br />
case IDC_BUTTON2:<br />
m_lblInfo.SetWindowText( "This is button 2" ); <br />
break;<br />
}<br />
}<br />
In CMyButton you could do all sorts of things to fire the buttonhover event, such as if the button gets the focus, etc..
Again, a very crude example, there might be an easier way....
I can send you the test app if you need the full source.
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
i had the CButton subclassed already
GetParent()-> <------- THAT MADE MY CODE WORK
GetParent()->GetDlgItem(IDC_DISPLAY_TEXT)->SetWindowText("MY TEXT");
its the little things that get you when you dont know what you are doing...
thanks steve.
|
|
|
|
|
Im not sure its true or no in first your question you need to WM_MOUSEMOVE but in your reply I think you want to use Tooltip,right?
|
|
|
|
|
When you get a WM_MOUSEMOVE message, use the TrackMouseEvent() function, which will enable you to recieve a WM_MOUSEHOVER message. You can then update your static control with a simple WM_SETTEXT.
|
|
|
|
|
I Do think you want ToolTips. Try it, Read it, No gain without Pain
LateNightsInNewry
|
|
|
|
|
We started developing on VS2005 with Shared MFC and CLR enabled (from VS6, static MFC, and no .Net support). Now one of my MFC windows in a subclass is failing. When I compile everything is fine, but when I run in debug mode I get an acceptation:
ENSURE(afxOccMgr !=NULL);
Here is my code examples
CMainFrame::CMainFrame()
{…
AfxEnableControlContainer();
…
pMainFrm = this;
…
AfxOleInit();
….
}
Class Mysub : public CWnd
C3DWindow *m_p3dWnd;
Extern CMainFrame *MainFrm;
…
MySub::Load()
{…
m_ p3dWnd = new C3DWindow();
…
bRet = m_ p3dWnd ->Create("Internal_Win", 0, Rect,
pMainFrm, ID_MEM, NULL, FALSE);
…
}
Note: My code from the stack that caused the acceptation is the above create. Any clues?
Thanks
Programmer
Glenn Earl Graham
Austin, TX
|
|
|
|
|
Hello everybody.
This article i decided to write because i worked very much with threads.
I wrote some clases that has thread functionality untill
i wrote this class that satisfy me. In thread class i need simplity and compability in derrivations.
The issue i want to talk is destruction of derrived classes. All we know that construction is beginning from base class and finished in derrived classes from down to top, but destruction begins from top level derrivation to base thread class. The problem is that untill you do not rich destructor of base class the thread function still running and using the members of derrived classes. Commonly thread procedure is running untill base class do not stop it and it can be problem, because the top level derrived class did not exist anymore.
In my class if in derrived class you must free some resources in destructor, you can stop thread procedure in destructor and be sure that after releasing the resources no more calling to the memory will happend. It's very important point.
The using of class is very simple:
You must derrived your own class and implement only function Run , but do not make implementation in endless loop , because this function will be called in endless loop in base class thread procedure. In constructor of derrived class you can decide whether object can be suspended or not and what delay between calling to Runfunction will be made. Also the class has thread statuses that you can ask, like Suspended or Running or Exited, Thread ID Thread handle of created WinThread object.
In real time you can change sequence delay of calling to your Run function.
As i said it's very small and simple class that has not too much functionality, but if somebody needs small and simple thread class it can be useful.
I did not know how to add source code so i did it message body
Here BaseThread.h
<br />
#ifndef __D___BASE_THEAD_URU_DINKIN__20061107__<br />
#define __D___BASE_THEAD_URU_DINKIN__20061107__<br />
<br />
<br />
class CBaseThread : public CObject<br />
{<br />
enum ERunningState<br />
{<br />
e_Suspended,<br />
e_Running,<br />
e_Exited<br />
};<br />
<br />
DECLARE_DYNAMIC(CBaseThread);<br />
<br />
HANDLE m_hThread;
UINT m_nThread;
ERunningState m_eThreadState;
CWinThread* m_opThread;
HANDLE m_hExitEvent;
HANDLE m_hPauseEvent;
LONG m_iDelay;
<br />
public:<br />
<br />
CBaseThread(LONG a_iDelay = 1000, bool a_bCanBePaused = false);<br />
~CBaseThread();<br />
<br />
<br />
private:<br />
HANDLE hThread()const;
HANDLE hExitEvent()const;
HANDLE hPauseEvent()const;
LONG iDelay()const;
<br />
public:<br />
UINT nThread() const;
ERunningState eThreadState()const;
<br />
private:<br />
void SetUserData( LPVOID a_pUserData );
public:<br />
void SetDelay( LONG a_iDelay );
<br />
protected: <br />
virtual void Run() = 0;
<br />
<br />
<br />
public:<br />
bool Create(int a_iPriority = THREAD_PRIORITY_NORMAL);
void Stop();
void Suspend();
void Resume();
<br />
private:<br />
static UINT __cdecl ThreadHelper(LPVOID a_pUserData);<br />
<br />
};<br />
<br />
<br />
<br />
<br />
<br />
inline HANDLE <br />
CBaseThread::hThread()const <br />
{ <br />
if( m_opThread == NULL ) return NULL;<br />
return m_opThread->m_hThread; <br />
}<br />
<br />
<br />
inline UINT <br />
CBaseThread::nThread() const <br />
{ <br />
if( m_opThread ) return -1;<br />
return m_opThread->m_nThreadID; <br />
}<br />
<br />
<br />
inline CBaseThread::ERunningState <br />
CBaseThread::eThreadState()const<br />
{<br />
return m_eThreadState;<br />
}<br />
<br />
<br />
inline HANDLE <br />
CBaseThread::hExitEvent()const<br />
{<br />
return m_hExitEvent;<br />
}<br />
<br />
inline HANDLE <br />
CBaseThread::hPauseEvent()const<br />
{<br />
return m_hPauseEvent;<br />
}<br />
<br />
inline LONG <br />
CBaseThread::iDelay()const<br />
{<br />
return m_iDelay;<br />
}<br />
<br />
<br />
inline void <br />
CBaseThread::SetDelay(LONG a_iDelay)<br />
{<br />
m_iDelay = a_iDelay;<br />
}<br />
<br />
#endif<br />
And here is the BaseThread.cpp
<br />
#include "StdAfx.h"<br />
#include "basethread.h"<br />
<br />
<br />
IMPLEMENT_DYNAMIC(CBaseThread, CObject)<br />
CBaseThread::CBaseThread(LONG a_iDelay , bool a_bCanBePaused ) : CObject()<br />
{<br />
m_hThread = NULL;<br />
m_nThread = 0;<br />
m_eThreadState = e_Running;<br />
m_opThread = NULL;<br />
m_hExitEvent = NULL;<br />
m_hPauseEvent = NULL;<br />
m_iDelay = a_iDelay;<br />
<br />
if( a_bCanBePaused )<br />
{<br />
m_hPauseEvent = CreateEvent( NULL, FALSE, FALSE, NULL );<br />
}<br />
m_hExitEvent = CreateEvent( NULL, FALSE, FALSE, NULL );<br />
<br />
}<br />
<br />
<br />
CBaseThread::~CBaseThread()<br />
{<br />
if( eThreadState() != e_Exited )<br />
{<br />
Stop();<br />
}<br />
<br />
if( m_hExitEvent )<br />
{<br />
CloseHandle( m_hExitEvent );<br />
}<br />
<br />
if( m_hPauseEvent )<br />
{<br />
CloseHandle( m_hPauseEvent );<br />
}<br />
}<br />
<br />
<br />
bool <br />
CBaseThread::Create(int a_iPriority)<br />
{<br />
ASSERT( m_opThread == NULL );<br />
m_opThread = AfxBeginThread(ThreadHelper, (LPVOID)this, a_iPriority );<br />
return m_opThread == NULL ? false: true;<br />
}<br />
<br />
<br />
void <br />
CBaseThread::Stop()<br />
{<br />
SetEvent( m_hExitEvent );<br />
if( m_hPauseEvent != NULL )<br />
{<br />
SetEvent( m_hPauseEvent );<br />
}<br />
<br />
while( eThreadState() != e_Exited );<br />
}<br />
<br />
<br />
void <br />
CBaseThread::Suspend() <br />
{<br />
if( eThreadState() != e_Running ) return;<br />
ASSERT( m_hPauseEvent != NULL );<br />
ResetEvent( m_hPauseEvent );<br />
m_eThreadState = e_Suspended;<br />
}<br />
<br />
void <br />
CBaseThread::Resume()<br />
{<br />
if( eThreadState() != e_Suspended ) return;<br />
ASSERT( m_hPauseEvent != NULL );<br />
SetEvent( m_hPauseEvent );<br />
m_eThreadState = e_Running;<br />
}<br />
<br />
<br />
UINT __cdecl <br />
CBaseThread::ThreadHelper(LPVOID a_pUserData)<br />
{<br />
CBaseThread* l_pThis = (CBaseThread*)(a_pUserData);<br />
LONG l_iDelay = GetTickCount();<br />
do<br />
{<br />
l_iDelay = GetTickCount();<br />
if( l_pThis->eThreadState() == e_Suspended && l_pThis->hPauseEvent() != NULL )<br />
{<br />
WaitForSingleObject(l_pThis->hPauseEvent(), INFINITE) ;<br />
}<br />
<br />
if( l_pThis->eThreadState() == e_Running )<br />
{<br />
l_pThis->Run();<br />
}<br />
}<br />
while( WaitForSingleObject( l_pThis->hExitEvent(), l_pThis->iDelay()) == WAIT_TIMEOUT );<br />
l_pThis->m_opThread = NULL;<br />
l_pThis->m_eThreadState = e_Exited;<br />
return 0;<br />
}<br />
|
|
|
|