|
Hi Mark,
I searched the web during the weekend and now understand the MFC
startup mechanism better (how the messaging in ATL works, however,
is still not clear to me). But when I include the MFC windowing stuff
via afxwin.h, the WinMain() function gets also included (after some
ways around: afxwin.h -> afx.h -> afxver_.h -> afxv_w32.h -> windows.h
->winbase.h). So this collides with the _tWinmain definition (_tWinMain
is equal to WinMain, as defined in tchar.h which is included via
afxv_32.h after windows.h). That is, when following the MFC architec-
ture I really should kick off the own _tWinMain definition?
The approach you mentioned sounds promising as it seems to correspond
to the approach in the Microsoft support link you re-mentioned.
So the place to multiplex the messages between the MFC and the ATL
objects in my application seems to be the PreTranslateMessage()
function. So I don't have to override PreTranslateMessage()? Wouldn't
it be sufficient to override PreTranslateMessage instead of the
procedure you proposed? Why do I have to first override CWinApp::Run()
which calls the ATL message loop (how should I do that?) which in
turn calls PreTranslateMessage()? Why this zig-zag-course? What should
I do in the ATL message loop? - Only the call to PreTranslateMessage?
Or is there more to be done? So the way becomes clearer now, although
not all details are clear to me already.
Would be great if you could answer and maybe drop a little example
code so I get the picture.
Best regards,
Peter.
|
|
|
|
|
I have search, read, and tried a lot of directions and finally got a sample that works. I'm posting it here hoping to receive feedback, i cannot oversee it all and this code is only running for a couple of hours now....
One explicit wish that i had is that i do not want to initialize MFC nor show a gui when the ATL Local COM server is only processing commandline arguments (like regserver/unregserver).
Code:
// TestStub.cpp : Implementation of WinMain
#include "stdafx.h"
#include "resource.h"
#include "TestStub.h"
#include "TestDlg.h"
//
// The MFC Module
//
class CTestStubApp : public CWinApp
{
public:
// Overrides
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
DECLARE_MESSAGE_MAP()
};
BOOL CTestStubApp::InitInstance()
{
CWinApp::InitInstance();
AfxEnableControlContainer();
//Create a modeless dialog
m_pMainWnd = new CTest();
dynamic_cast<ctest*>(m_pMainWnd)->Create(IDD_TEST, 0);
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
m_pMainWnd->SetFocus();
return TRUE;
}
int CTestStubApp::ExitInstance()
{
//Cleanup
delete m_pMainWnd;
m_pMainWnd = 0;
return CWinApp::ExitInstance();
}
int CTestStubApp::Run()
{
//Do not invoke MFC CWinApp::Run(), messages for MFC are handled through the ATL message handler (RunMessageLoop)
//CWinApp::Run()
return 0;
}
BEGIN_MESSAGE_MAP(CTestStubApp, CWinApp)
END_MESSAGE_MAP()
CTestStubApp theApp;
//
// The ATL Module
//
class CTestStubModule
: public CAtlExeModuleT<cteststubmodule>
{
public :
DECLARE_LIBID(LIBID_TestStubLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_TestSTUB, "{45383526-A2CD-4CA4-9170-AE3DBF5EFB8E}")
HRESULT PreMessageLoop(int nShowCmd) throw();
void RunMessageLoop() throw();
HRESULT PostMessageLoop() throw();
};
HRESULT CTestStubModule::PreMessageLoop(int nShowCmd) throw()
{
//Initialize the MFC module
theApp.InitInstance();
return CAtlExeModuleT<cteststubmodule>::PreMessageLoop(nShowCmd);
}
void CTestStubModule::RunMessageLoop() throw()
{
MSG msg;
while (GetMessage(&msg, 0, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
//Route msg to MFC
theApp.PreTranslateMessage(&msg);
}
}
HRESULT CTestStubModule::PostMessageLoop() throw()
{
//Deinitialize the MFC module
theApp.ExitInstance();
return CAtlExeModuleT<cteststubmodule>::PostMessageLoop();
}
CTestStubModule _AtlModule;
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)
{
//Initialize the MFC library
AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nShowCmd);
return _AtlModule.WinMain(nShowCmd);
}
Some keywords for searchengines on this topic:
ATL, local COM server, CAtlExeModuleT, AfxWinInit, RunMessageLoop, AfxGetResourceHandle assert
|
|
|
|
|
Hello
I need to use a ddk and used aall wizard of ddk
i just could include ntddk.h but
when include other file like video.h it give me
many error.
thanks
|
|
|
|
|
in my expereince you can't
you can use Visual Studio (any edition) as the IDE but when it comes to building you need to use the DDK builders for your target platform.
i've been doing alot with the DDK of late and i only use VS05 as my IDE (very limited IDE doesnt link to all ddk functions)
you may be able to include all the header/libaray files but you will first need to remove the SDK references as the DDK and SDK have some files of the same name but different uses (they both cant be used at the same time).
i havent done that however as it would be a pain to keep swopping between them.
|
|
|
|
|
Hi,
There is a project at the following url showing how to sort the images in terms of similarity with the selected reference image using CIBR method .
http://www.codeproject.com/bitmap/cbir.asp
But the input image in this case is .jpg image.
How can we modify this project so that it can work for .bmp images as input also.Is CIBR method equally applicable to .bmp images also.
Regards
|
|
|
|
|
Maynka wrote: How can we modify this project so that it can work for .bmp images as input also.
You learn and understand how the image classes used in the project work and figure it out.
Maynka wrote: Is CIBR method equally applicable to .bmp images also.
I don't know since I have no knowledge of CIBR method, but if it were my project I would use Google and learn and understand CIBR so I would "know" what the heck I was doing in my own freakin project. *sigh*
|
|
|
|
|
You made me chuckle
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Jim Crafton wrote: You made me chuckle
Now if only we could make some of these developers "think".
|
|
|
|
|
led mike wrote: Now if only we could make some of these developers "think".
That feature is not available until v2.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
YOu almost killed me.... I was chewing
|
|
|
|
|
Did you try to modify? if yes whats the result?
|
|
|
|
|
Has anyone had the courage to install the just released VC Beta2 on a machine with 2003,2005 installed (XP SP2)?
Does it conflict/destabilaze the other VS installs?
We are working on a project for release in the spring, would like to have the projects in 2008, so we can release it on 2008 at that time.
Bill in PA/USA
|
|
|
|
|
install VMWare or Virtual PC an make your test...
i'm sure you can do it
|
|
|
|
|
If you don't want to go the VM route, just install it!
Since VS 2003, multiple versions of VS have peacefully coexisted on my machines.
Always backup critical data - I assume no responsibility.
I haven't heard of any problems so far.
Good luck!
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Why would you want to install beta software from MS on your production box? I personally see no compelling reason.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Dear All
It it possible to use run time class in a dynamically linked DLL.
Regards
Monhi
|
|
|
|
|
Dear All
I use one RunTime Class in my project.
how can I delete or suspend its operation.
I use this RunTime Class in one DLL.
But when I want to close the dll I receive one exception error.
Regards
Mahdi
|
|
|
|
|
I just have to ask...
What the heck are you talking about?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
|
Mark Salsbery wrote: What the heck are you talking about?
Inspired by toxcct... .. Excellent
|
|
|
|
|
|
I've been using this since lately! It got switched from "Marc" to "Mark" . Btw, when I issued a tender for a new sig, there were lots of contenders.. Had a hard time selecting just one. And the good news is that 75% of them were from the Salsbery Group.
|
|
|
|
|
LOL You spleled my last name wrong
It was so funny because I seem to ignore signatures (subconsciously) and I saw that out of "the corner of my eye".
Taken out of context of the original conversation just made it more funny LOL!
Cheers VuNic!
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
"Typo" is the damned signature for me. I carry it wherever I go. Anywya Cheers
|
|
|
|