|
Hello,
In the samples given on microsoft support (Q178749: HOWTO Create automation project using MFC and a type library) we have to select Microsoft Excel 8.0 Object Library if we use excel automation. But what could i do if i have office XP on my workstation?
thanks in advance
gerald
|
|
|
|
|
I assume you are using VC7
to import library (Excel in your case)
#import "libid:\<<excel8libid\>>"
if you want to be more specific with the version
#import "libid:\<<excel8libid\>>" version("x.x")
From what I saw MSOffice libraries are backward compatible so it should work, even though by rules of COM major version change should be treated as separate library.
|
|
|
|
|
|
then use
#import "excel8.olb"
And you will have to carry excel8.olb as a part of your build. I am not sure if it is legal though, you might have to have Excel8 on your build machine, check the user agreement.
|
|
|
|
|
If you target the Excel 8.0 library and build your exe, it will still work on different machines with Office 2000 and Office XP, though it does not seem to work in reverse. i.e. build for the 10.0 library and run it on a machine with Excel 97.
|
|
|
|
|
Hi,
I get a notification when a user is changing a tab in my CTabCtrl
How can I see what tab he is changing to?
ON_NOTIFY(TCN_SELCHANGING, IDC_SELECT_TAB, OnChangingTab)
...
void
MyMfcView::
OnSelchangingProjectSelectTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// I get the currently selected tab
int selectedTab = TabCtrl_GetCurSel(pNMHDR->hwndFrom);
// But what's the index of the next tab???
int nextTab = ???
*pResult = IsOk(selectedTab, nextTab) ? 0 : 1;
}
Any ideas?
|
|
|
|
|
That information would not be available at that time.
The TCN_SELCHANGING message occurs when the tab is about to change.
Override the TCN_SELCHANGE notification message and
call GetCurSel to get the tab that you have selected.
|
|
|
|
|
But at this time, you can not stop the change-process any more.
You can switch back to the page just left, though.
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
Any API is there to find wheather the system is locked.
|
|
|
|
|
define "system is locked"
|
|
|
|
|
In my definition, this is a locked system:
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
int x = 0;
while (true)
x++;
I see dumb people
|
|
|
|
|
yes it is..
|
|
|
|
|
Hi everyone,
I have a weird problem. I have a function definition like
void SetUp(double **)
Now I have an array:
static double ERBbCoeff_22050[6][7] = {.... values...};
Now when I try to call the function SetUp(ERBbCoeff_22050), it throws the error...cannot convert parameter from double[6][7]to double**. However, I thought a 2D array could be represented as pointer to a pointer.
Obviously, I am missing something here. Anyone know what is going on? I would appreciate any help.
Thanks again,
Pankaj
Without struggle, there is no progress
|
|
|
|
|
Try declaring the function SetUp as:
void SetUp(double *array[7]); And then pass the array like before:
SetUp(ERBbCoeff_22050);
-Dominik
|
|
|
|
|
Hi Dominik,
Nope even that did not work. I tried it before. It still says:
error C2664: 'Beat::FilterBank::SetUp' : cannot convert parameter 3 from 'double [6][7]' to 'double *[]'
This is really weird. Do not worry, I will try to find a way.
Thanks for all your help,
Pankaj
Without struggle, there is no progress
|
|
|
|
|
Perhaps pass the array like
SetUp(&array[0]);
This helps?
-Dominik
|
|
|
|
|
Hi RChin,
Thanks for your reply. Your reply seems to be lost though! But it did not work. Now I get the following error,
c:\Pankaj\TestProjects\BeatDetectionNew\BeatDetection.cpp(180): error C2664: 'Beat::FilterBank::SetUp' : cannot convert parameter 3 from 'double (*__w64 )[6][7]' to 'double ** '
I always thought I could pass it as a pointer. I mean we can pass an array as a pointer
Pankaj
Without struggle, there is no progress
|
|
|
|
|
this will compile:
<br />
static double arrVar[2][2]={1,2,3,4};<br />
SetUp( &arrVar[0][0] );<br />
or
<br />
static double arrVar[2][2]={1,2,3,4};<br />
SetUp( arrVar[0] );<br />
if you declare the function as
void SetUp(double*)
Your function will have to know the dimentions of the given array.
However, you might have a valid reason for declaring the input parameter as a pointer to a pointer.
|
|
|
|
|
Hello,
it works if you call your function like
SetUp((double**)ERBbCoeff_22050).
|
|
|
|
|
hey, it works!!
Thanks a bunch!
Pankaj
Without struggle, there is no progress
|
|
|
|
|
Hi guys,
How to give database support to an existing MFC Project?? I have tried in the following way.
1.Inserted a new class with CRecordSet as the base class.
2.Connected to the database.
3.Included the necessary headers and declarations.
It compiling without error and warnings but when I am try to run my project it is giving "unhandled exception".
I debug the code it is stopping at m_pSet->AddNew().
Can anybody help me please ..
Regards,
Satya
|
|
|
|
|
hi all,
I am working on something where i need to change the default search page of windows. i.e. auto.search.msn.com that is just type anything on IE addressbar and if that doesn't exit it will automatically be diverted to auto.search.msn.com....now if i want to change it to google I can do that..but I am unable to change it to any other search engine or any other site...
what should I do...can anyone help me...out there..
thanks in advance..
Himanshu
|
|
|
|
|
hello @all,
i have a mfc-program and two CStrings.
i would like to connect these, but everyone in its own line, e.g. they should be separated with a Return.
CString one="123";
CString two="456";
CString combination="123
456";
i posted it yesterday and somebody said, that i can use this:
combination=one+0X0A+0X0D+two;
but when i save my CString combination into a txt-file, the CString are not in its own line, there is only a 'symbol' between them.
what must i do, that the CStrings are in their own lines???
thanks
sunny
|
|
|
|
|
use "\n"
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
It should be :one +0X0D+0X0A+two;
|
|
|
|