|
try formatting it into an array of chars or a CString before doing the message box, See CString::Format or sprintf for that
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Hi,
I've got to develop an application thats something like drawing circiuts over the screen. please suggest a method. thanks in advance
|
|
|
|
|
If you want draw your circiuts, etc. very fast use OpenGL or DirectX, also GDI+ is a very good choice!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
You need to read about device context s (DC s).
These are used to access the screen, and hand you draw commands over to the graphics card driver.
There are a lot of methods for drawing, coloring, writing text etc.
|
|
|
|
|
I have an MFC application built around a CView Class. However, now I need to create a .NET form and have no idea how to make sure it is properly parented within the application. Any ideas? Examples?
Very new to .NET and climbing that learning curve...
|
|
|
|
|
I want to send the boss an update of my work.
How does one go about compiling a mfc project so that the .exe can be run on any machine?
I'm running VC++6 Professional edition on Win2K.
thanks,
kash
|
|
|
|
|
Build Menu, Set Active Configuration.
The build your project.
Signature space for rent. Apply by email to....
|
|
|
|
|
I tried this, but when the program executes, it returns error message saying missing dll files.
|
|
|
|
|
If the DLLs are named things like MFCxxxD.DLL, then you have not built a release version, but a debug version. In the "Build/Set Active Configuration", you should probably have "proj - Win32 Debug" and "proj - Win32 Release", it's the release you should select, then do a Rebuild All.
You can also use the Depends tool to see what DLLs your exe needs.
It's possible that there is no MFC release runtime on the other machine, but unlikely.
Steve S
[This signature space available for rent]
|
|
|
|
|
u need to make an installation package for distribution
"... and so i said to him ... if it don't dance (or code) and you can't eat it either f**k it or throw it away" biz stuff about me
|
|
|
|
|
There's no mention of this in Help.
Do you have any suggestions?
Thanks
Kash
|
|
|
|
|
Go to your project settings. Select "Use MFC in a static library". Rebuild all. Your exe will be bigger, but you won't need to include the mfc dll's.
-----------------------
New and improved: kwakkelflap.com
My first CP article: Pseudoregisters[^]
"When I hear of Schrödinger's cat, I reach for my gun." - Stephen Hawking
|
|
|
|
|
Hello,
INTRODUCTION:
I create Numerical Controls with a specially desgined soft in order to do that.
This soft has a special function that I can call in order to know the value of the variable passed as a parameter.
I can create a timer in order to check continuously the value of it's variable but I think that this is not a very effective way to do it...
QUESTION:
Can I create an event (CreateEvent(...)) that look for the change of that variable and then wait for that change (WaitForSingleObject(...))?
I have to do this mechanism for 40 variables (more or less) but I have no clue of where to begin, which do you think that can be the best solution?
As always thank you in advance.
|
|
|
|
|
You can't specifically wait for a change in a value of a variable.
But, if create an event for each variable you want to monitor, you could trigger the event whenever you change the variable. This is very easy to implement if you encapsulate your variable as a protected member of a class, and only access it through accessor methods. here's an example
class CMyData
{
protected:
long m_lMyVar;
public:
long GetMyVar();
void SetMyVar(long lVal);
HANDLE m_hEvent;
CMyData();
}
CMyData::CMyData()
{
m_hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
long CMyData::GetMyVar()
{
return m_lMyVar;
}
void CMyData::SetMyVar(long lVal)
{
m_lMyVar = lVal;
SetEvent(m_hEvent);
}
.... then later on ....
if (WaitForSingleObject(mydataobj.m_hEvent, INFINITE) == WAIT_OBJECT_0)
{
}
Obviously, your app needs to be multi threaded, becuase if you enter the wait function in a single threaded app when the event is not set, your app will deadlock.
Jon
Signature space for rent. Apply by email to....
|
|
|
|
|
OK,
but I cannot set the value from the external software, I can only check that value from my VC++ app.
This means that I cannot set the event manually...
That software has some callback functions (in a dll) that I can access in order to get information of some kind of variables...
I want to simulate that behaviour:
I need to be able to know when some variables (in the external software) have changed and when this has happened fire an event...
As always thank you in advance...
|
|
|
|
|
Do you really mean callback? If the external softwares provides an API by which it can callback a function in your program, when the var is changed, then you're on to a winner.
But, if it doesn't then you are stuck.
Signature space for rent. Apply by email to....
|
|
|
|
|
Yes, I can do it only with variables with a phisical adress (that external software is intended to control machines and to create PLC and Numerical Control programs) and with those variables I can do it, but they don't allow me to do the same with the logical variables:
the ones that I use in order to process things: operations running, alarms active...
I want to reach those variables without check their state each x ms.
That's all...
And as I've seen that they have that function taht I can access, and program as a callback function in my VC++ app, then I've thought that it must be any other similar way to do the same from the other side:
Not being alerted by their callback and checking those changes in a better way than using a timer...
|
|
|
|
|
So if they are providing a facility whereby you can register a callback function, why don't you use that?
Signature space for rent. Apply by email to....
|
|
|
|
|
Yes, they notify my app only in some types of variables, the ones that are linked to the sensors and actuators of the machine, but the other ones, the ones that interest me are not included in this group.
this is my problem...
and I needed only to know which is the best way to do some checks without consumption of a lot of system resources...
what I've been doing till now is to create a timer in the main dialog, and re-send the WM_TIMER message to each dialog, window... that need to check some variables, in order to use only one timer and not to use a lot of processor...
NOTE:
I need all the processor that I can get because I need to control the machine granting that it will be well controlled...
|
|
|
|
|
this is how I access the callback function...
<br />
lError = AdsSyncAddDeviceNotificationReq(m_pAddr, this->m_iGrupADSTCAT, (iComptador * this->m_iBytesElementADSTCAT) + this->m_iOffsetInicialADSTCAT, &this->m_ArrDadesADSCallback[iComptador].m_adsNotificationAttrib, this->CallbackFX1, this->m_ArrDadesADSCallback[iComptador].m_hUser, &this->m_ArrDadesADSCallback[iComptador].m_hNotification);<br />
and this is the callback function...
<br />
void CMonitor::CallbackFX1(AmsAddr *pAddr, AdsNotificationHeader *pNotification, ULONG hUser)<br />
{<br />
printf("hUser: %.2u >> Contingut: %.10u\n",hUser, *(ULONG *)pNotification->data);<br />
}<br />
|
|
|
|
|
Hi,
Question:
How to Post Message with parameters?
How to use wParam and lParam??
Examples are welcome!!!
Thanks
Extreme programming. Do the No.1
|
|
|
|
|
Depends of the type of the message to post:
u should use PostMessage or SendMessage
an exemple :
MFC:
void CMXAutoDlg::SendStringToWnd ( CWnd * pWnd , CString sString )
{
pWnd->SetForegroundWindow() ;
pWnd->SetFocus();
pWnd->CenterWindow ( ) ;
for ( int iCounter = 0 ; iCounter < sString.GetLength ( ) ; iCounter ++)
{
pWnd->PostMessage ( WM_CHAR, sString [ iCounter ] , 0 );
Sleep ( 100 );
}
}
Non MFC:
PostMessage(hWnd , ...) same params
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
In this case, I use PostThreadMessage, then how to use wParam and lParam?
Extreme programming. Do the No.1
|
|
|
|
|
MSDN:
You can use the PostThreadMessage function to post a message to a specific thread message queue. PostThreadMessage is similar to PostMessage, except the first parameter is a thread identifier rather than a window handle. You can retrieve the thread identifier by calling theGetCurrentThreadId function.
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
After I use wParam & lParam in PostThreadMessage, then I use GetMessage() to accept them, then where can I get the wParam & lParam sent from PostThreadMessage. Appreciation.
Extreme programming. Do the No.1
|
|
|
|