|
Hi Steve,
I am confused. Static linking? Static linking has nothing to do with DLL, just build a statuc lib and link with it. Also has nothing to do with refer by name or by ordinal.
Stephen Hewitt wrote: statically linking
regards,
George
|
|
|
|
|
There are two ways to use functions in a DLL:
1. Link to the import library of the DLL and the OS takes case of all the details. This is called static linking and is what the examples I've shown have been doing.
2. Link dynamically using LoadLibrary and GetProcAddress .
Steve
|
|
|
|
|
Thanks for your help, Steve!
I will try by myself how to use refer by ordinal technique. I think I only need to add a .DEF file to the DLL project and no need to change anything else in EXE project and DLL project.
regards,
George
|
|
|
|
|
Good day. I have a question about how to capture escape and enter key window message in Win32.
Normally in MFC, I will use PreTranslateMessage like below to capture enter and escape key...
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN) {
if (pMsg->wParam==VK_ESCAPE || pMsg->wParam==VK_RETURN || pMsg->wParam==VK_CANCEL) {
return FALSE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
But somehow it seems that enter key and escape key cannot be captured in Win32 when I waiting for WM_KEYDOWN window message like below:
int CALLBACK TestDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message) {
case WM_KEYDOWN:
switch (wParam) {
case VK_ESCAPE:
MessageBox(NULL, "VK_ESCAPE", "WM_KEYDOWN", MB_OK);
break;
case VK_RETURN:
MessageBox(NULL, "VK_RETURN", "WM_KEYDOWN", MB_OK);
break;
}
break;
}
}
Please help me. Is there anything I haven't done to make my code work?
|
|
|
|
|
I can suggest you 2 approach now,
1) use WM_COMMAND (wparam = IDOK for Enter key, and wparam = IDCANCEL for ESC key) and use different Dlg ID for OK and CANCEL key if your dialog has one.
2) in the main message loop put a route for your pretranslate function
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
BOOL bTranslate = TRUE;
if (msg.hwnd is your dialog window)
{
bTranslate = pretranslate();
}
if (bTranslate)
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
I didn't tried please try and may us know
|
|
|
|
|
Hi,
You can also try SetWindowsHookEx API.
----
Catherine Sea
Dynamsoft Corporation
www.dynamsoft.com
the leading developer of version control and issue tracking software
|
|
|
|
|
Hello everyone,
Just wondering how COM implementation uses keyword interface without compile error, for a normal C++ project, if we use keyword interface, there will be compile error.
interface IFoo {
int func() = 0;
};
Compile error:
--------------------
d:\visual studio 2008\projects\test_virtual1\test_virtual1\main2.cpp(1) : error C2146: syntax error : missing ';' before identifier 'IFoo'
d:\visual studio 2008\projects\test_virtual1\test_virtual1\main2.cpp(1) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\visual studio 2008\projects\test_virtual1\test_virtual1\main2.cpp(1) : error C2470: 'IFoo' : looks like a function definition, but there is no parameter list; skipping apparent body
--------------------
Any ideas?
thanks in advance,
George
|
|
|
|
|
The following can be found in the <basetyps.h> header:
#define interface struct
Steve
|
|
|
|
|
Thanks Steve,
My question is answered.
regards,
George
|
|
|
|
|
Hi,
I recently wrote a wrapper class around the WINAPI windowing system. This object creates a thread which calls GetMessage in a loop, as you do when creating a window. However, I soon noticed that as soon as I instantiated one of these windows, my processor meter would skyrocket and my system would slow down. I figured the canvas was the problem.
Just recently, I replaced the first line of my WinMain with "while(1);" and the same thing happens. So my program effectively reads
<br />
int WINAPI WinMain (HINSTANCE hThis, HINSTANCE hPrev, LPSTR lpszArg, int nCShow){<br />
while(1);<br />
return 0;<br />
}<br />
and it needs about 70% of the processor to do it. Can anybody explain what is going on here? Why should the scheduler be giving this process so much CPU time?
Thanks
-Greg
|
|
|
|
|
gpascale wrote: Why should the scheduler be giving this process so much CPU time?
Why shouldn't it? It's not the scheduler's job to say "that's a dumb process". It's the scheduler's job to give you as much time to do silly things in as it can. For all it knows, you're doing some really clever complex protein folding program to save mankind from the perils of cancer.
while (1);
may not cure cancer, but it doesn't go into any wait routines (like WaitForXEvent or GetMessage etc) to signal to the scheduler that you're done for the moment.
When you say you create a thread, do you mean the main thread, or a second one? And does GetMessage block, or fall straight out with an error message?
Iain.
|
|
|
|
|
Right. I get that.
The thing is that I would expect something like GetMessage() to do something more intelligent than spinlock while it waits for a message. Namely, I would expect it to go to sleep and be woken up when a message is sent. If this isn't the case, then how can you write a windowed application without using an absurd amount of CPU?
When I say create a thread, I mean my window class creates a thread whose job is to call GetMessage in a loop, so I can do other things in my main thread.
Thanks,
-Greg
|
|
|
|
|
...or are you using PeekMessage() instead of GetMessage() in your message loop...Bad
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Nope. PeekMessage doesn't block, does it? I definitely want to block.
|
|
|
|
|
Heh. I guess I should have read your actually question....
I'm surprised your while loop only got 70% of the CPU...it
pegs one of my CPUs to nearly 100%
Busy loops are bad in Windows!!!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
You're a legend
There's a post on the microsoft.public.vc.language from a
Microsoft employee that states there's evidence that you are
a BOT because of the way you post to so many newsgroups
simultaneously.
Next time you're here, we'll throw water on you to see if you short-circuit...
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
|
Hey Johannes,
Long time no see!
It's interesting....the community is still discussing George...
They're starting to convince me he's not real...
The machines....they're taking over...
Cheers,
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
OMG poor toxxct, fighting against the machine!
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
!!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Of course I think he's lucky that toxxct isnt here.
|
|
|
|
|
|
Mark Salsbery wrote: there's evidence that you are
a BOT
I don't believe humans are scientifically advanced enough to create a BOT that is that dense.
led mike
|
|
|
|
|
Wow I saw his questions on the newsgroups(google) and other forums one thing was iinteresting for me I used of google for search about a problem but first link was George_George (of course I respect to George_George ).
|
|
|
|