|
Doesn't CWinApp::InitInstance return a BOOL ? Just return FALSE....
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
i was just about to try to remove this.. sorry, realized just return false after reading through the generated code, thanks for the help!
-dz
|
|
|
|
|
WM_CLOSE
Mazy
"The path you tread is narrow and the drop is shear and very high,
The ravens all are watching from a vantage point near by,
Apprehension creeping like a choo-train uo your spine,
Will the tightrope reach the end;will the final cuplet rhyme?"Cymbaline-Pink Floyd
|
|
|
|
|
I tried to use the getAttribute method from IHTMLElement interface, but I saw that this method could retrive only the defined attributes (like id, bgcolor) and not my own attributes (like temp, userid)
|
|
|
|
|
Hi
is it possible to create a window from a DLL?
The window shall display some debug output in this window, but I can't get it to work.
This is what I have so far, but it doesn't work
long WINAPI WindowProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hWnd, wMessage, wParam, lParam);
}
void CreateLogWindow()
{
static char szAppName[] = "LogWindow" ;
HWND hWnd;
WNDCLASS WndClass;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc = WindowProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hIcon = 0;
WndClass.hInstance = hInstance;
WndClass.lpszClassName = "Testprogramm";
WndClass.lpszMenuName = NULL;
RegisterClass(&WndClass);
hWnd = CreateWindow(
"LogWindow",
"LogWindow",
WS_CAPTION | WS_THICKFRAME | WS_VISIBLE,
0,
0,
250,
250,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
SetFocus(hWnd);
}
Any help is greatly appreciated
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
If you move this code to .exe, does it work OK?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Inside an .exe it works fine!
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Try setting the hInstance parameter of the WNDCLASS structure to NULL GetModuleHandle(NULL) .
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks, but it doesn't work
modified 12-Sep-18 21:01pm.
|
|
|
|
|
And if you replace also the hInstance occurrence in CreateWindow ?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Same result, no window is created
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Ummm this is getting weird. In which context is CreateLogWindow being called? Does a message pump exist in the calling EXE? Please note that whether CreateLogWindow is inside a DLL or the EXE itself is immaterial from the system point of view (if you used GetModuleHandle(NULL) throughout), so the behavior observed is really odd.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
CreateWindow is called from the DllMain function:
BOOL APIENTRY DllMain( HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved )
{
hInstance = hModule;
if (dwReason == DLL_PROCESS_ATTACH)
{
CreateLogWindow(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
}
return TRUE;
}
And I think the EXE has a message pump since it has a main window.
Probably there is to mention that my Dll is one using the Microsoft Detours libary. Perhaps you know about it. My Dll attaches itself to an exe and thus can interupt Api calls from the main app and modify them.
This way I want to intercept the send() and sendto() functions in order to watch what the apps are sending. The window I want to create shall display the buffer of send() and sendto()
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Could you trace where the error is hapenning? RegisterClass , CreateWindow , everything silently working but no window appears?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I just mixed up two different names for the class in the WNDCLASS style and CreateWindow.
Tim Smith found the error here: http://www.codeproject.com/script/comments/forums.asp?forumid=1647&select=147264#xx147264xx
Thanks anyway
modified 12-Sep-18 21:01pm.
|
|
|
|
|
I'm glad the mistery solved This bears a moral (IMHO): when you said the same code worked inside an EXE, you obviously used some other code that you deemed equivalent (otherwise the same problem persists). Many debugging efforts are lost due to this kind of assumptions.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
You need a DLLMain (entry point) function for the DLL. Here's an example pulled from MSDN...
BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpReserved )
{
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Take the instance param from that function and pass it to your CreateLogWindow() function. Use that instanace in the window's class. This is the done the same way you would use WinMain in an executable.
Also, don't forget to specify the entry point to the linker when compiling the DLL -- this has to be done.
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
<nobr>
Homepage : Feature Article : Sonork = 100.16311
|
|
|
|
|
Well, hInstance HAS the value of hinstDLL.
But what do you mean by
Jeremy Falcon wrote:
don't forget to specify the entry point to the linker when compiling the DLL
?
modified 12-Sep-18 21:01pm.
|
|
|
|
|
The entry point is the starting address of the DLL -- the first of your code that's called. You need to let the linker know about it.
You need a user-defined entry point for the DLL. I believe it defaults to DLLMain, but if your DLL doesn't use that naming you must specify it somehow. I chose using the linker and specify it anyway regardless. I'm crazy like that.
I'm assuming you're using VC6...
Goto project settings.
Link Tab
Category: Output
You'll see an edit box for the Entry-point symbol. Put the name of your entry function in there.
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
<nobr>
Homepage : Feature Article : Sonork = 100.16311
|
|
|
|
|
Ummm...
The class name in WndClass is "Testprogramm" and in CreateWindow it is "LogWindow".
Hopefully that is it.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
Ummm how stupid
I just corrected it and suddenly it works
Thanks a lot!
modified 12-Sep-18 21:01pm.
|
|
|
|
|
So how did you manage to run this code from .exe?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
It think I copy&pasted the code and later changed some strings, but unfortunately not all
really stupid
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Hi Tim! You must be in a fresher mental state than I am, how simple yet elusive. The duck's for you
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
It's amazing how really looking at the code helps. That deserves a doh for me too!
Jeremy L. Falcon
"The One Who Said, 'The One Who Said...'"
<nobr>
Homepage : Feature Article : Sonork = 100.16311
|
|
|
|