|
John,
thanks very much, deleting the .clw file and rebuilding the ClassWizard data did the trick.
regards
Andrew
|
|
|
|
|
I have an MFC app and I want to use a dialog to filter data in the document. But how do I get hold of GetDocument()? All I can find that almost works is to use in OnInitDialog
CTransistDoc* pDoc = (CTransistDoc*) CLeftPaneView::GetDocument();
ie I try to get it via my View, but this fails with
error C2352: 'CView::GetDocument' : illegal call of non-static member function
Which seems to be saying that OnInitDialog() is a static function. It is declared normally
virtual BOOL OnInitDialog();
How do I sort this out? And where is this kind of nonsense explained? Thanks in advance for any help.
|
|
|
|
|
Mister Transistor wrote:
CTransistDoc* pDoc = (CTransistDoc*) CLeftPaneView::GetDocument();
You are calling GetDocument as a static function (shown by the ::GetDocument). What you need to do here is get pointer to the class that contains the docuement, and call the GetDocument from that pointer. So it'd be something like this:
CLeftPaneView *pLeftView;
CTransistDoc *pDoc;
CWnd* pWnd;
pWnd = m_wndSplitter.GetPane(0, 1);
pLeftView = DYNAMIC_DOWNCAST(CLeftPaneView, pWnd);
pLeftView = pDoc->GetDocument();
This is how I get my document pointers in order to manipulate my docuement information.
Hope this helps!
|
|
|
|
|
that's very interesting thank you ...
I think you mean
pDoc = pLeftView->GetDocument();
I'll try that shortly. Thanks again.
Andrew
|
|
|
|
|
Create another constructor in your dialog class that accepts a CDocument pointer. Then construct your dialog object like:
CMyDialog dlg(this);<br />
dlg.DoModal();
Now your dialog class can communicate with the document class with the saved pointer.
|
|
|
|
|
Ooo.
That's quick and easy. I like that! Thanks Dave!
|
|
|
|
|
will1383,
DavidCrow has a good idea, but remember that the default constructor for a dialog is:
CMyDialog(CWnd *pParent);
So you should create it like this:
CMyDialog dlg(this);
The this parameter being a pointer to the parent window. It is good practice to always set the parent for a dialog. Don't create them like this:
CMyDialog dlg;
If you do dialogs can sometimes not come to the top or fall behind other windows. So define your new constructor like so:
CMyDialog(CWnd *pParent, CMyDoc *pDoc);
Now create your dialog like this:
CMyDialog dlg(this, GetDocument());
Now you have the best of both.
Jonathan Craig
www.mcw-tech.com
|
|
|
|
|
Do you know of performance difference between new vs. CoTaskMemAlloc with explicit constructor call?
Reason is, I have to pass around CoTaskMemAlloc'ed arrays quite often, so I'm basically managing two different array classes (a legacy new one, and a CoTaskMemAlloc one). I seriously thing of changing the legacy one to use CoTaskMemAlloc, so I can Detach() a counted array.
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
hello, I'm trying to implement drag and drop in my program, i'm using the drag nd drop classes by Leon Finker on CP. I had it working then noticed it now doesn't work, i have old source where it does work, but apart from things i changed in ftp classes etc there is not differnces, i've even copied the to window classes that implement drag and drop to the new src, and compiled it but still drag and drop fails. it fails on RegisterDragDrop the code i use is:
<br />
dropTarget = new DropTarget(m_hWnd);<br />
if (dropTarget == NULL)<br />
return false;<br />
<br />
dropTarget->AddRef();<br />
<br />
if (FAILED(RegisterDragDrop(m_hWnd, dropTarget))) {<br />
dropTarget = NULL;<br />
return false;<br />
}<br />
...<br />
This is from the drag and drop example Leon provides. and RegisterDragDrop always fails, but not in the other source, really annoying me. Anyone got any ideas of what this could be from? been trying to figure it out for ages!
thanks in advance for any help.
Luke
EDIT: I'm using the WTL framework if that helps or matters
|
|
|
|
|
Ok, very strange I have 2 list views that are trying to do the drag and drop, i also have a RichEditCtrl and in its create method it calls its SetReadOnly(TRUE); method. which makes RegisterDragDrop fail. So i put the readonly bit in the RichEdit.create(..., ES_READONLY) bit but that makes RegisterDragDrop fail. I think this is very weird, the RichEdit.create method gets called before the to listview get created, i'll try swaping them but, still this shouldn't be happening. any ideas?
Luke.
|
|
|
|
|
Hello,
I'm searching for a good explanation for Thread Safety and Brute Force Locking.
Mybe someone knows a good one or has an example.
Thanks, aenima
|
|
|
|
|
Hi all,
I need to know is there any windows API call avialable to query the Network Interface Cards in my pc. I also need to know what are the IP Address and subnet mask assigned to a particular NIC.
Thanks in advance.
|
|
|
|
|
See if GetAdaptersInfo() is of any help.
|
|
|
|
|
hello all,
Could someone show me how to expand a project in ClassView window which has more than about 4000 classes? When I tried to expand a project to view all classes in Class View window, My Visual C++ 6.0 showed a number of files left to load, then it hanged on about 20 files left, then nothing was showed, in addition, the Workspace window was empty although the project title was still there. One special thing is FileView window is OK to expand!!! but ClassView!!!
Is there any option to limit the total of classes to display in ClassView window? or my Visual C++ 6.0 version has bug? or my PC has problem?
FYI, my system : P4 1.6 Ghz, 256 MB RAM, Windows XP service pack 1, 40 GB hard drive
Thanks for any help.
khanh
|
|
|
|
|
How Can I monitor the printing queue, therefor i can
delete some queue, add queue etc. according some logic???
|
|
|
|
|
See these articles - API calls you are looking at OpenPrinter, FindFirstPrinterChangeNotificiation, SetPrinter etc.
'--8<------------------------
Ex Datis:
Duncan Jones
Merrion Computing Ltd
|
|
|
|
|
|
I have a doc/view app with a static splitter and one view is a CTreeView control. I have written a Serialize routine for the Doc, and want to refresh the contents of the CTreeCtrl after loading the saved document. I have verified the the saved data is loaded correctly into the program. I can initialize the tree control just fine from OnInitialUpdate. I believe I am supposed to use OnUpdate to initialize it after the document has changed. However, nothing I do in OnUpdate seems to have any effect. Frustrated, I tried just to enter dummy entries from it. This code below does absolutely nothing, though in debug I verify that it is executed:
void CApp_TreeView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
{
HTREEITEM htTest = GetTreeCtrl().InsertItem(_T("Accounts")); // TEST
GetTreeCtrl().InsertItem(_T("Subaccounts"),0,0,htTest); // TEST
}
If I do the same exact thing in OnInitialUpdate, it inserts the entries just fine. What am I doing wrong?
Thanks
|
|
|
|
|
I recently got my hands on Visual Studio.net and it came with C#. Now, I've been using C++ for a while now, and am starting to get into the nitty gritty of windows programming (using GDI, not MFC) and I wanted to know if I should learn C# instead. I mean, I plan on learning some C#, but is C++ still more powerful? I've looked for articles on the subject, but I really wanted to hear some people's oppinions. What do you guys think? Is C# as clean as C++? Is it as powerful? As fast?
Thanks for your input!
-untwisted
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
I wanted to learn C# so I got a book that teaches you the language. The first thing I read was that "pointers are missing in C#". I cannot imagine a language without pointers therefore I simply refuse to program without them. You could say that this kind of viewpoint is narrow minded and I agree with you, but when I think how pointers have made my life easier and programs faster I could not care less. In any case I will read the book because it seems that C# has safe data types, arrays are bound checked, everything is initialized by the compiler, etc. Nevertheless, I still don't know how you can program without pointers.
I must add that you can program with pointers in C#, but it's considered unsafe mode.
I also don't like the fact that a class can inherit implementations only from one base class in C#.
// Afterall, I realized that even my comment lines have bugs
|
|
|
|
|
C++ and C# are languages targetted to different platforms.
I mean C++ evolved from C and it works on most of the platforms. You can do some great low level work in C++ as well as program for different operating systems using this language. C++ is a champion language.
As far as I know, C# is a language for .net. Microsoft created .net and for .net they created C#. C# does have the pointers but there are always some price for a task. You can use pointers in C# but what will happen is that resulting code will not be in control of CLR (Common Language Runtime). By using pointers, you take the responsibility of mangaing the memory yourself, so CLR garbage collector can do nothing there.
C# is a step towards safer languages like Java. Microsoft say that they have built C# from C and C++ but I think 90 percent of C# is java. It also add some of its own features like indexers, delegates etc.
In my point of view, C# is the latest result of evolution of software industry languages. People sometime used to program in machine languages. Then came assembly language. Then some high level languages. Then came the 4th generation languages like VB which revolutionised the programming world. Before C# it was Java who was dominating on internet. I think Microsoft has created this new language to compete with Java.
End result is that C++ has its own application whereas C# has its own. Programming in C++ is a bit difficult. Whereas C# behaves like an intermediate language between Visual Basic and Visual C++. Look at your problem which you are going to program and then decide which language is good for you.
|
|
|
|
|
Much thanks for your help!
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
I have been creating VC++ solutions for years.
I started looking at C# about a year ago.
I have just recently implement a fairly complex solution using 5 Windows services and a Windows application to monitor the services using C#. It's LIVE in our production environment and seem quite robust. This is the first 'real' working C# code for me. I wrote the code in about two months. Most of that time was devoted to issue to solve the 'problem'... not a lot to just getting services to work. To me that's a pretty powerful language.
Here are a few of things I have found about C#.
If you want to write a Windows service I would recomend it over C++. The help system includes a great Walkthrough for creating a Windows service.
Implementing timers is very easy.
Access to the Windows event logs is very easy.
While I am still experimenting with .NET ASP you can use C# as code behind for those pages allowing you to deal with events on a web page with events in a Windows application.
So there are something that are easier in C# and some new things like code behind for ASP web pages that I don't think you can do in C++.
Others might point out other features... but if you are interested in these areas you really should look at C#.
|
|
|
|
|
Much thanks! Very helpful!
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
Hi, I have programmed a program that shows information about windows services and can stop/start it. And when I compile the program in DEBUG mode the program works perfectly but not in release. ( I use a lot of C code in my MFC vc++ program)
Please Help me..
|
|
|
|