|
Hi,
I am using the DSOFramer control in an MFC dialog to display an excel chart. I have figured out how to run it and start with an excel worksheet and chart that I can modify to look how I want. Now I need two more tabs added (one with a worksheet and one with a chart)...I am using the following and it gives me an error that the Add function failed.
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Workbook wb;
Worksheets wsSet;
_Worksheet ws;
LPDISPATCH lpDisp = m_FrameControl.GetActiveDocument();
wb.AttachDispatch(lpDisp);
wsSet = wb.GetWorksheets();
ws = wsSet.Add(covOptional,covOptional,covOptional,COleVariant("Excel.Sheet"));
Thanks in advance for your help!
Jen
|
|
|
|
|
I have a programming project for one of my classes, but I have no idea where to start. Any help would be TREMENDOUSLY appreciated!
Program description:
Design and implement a Visual C++ .NET program that creates a simple “spreadsheet”. Your spreadsheet will contain 5 rows by 5 columns of updateable cells. There will be a 6th row and column that will display the total of the respective row or column. When the program executes it will display the spreadsheet with zeros in all cells and all totals. The program will prompt the user to enter 1 to update the spreadsheet or 0 to quit. When the user enters 1 to update the spreadsheet the program should prompt the user to enter the row and column to update. The row will be an integer 1 thru 5 and the columns will be characters A/a thru E/e. (1a is the upper left cell) The program should continue to prompt for row and column until a valid input is received. Next the program will prompt the user for the new value to go into cell X (replace X with appropriate row/ column reference, see sample run). After the value is entered the program will reprint the updated sheet and once again prompt enter 1 to update 0 to quit.
Assumptions:
-Eight digits will be enough width for the cells (tab). Cell values will not exceed 9,999,999.
-The prompt for edit or quit will only be 1 or 0. No other values will be used.
-For your testing purposes, a sample data file (data.txt) will be posted to WebCT. You can open this file, copy the data, run your program and right click your mouse to paste it to your program window. Press enter and the program should process the data as shown in the sample run below.
-This project will be much easier if you use an array. Remember that the first index in an array is zero
|
|
|
|
|
|
My apologies, I should have been more specific. The project is to be done in win32.
|
|
|
|
|
A game to transform letters read from a file to a prime number. Do and enjoy it!
The goal of this is to construct a C++ program that will read all letters from a specified file and transform them to a prime number.
The tasks you have to perform are:
(A) Read letters in sequence from a specified file, which contains 1 sentence. Transform each letter to the corresponding ASCII value.
For example, if the file contains “What?” then
‘W’ corresponds to 87
‘h’ corresponds to 104
‘a’ corresponds to 97
‘t’ corresponds to 116
(B) Calculate and output r1=the sum of all obtained integers (e.g. r1=87+104+97+116=404)
(C) Calculate and output r2=the length of Syracuse sequence seeded by r1.
Let n be a positive integer and f(n) be the transformation that sends n to n/2 if n is even and sends n to 3n+1 if n is odd. Starting with a positive value u called the seed, the sequence of integers iteratively generated by f and u is called a Syracuse sequence.
For example, starting with the seed u = 1, the subsequent terms of the sequence are 4, 2, and 1. The length of the sequence (excluding the seed) is therefore 3.
For u = 4, the next terms are 2 and 1. The length is 2.
For u = 404, the next terms are 202, 101, 304, 152, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, and 1. The length is 27.
It is conjectured (this means that we do not have a proof of this fact, only strong evidences) that for any positive seed the sequence will always reach to 1. In fact, computations show that for any seed u less than or equal to 3*2^53, the corresponding sequence always reaches 1. The general case is unknown.
(D) Calculate and output r3=the largest prime factor of r2.
A prime factor of n is a factor of n which is a prime number. A prime number is any integer greater than 1 and only divisible by itself and 1 (e.g. 2, 3, 5, 7, 11, 13, 17 etc). For example, 3 is the largest prime factor of 27 and 7 is the largest prime factor of 49.
Here are some example
Example 1
Enter the name of the input file: in1.txt
963
49
7
Press CTR-C to Leave...
|
|
|
|
|
Errr.... Do you have a question or are you posting your homework for our enjoyment?
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
|
He must be very desparate. This is the second post of the same homework assignment. Very annoying to pollute this message board.
|
|
|
|
|
I have the following code in my .h file
<br />
ForecastStruct Forecast[24];
CList<ForecastStruct *, ForecastStruct *> m_WeatherList;<br />
Basically what I want is a Linked list of Forecasts stored in m_WeatherList. The Forecast variable is an array for each hour of the day. I want to store this variable in the list m_WeatherList List.
to do that I do
<br />
m_WeatherList.AddTail((ForecastStruct *)Forecast);<br />
Forecast is correct. I can see all 24 indexes and each holds the right data. When I look at m_WeatherList after the line above, the data is wrong. I do not see my appended Forecast object.
Does anyone know what I am doing wrong?
Thanks!
-- modified at 18:48 Monday 3rd April, 2006
|
|
|
|
|
You need to tell us what m_WeatherList is. I'm guessing its a
CTypedPtrArray.
If that's the case, then you have added 1 element to the List.
If you wanted to add all 24, you need to do:
CTypePtrArray<CPtrArray, Forecast *> m_wList;
for (int i = 0; i < 24; i++)
m_wList.AddTail ( &(Forecast[n]) );
Iain.
|
|
|
|
|
m_WeatherList is a CList. Based on what is written above I would rather have the objects separated then at intervals of 24. That is what I would like is an object that holds Forecast objects as a whole in a linked list.
m_WeatherList Head Object
Forecast[0]..
Forecast[1]..
..
..
m_WeatherList Next Object
Forecast[0]..
Forecast[1]..
..
..
Thanks!
|
|
|
|
|
Hi,
I am having a project written in VC++6. I am including an updated header file from one of our research board manufacturers (NI). When I try to compile the project it is giving me errors like -
1)error C2632: 'char' followed by 'char' is illegal
2)error C2632: 'short' followed by 'short' is illegal
3)error C2632: 'short' followed by 'int' is illegal
4)error C2632: 'long' followed by 'long' is illegal
These header files are written in ANSI C and the code where this error occurs is like -
#ifndef _NI_int8_DEFINED_
#define _NI_int8_DEFINED_
typedef signed char int8; <--- error(1)
#endif
#ifndef _NI_int16_DEFINED_
#define _NI_int16_DEFINED_
typedef signed short int16; <--- error(2)(3)
#endif
#ifndef _NI_int32_DEFINED_
#define _NI_int32_DEFINED_
typedef signed long int32; <--- error(4)
#endif
Can someone help me out from this issue???
thanks,
-Pav
|
|
|
|
|
i did a test for u, int8 is not defined in my code,
then i add the 2 lines
#define int8 char
typedef signed char int8;
and get same error as you have, so it means int 8 has been defined somewhere before your include.
//add the line u will not have error 1
#define _NI_int8_DEFINED_
//then
#include "the_very_very_ugly_file.h"
do same for all errors.
A special image tool for Windows C++ programmers, don't miss it!
The world unique Software Label Maker is waiting for you and me ...
A nice hyper tool for optimizing your Microsoft html-help contents.
|
|
|
|
|
Yep, it worked without errors. Thanks for your help and time. BTW howcome it is declared ahead if I am not declaring it anywhere else??
-Pav
|
|
|
|
|
as i know, they (int8 etc) are defined by VC in some h files, u may include those VC files somewhere.
if you want to now where they are, add follow line
#define int8 char**
or something likes above (redefine), compiler will tell u warning ..., so u can find pre-define.
A special image tool for Windows C++ programmers, don't miss it!
The world unique Software Label Maker is waiting for you and me ...
A nice hyper tool for optimizing your Microsoft html-help contents.
|
|
|
|
|
Thanks for your useful reply. I had another question for you, not realting to this post, how can I start a process (to say an exe) within another cpp project and terminate it whenever I want to. I am looking at CreateProcess(but seems this function waits till the called program exits for the calling program to gain control). I need to call an exe file independently of the calling program.
Ex: program1 calls exe file of program2, program2 executes on itself and keeps running untill program1 terminates program2 instance.
Any suggestions on easy implementation of this??
thanks,
-Pavan
|
|
|
|
|
use ShellExecute(this->m_hWnd,"open","your EXE File Name","","",SW_SHOW );
ur exe must be within ur Project Folder
Aavesh
|
|
|
|
|
Thanks, I thought of using this too, but How can I terminate the process that is created??( I would like to stop this process wherever/whenever I want)
thanks,
-Pav
|
|
|
|
|
hi
u must tell me which type of exe u r calling
explain little more ur question
Aavesh
|
|
|
|
|
Ok here ya go, the exe file I want to execute is another executable generated from another cpp program. Basically my program generates a waveform depending on the clock that we input to that board. The clock is generated by a NI board and this is written in another cpp file. So, in my actual waveform generation code I want to control the clock generation from NI board at my will. Hope I am clear.
thanks,
-Pav.
|
|
|
|
|
This has probably been solved a million times before, but I can't find anything. I have an Import option that allows the user to convert data from one format to another, which can be time-consuming. Therefore, I would like to have a dialog box with a progress bar.
My first approach was to create a modeless dialog and update the file list and progress bar as I go. But my problem is the dialog never finishes displaying before processing begins, so I can't use the Cancel button. I'll assume its because I'm in a loop and never return to the system to process the dialog messages. I tried doing a PeekMessage but that doesn't seem to help.
My second approach (which I haven't tried yet) is to do a modal dialog with the dialog class doing all the processing. In this case I would process WM_KICKIDLE messages for the processing.
I also considered using the OnIdle callback to do the processing. But the problem with that approach is OnIdle is in WinApp and the processing is taking place in the View window.
I guess my real question is, how is this normally done? You see see progress dialogs all the time in commercial programs, is there a "standard" way or best way that this is normally done?
Thank you.
Jim
|
|
|
|
|
JRGlide wrote: My first approach was to create a modeless dialog and update the file list and progress bar as I go. But my problem is the dialog never finishes displaying before processing begins, so I can't use the Cancel button. I'll assume its because I'm in a loop and never return to the system to process the dialog messages. I tried doing a PeekMessage but that doesn't seem to help.
You're on the right track. This is the standard way of tackling this problem. Look at this[^] article for details on how to implement the message loop during processing. Just replace the couple of comments at the bottom of the code sample with your processing.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
I think you should use the first method, with a modalless dialog, wich should include a progress control. Than you should add in the parent window, wich does all of your processing, a call to a user defined method like this:
void CYourParentDlg::ProcessIdleMessages()
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
::PostQuitMessage(0);
break;
}
if (!PreTranslateMessage(&msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
}
This method will process each message and it will respond to your 'Cancel' button.
|
|
|
|
|
Thanks to both of you for your help. I've been going nuts because I couldn't get either method to work. With the first one I got undefines on the PumpMessage call, and the second one I got undefines with the PreTranslateMessage call.
Then it finally dawned on me, I was trying to call them from an import class that wasn't derived from a Windows class! I guess that's why Mihai told me to do the processing within the parent window. I need to re-structure things. Stay tuned...
And thanks again.
|
|
|
|
|
I am developing a directshow filter, but there are errors when running in graphedt. I do not know how to debug the filter. Thanks for any information about the filter debug. BTW, I am using VS2005.
|
|
|
|
|