|
this what leads me to the first code i've shown you:
CWinApp* pApp = AfxGetApp();
ASSERT(NULL != pApp);
CString szWorkspace(_T(""));
POSITION posdt = pApp->GetFirstDocTemplatePosition();
while (NULL != posdt)
{
CDocTemplate* pdt = pApp->GetNextDocTemplate(posdt);
if (0 == strcmp("CProjectWorkspaceDocTemplate",
pdt->GetRuntimeClass()->m_lpszClassName))
{
POSITION posdoc = pdt->GetFirstDocPosition();
if (NULL == posdoc) break;
CDocument* pdoc = pdt->GetNextDoc(posdoc);
if (NULL == pdoc) break;
szWorkspace = pdoc->GetPathName();
if (!szWorkspace.IsEmpty())
break;
}
}
this code does not work when i create a dev-studio add in using the wizard of VC++6....but this code does work! when i tried the windows tabs (d/l it from code project), it uses the WWhizIntefaceHelper the has the above method, and if i am placing a break point, at the above code, the line:
POSITION posdt = pApp->GetFirstDocTemplatePosition();
doesn't return NULL....my guess is that this project was not created using the dev-studio wizard.....
can you tell me how it was created then??? it must be COM- ATL - Object right???
if i will solve this, then i will solve my problem...
thanks again
Yaron
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
Ah, so..
You should've told me earlier about the article: reading it completely through offered a good set of knowledge on how the Visual C++ 6 works. For other possible readers, a link to the article is available here[^].
Like this article states, an MFC extension DLL can share the CWinApp object provided by a loading application. This theorem is used as a base on the concept that Visual C++ is a BIG MFC program that loads a few extension DLLs when it starts up. Nothing prevents us from writing Add-ins as extension DLLs instead of regular add-ins, which are generated by the Dev-Studio Add-In wizard.
In order to utilize the code piece placed there, you must generate your Add-in module by using the alternative code wizard mentioned in the article: "CoDeveloper's Extension Add-in Wizard", instead of using the built-in DevStudio Add-in Wizard. Modules created with the prior wizard have access to the CWinApp object of Visual C++, and can thus enumerate through it's document templates and so on.
Basically, to solve your problem and answer your question in a single sentence: use the CoDeveloper's wizard to generate your add-in instead of the built-in one, and then write the necessary code again. By using the alternative wizard, you have access to the CWinApp object of Visual C++. For more information on how it works, you should read the original article with careful thought. You can find the wizard accompanied in the ZIP file that is with the article. Just read the Readme file and install the wizard accordingly.
Unfortunately, you cannot write a seperate module that does the same. This means that the code examples I have posted cannot be altered to access the workspace name on a VC6 platform. The .Net version works, because VC .NET's Automation interface is much more sophisticated.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
you are the best!!!!
thanks a lot, i think that should solve my problem
Yaron
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
Can anybody tell me..How to insert table in richtextbox control as in MS word..I'll be helpful to u...PLease help me sir..
I'll be very thankful to u.
OK! Good Bye...Have a Nice Life..Bye. Sumit Kapoor
Never consider anything Impossible before trying to solve that..---Sumit Kapoor---
|
|
|
|
|
Do you want to create a table by programming or do you want to be able to copy and paste a table from other RTF applications?
Copy/Paste should work.
Since the Windows WordPad application can not create tables and this is a demo application which has been build using CRichEditView (a CRichEditCtrl wrapper) it seems to be not very easy to create tables by programming.
You may have to write the RTF code yourself to do this, but I don't know how to do it.
|
|
|
|
|
Hello
Ihave a programe store about 40,000 record in database,and make report from them .
but the programe work so slowly when I want to find last ID number.
I use ODBC to connect to database. to get the last ID I use m_strFileter and m_strSort properties & Requery MethodRequery .
wat can I do to get better performense ?
(please show me a way to use database )
tnX
Iman Ghasrfakhri
|
|
|
|
|
If your database is MS ACCESS you should use DAO instead of ODBC, that means CDaoDatabase and CDaoRecordset and not CDatabase and CRecordset. To my experience this is much more faster.
Hope this helps.
MS
|
|
|
|
|
The "last ID number" field must be indexed. The speed difference between ODBC and DAO, if any, is negligible.
A rich person is not the one who has the most, but the one that needs the least.
|
|
|
|
|
hi, i need help in recording and playback the sound. i want to learn how to use C/C++ to do this application.
the sound should come in from a microphone and playback to the speaker.
thx
|
|
|
|
|
Try using DirectX - DirectSound/DirectShow.
|
|
|
|
|
Where can i find the details for this directX-directsound/directshow?
is there any sample that i can refer to in learning or as an example?
any suggestion?
can u pls explain in brief what this directX can do? as i know this is for gaming purpose. but i dun know how true it was.
thx for the help!!!
|
|
|
|
|
Why My Programm is getting out when i try to place Rich Edit2.0 on my Dialog Panel??? Just when i get Rich Edit 2.0 out of my Dialog panel my programm works properly.
|
|
|
|
|
You need to call
AfxInitRichEdit();
I usually add it into the InitInstance function.
Michael
But you know when the truth is told,
That you can get what you want or you can just get old,
Your're going to kick off before you even get halfway through.
When will you realise... Vienna waits for you? - "The Stranger," Billy Joel
|
|
|
|
|
Can I control the Volume and Microphone of a USB Device from my application? Presently using MIXERCONTROL I am able to control both Volume and Microphone of the system from an application.
Is it possible to use this MIXERCONTROL it self or any other method?
|
|
|
|
|
Is there a simple way to hide the mouse on entering a window and show it on exiting it. I'm assuming there is a windows message that i need to handle, but I'm not sure which one.
[edit]ShowCursor does some of what I want, but I want the cursor to show in the menu-bar so I can click the minimize/maximize button[/edit]
If you can keep you head when all about you
Are losing theirs and blaming it on you;
If you can dream - and not make dreams your master;
If you can think - and not make thoughts you aim;
Yours is the Earth and everything that's in it.
Rudyard Kipling
|
|
|
|
|
You probably call ShowCursor in the main frame. Try to call it in the child window (or, generally, in the window, which occupy the client area of main window)
Robert-Antonio
"CRAY is the only computer, which runs an endless loop in just 4 hours"
|
|
|
|
|
CFile::GetLength() and CFile::Seek() return a UINT in VC6 and a ULONGLONG in VC7. Is there a predefined macro that can be used to declare a variable in my source that will differentiate between the two. Right now I am using the following macro, but my code would be more portable if I used a predefined one.
#if _MFC_VER < 0x0700
# define SIZE_TYPE UINT
#else
# define SIZE_TYPE ULONGLONG
#endif
Sonork 100.11743 Chicken Little
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
Within you lies the power for good - Use it!
|
|
|
|
|
|
Michael Dunn wrote:
You could also just use ULONGLONG everywhere. Assigning UINT to ULONGLONG is fine by the language rules, because it's a widening conversion.
Thanks Mike
Sonork 100.11743 Chicken Little
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
Within you lies the power for good - Use it!
|
|
|
|
|
Im trying to run in debug mode an app that was converted by VS 2003
but in debug mode not compile, it say this error:
APP fatal error LNK1181: cannot open input file 'shlwapi.h'
i add the include path where this file exist, but i get the same error
In release build works fine.
|
|
|
|
|
When the compiler starts acting "strange" it sometimes helps to exit VStudio and delete the *.ncb file in the same directory as the project. This file is some type of cache of information and it can get "stranged".
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
|
hi
i am having a problem with an infinite loop
can someone check out the code and tell me
what is wrong with it...
[code]
int main()
{
int numberOfResponses; //number of responses for candidates
int accumulator = 0; //adds up total number of votes
do
{
char* stateName = new char[30]; //char pointer array for stateName
char* dateOfPrimary = new char [30]; //char pointer array for date of primary
cin.getline(stateName,30) ;
cin.getline(dateOfPrimary,30);
cin >> numberOfCandidates;
primaries NewPrimary(stateName,dateOfPrimary);
cout << NewPrimary <<endl;
delete="" []="" statename;=""
delete="" dateofprimary;=""
for="" (int="" i="0;" <="numberOfCandidates;" i++)=""
{=""
char="" nameandspent[50];="" char="" array="" for="" name="" and="" money="" spent=""
cin.getline(nameandspent,50);=""
if="" (i="" !="0)"
candidates="" newcandidate(nameandspent);=""
cout="" <<="" newcandidate="" endl;=""
}=""
results="" newresults;=""
int="" votes;=""
cin="">> votes;
accumulator = accumulator + votes;
NewResults.voteArray[i-1] = votes;
}
NewResults.totalNumberOfVotes = accumulator;
NewResults.percentage();
cout << NewResults << endl;
cin >> numberOfResponses;
for (int i = 0; i <= numberOfResponses; i++)
{
int c, i, v;
cin >> c;
cin >> i;
cin >> v;
election MyElection(c,i,v);
}
char blank[5];
cin.getline(blank,5);
cin.getline(blank,5);
}while(!cin.eof());
return 0;
}
[end code]
the INPUT is like this:
Iowa
January 19, 2004
6
Kerry 50000
Clark 20000
Dean 40000
Gephardt 20000
Lieberman 10000
Edwards 40000
1128
83
540
318
60
957
15
1 2 8
3 2 5
1 3 6
1 1 6
6 1 7
5 2 5
2 4 7
4 3 6
6 2 7
1 4 9
6 4 7
3 4 7
2 3 6
1 4 8
4 2 6
New Hampshire
January 27, 2004
5
Kerry 500000
Clark 200000
Dean 400000
Lieberman 100000
Edwards 50000
84229
27254
57788
18829
26416
25
1 2 8
3 2 7
1 3 6
1 1 7
3 1 7
5 1 7
2 4 6
5 3 6
4 1 4
1 4 9
3 4 8
1 2 7
2 1 7
3 2 8
4 2 6
5 2 8
2 2 6
3 3 7
1 2 8
2 3 7
3 2 7
4 4 6
5 4 7
2 2 6
3 3 6
ps....if i use just one set of data...my program works...but when i add another set of data....such as above (there are two) one for iowa and one for new hampshire...it keeps going on forever...help please
|
|
|
|
|
Which version of VC++ are you using. I'm assuming VC6.
After a quick glance, I think your problem is
for (int i = 0; i <= numberOfResponses; i++) <br />
{ <br />
int c, i, v; <br />
cin >> c; <br />
cin >> i; <br />
cin >> v; <br />
election MyElection(c,i,v); <br />
}
You are redeclaring the variable i and then setting it to a different value. I think this may be throwing off your loop.
VS.NET wouldn't let the code compile, but VS6 would.
Michael
But you know when the truth is told,
That you can get what you want or you can just get old,
Your're going to kick off before you even get halfway through.
When will you realise... Vienna waits for you? - "The Stranger," Billy Joel
|
|
|
|
|
When you use iostream and some read function fails, a failbit is set to the input stream. Any subsequent readings will simply return without doing something. Hence you will never pass the eof of the input stream.
Because you declare a cycle iterator inside the cycle (as Michael P. Butler wrote), this cycle probably doesn't repeat numberOfResponses -times. And the subsequent read operations probably read different types, that they expect, so the read operation fail.
The solution is:
* check whether cin.fail()
* if yes, restore the failbit by cin.clear()
Robert-Antonio
"Friends come and leave, but teddybears stay in forever."
|
|
|
|