|
Does anyone know how to implement the usage of this indicator? I put it in:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
ID_INDICATOR_OVR,
};
But I have no clue where to go from there to make the little guy in the bottom right corner actually toggle on and off.
halblonious
|
|
|
|
|
You'll need to add a UI handler for it. In the appropriate message map, add the ON_UPDATE_COMMAND_UI macro (outside the “{{AFX” comments), for ID_INDICATOR_OVR (in Mainfrm.cpp):
ON_UPDATE_COMMAND_UI(ID_INDICATOR_OVR, OnUpdateOver)
void CMainFrame::OnUpdateOver(CCmdUI *pCmdUI)
{
if (some_condition)
pCmdUI->SetText("Over");
else
pCmdUI->SetText("");
}
|
|
|
|
|
|
Actually, I am a begginer in C/C++ programming as I always programmed my add-ins for Excel in VBA, but recently I´ve been impressed by the advantages of C/C++ language and I decided to program my old VBA functions in a C dll. The results are great, but I have some troubles when exporting arrays output to Excel.
The thing is that, as it´s not possible for a function to return an array in C, the only way to export a matrix or a simple array is just to either use a pointer to an array or to wrap the array in a structure. I have tried it all, but this doesn´t work and, as the code is compiled with no error in Visual C++, Iam afraid I don´t import the function correctly from Excel. I have found the following sample in some pages I have visited. It´s just a function that returns the sum of two vectors:
The c# code for the dll:
__declspec(dllexport) double *vectoradd(double *vector_x,double *vector_y,int arr_length)<br />
{ <br />
<br />
int i; <br />
double *vector_z; <br />
vector_z = (double*) calloc(arr_length,sizeof(double)); <br />
for (i=0;i<arr_length;i++) { <br />
vector_z[i] = vector_x[i] + vector_y[i];<br />
} <br />
return vector_z; <br />
}
Once the dll is created, I try to use it in Excel. First, I use id.register Excel formula to register the function and get the id( in Excel:=register.id ("C:\function.dll","vectoradd","EEEJ" ) This works fine. But, when I try to call the function ( =call(A1,B1:B3,C1:C3,3) for instance to sum both vectors B1:B3, C1:c3 ) all I get is "FALSE". What´s wrong?
If it´s possible, what code should I write in VBA to register the dll function when it returns an array output (either pointer to or structure)?
Thanks.
|
|
|
|
|
This sounds like a job for SAFEARRAY .
|
|
|
|
|
is there a way I can add Comments to the INI file . I am actually using the
GetPrivateProfile method. I want the comments to leave the operation unaltered !
|
|
|
|
|
A line that starts with a semi-colon ';' is treated as a comment and ignored by all the GetXxxProfileXxx() functions.
Brad
|
|
|
|
|
As far as I know, there's no API for adding comments. You have to do it yourself.
Regards,
Alvaro
Hey! It compiles! Ship it.
|
|
|
|
|
Hi,
Its me again, looking for more help. I'm still working on the same project as last time i was on here (sending information through the ethernet)
The app has a main window that just displays the menu bar, and 3 dialogs. My app makes a message using the 3 different dialog windows. Each one will add a value to a number that i have when a "create" button is pressed (each one has their own button).
Here is where I am having the problem. Sometimes i need to send it to the server, but some other times i need to save it to a file. So the user can make a entire file of different messages.
I am using the call
CFileDialog InputFile(TRUE, "*.txt", "Message, NULL, "*.txt", NULL); to make the window for the user to enter the name of the text file.
My question is:
1)When do i create, open, close the file that I am going to be writing to?
2)Where do i do all the "ofstream out" stuff? When i click the "create" button on the 3 dialogs that make the message?
Thanks for helping me. (I'm new to coding, i'm 15. Can you please keep the answer simple and with examples if you have time. If not just explain as you normally would)
Jimmy
Just cause I am 15, doesn't mean I'm dumb! (I'll really be 4 on Feb. 29...the year 2004)
|
|
|
|
|
The CFileDialog does not create the file, nor does it open it. All the dialog does is give you a standard interface for choosing a file. You have to create the file afterwards.
First you construct the dialog. When you call DoModal(), the dialog appears. When the user clicks open, the dialog returns IDOK. At this point your code can access the path to the file selected by the user using the GetPathName() member function.
<br />
CFileDialog InputDlg(TRUE, "*.txt", "Message.txt", NULL, "Text Files (*.txt)|*.txt", NULL); <br />
<br />
if(IDOK==InputDlg.DoModal()){<br />
CString filename = InputDlg.GetPathName();<br />
}<br />
I suggest you have a look at the documentation for CFileDialog on the MSDN. It will tell you about some other member functions you can use and also about a little error with the file filter you had in the constructor.
Lorenz Prem
Microsoft Corporation
|
|
|
|
|
Hi
I have a CTime object which has been succesfull set to the day of today.
Now i want the user to type in a number, like 10, and receives the date of 10days ago.
It's not problem making the Ctime object, neither receiving the '10' but when i substract like this:
<br />
CTimeSpan dtDiff(60,0,0);
<br />
CTime timeNow;<br />
char szMsg[256];<br />
<br />
CTime dtResult;<br />
dtResult = TimeNow - dtDiff;<br />
<br />
wsprintf(szMsg, "%02d/%02d/%04d", dtY.GetDay(), dtY.GetMonth(), dtY.GetYear());
I thought error was with TimeNow, but it gets the date correctly.
When the wsprintf does his thing the program crashes. My guess is the CTime object isn't filled (error) left blank or something? Anyone any ideas?
|
|
|
|
|
Er, is that a typo?
You appear to be calculating dtResult, but printing dtY - not defined in the snippet you've posted here.
"Welcome to Arizona! Drive Nice - We're Armed..." - Proposed Sign at CA/AZ Border
|
|
|
|
|
Where is the definition and calculation for dtY ?
I Dream of Absolute Zero
|
|
|
|
|
instead of dtY it is 'drResult'
sorry for the typo
|
|
|
|
|
grr dtResult ofcourse
(still morning)
|
|
|
|
|
Back at work now
the number of days can be like 60days or even more.
So sometimes something like this:
CTimeSpan dtDiff(70,0,0,0);
But now i see @ MSDN that the maximum number of days only can be '25 000'. So this won't be a problem
anywayz, how to solve this problem and how can i know what went wrong with the ctime or the ctimespan object?
|
|
|
|
|
JensB,
I have just quickly built a console version of your program above and it seems to be OK? I had to add an extra parameter at the construction of your CTimeSpan, dtDiff (it takes four parameters).
<br />
CTimeSpan dtDiff(60,0,0,0);<br />
CTime timeNow(1999,3,23,7,34,12);
CTime dtResult = timeNow - dtDiff;<br />
char szMsg[256];<br />
<br />
wsprintf(szMsg, "%02d/%02d/%04d", dtResult.GetDay(), dtResult.GetMonth(), dtResult.GetYear());<br />
The only thing that have noticed is that the MSDN says that the time classes will assert if any of the time conponents are invalid or out of range. Maybe this is what you are experiencing...
I Dream of Absolute Zero
|
|
|
|
|
Well, i have just find out there was something wrong with filling the time to 'timenow'.
I've replaced it with timenow = CTime::GetCurrentTime();
and now it works great.
Thanks for the efforts
|
|
|
|
|
Hi all. Have 2 Q's.
First, I am using a console app in VC++ to launch IE. I then need for the console to monitor how long the app is open by presenteng dots accross the console screnn. My problem is that I can do this, but cannot see the dots UNTILL I have killed the app. How do I give the spotlight to the console WITH the app open and have the console progressively indicate (one dot per second) the time its open??
Partial code is as follws:
if( !CreateProcess( NULL,"C:\\Program Files\\Internet Explorer\iexplore.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
cout <<"CreateProcess failed.\n";
}
else
cout<
|
|
|
|
|
It sounds like cout is doing some buffering. How about:
while (WaitForSingleObject(pi.hProcess, 1000))
{
cout << "." << flush;
}
|
|
|
|
|
Yep, that would do it! I actually ended up using cerr, as I believe that this is
cout and flush combined as cerr doest use a buffer at all.
Will play around with both a see what I get.
Cheers for the help!!
|
|
|
|
|
Hi all,I'm creating a memory management class, that is fairly basic, so you can easily set the size of a block of memory. I have based it in mind for use in arrays and have setup a template class to do it so I could use it to manage the memory of any object. The trouble I'm getting occurs when trying to store the contents of another template container because malloc does not initialise the contents. ZeroMemory doesn't work either because the __vfptr gets initialised to zero instead of the associated virtual functions pointer associated with the class of type T (which means cleaning up causing problems such as crashing cos its in effect calling a NULL pointer function). How then, can I properly initialise something (i.e. call its constructor) when I'm working with pointers to (possibly an array) of type T? I'm using malloc((void*)m_pItem, alloc_length); to allocate enough space for the object m_pItem which is of type T, could I have m_pItem[0] = new T? or would this be inefficient to scan through the newly allocated areas of memory? Some ideas guys if you please ,
Alan.
|
|
|
|
|
Why do you use malloc, use new and more precise the placement new functionality. just search for "placement new" on google for examples on how to use it.
Magnus
|
|
|
|
|
There's a not-so-known C++ construct designed just to solve this, it is called placement new:
new (static_cast<void*>(m_pItem)) T; This is a variation of the standard new in which you provide a void * where the object is to be laid out. The effect is equivalente to calling the constructor of the class for an object at the memory position indicated.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks for the response guys, placement new huh, didn't realise it existed. I was using malloc because it gives slightly less overhead than new, but I suppose thats cos it doesn't initialise any of its data which I want it to. Thanks people, very helpful.
Alan.
|
|
|
|
|