|
I think instead of:
if(UpdateResource( ..., "IDS_TOTAL", ...) != FALSE)
you should consider:
if(UpdateResource( ..., MAKEINTRESOURCE(IDS_TOTAL), ...))
I hope this works.
|
|
|
|
|
you can see a article from Mr David Crow (i think was resource) of course maybe its not your answer but i think its good for you
whitesky
|
|
|
|
|
|
hi i want to write an application just like PC any where.just confused where to start. i had couple of ideas.
on is that capture the screen as bitmap and send it to another computer that will show it to the user.but dont know where the user had clicked on static bitmap and get all pts.any idea is welcomed
Tasleem Arif
|
|
|
|
|
Checkout http://ultravnc.sourceforge.net/[^].
This is an open source project wich has been very successful. I have been using it for several years now, and it works just fine, especially the latest Ultra version.
To be honest, I don't know why you would want to develop a new project for this, since Ultra VNC works very well.
Rilhas
|
|
|
|
|
ok i will check that.i want to write it bcos to gain knowledge and put some new feature as well.
thanks for the help.i had worked on windows hooks and transfer of bitmap but one problem hit me how to know that in which place of image one had clicked and on the basis of that open that folder/file on other side.
Tasleem Arif
|
|
|
|
|
Hello everyone!
Has anyone ever coded or seen a piece of code that does the exact same thing as the Beep() function in the Kernel32.dll file in the Windows NT family? Maybe some assembly code? I really need this, I really don't like being stuck to half a platform... (Not even a full one, since Win9x isn't supported).
Thanks!
PD: For those of you that don't know about the Beep() function, it takes 2 arguments: frequency (the frequency, if you set it to about 9999 or more, only the dog can hear it ) and duration (how much it lasts).
\|/ Thrift Store Floppy Collection \|/
(Server currently down due to mainteneance, aka comp not detecting monitor and acting weird)
|
|
|
|
|
|
No, I need to be able to specify the frequency and duration... Thanks!
\|/ Thrift Store Floppy Collection \|/
(Server currently down due to mainteneance, aka comp not detecting monitor and acting weird)
|
|
|
|
|
<br />
#include <dos.h><br />
void main()<br />
{<br />
sound(900);
delay(1000);
nosound();
}<br />
You have an apple and me too. We exchange those and We have an apple each.
You have an idea and me too. We exchange those and We have two ideas each.
|
|
|
|
|
ltdos.h ? You sure you spelled that right? Google only yells out 2 results... If you are, for which compiler is that? Is it only for DOS? Anyways, thanks!
\|/ Thrift Store Floppy Collection \|/
(Server currently down due to mainteneance, aka comp not detecting monitor and acting weird)
|
|
|
|
|
It is dos.h not ltdos.h
Regards,
Brahmma
You have an apple and me too. We exchange those and We have an apple each.
You have an idea and me too. We exchange those and We have two ideas each.
|
|
|
|
|
Oh, I see - "<" is "<" in HTML!
Anyways, yeah, that's only for DOS...
Windows Calculator told me I will die at 28.
|
|
|
|
|
Hello everyone,
It is well known that DLL file can be used across different linkers, for example, a DLL created by VC can be linked with a VB application. In my context, I mean implicit linking.
I think without COM, there is no binary file standard. So, if there is no binary standard, how can a VB linker know which function it can invoke, which parameter it should provide and which address the invoked function resides (in order to invoke the function)? -- there must be some binary file level standard, right? besides COM?
I think this issues is solved by providing an accompany lib file with the DLL file in order to let other linker work with the DLL, but I am not sure about the internal reason. We know that an ordinary object file build by one compiler can not be used with other linkers -- but DLL overcomes this point -- because of the lib file?
thanks in advance,
George
|
|
|
|
|
The binary file standard is plain C, and the dll uses an ordinal table IIRC. Works pretty well as long as all you want is C. That's why if you examine, eg, GetProcAddress you do lookups with function names, and the returned pointers are untyped.
Problems with other things such as C++ -- hence the need for COM -- come from (1) no standard name mangling, (2)automatic memory management (allocate mem, constructors, destructors, etc) and needing to know the internals of the class structure, (3) the desire for strong versioning and strong interfaces, (4) exceptions handling (compiler specific again), (5) the fact that C++ isn't particularly object oriented at run time -- all sorts of places need to know the exact details of class layout, so it can't ever change. etc.
Grab a book by Don Cox called _Essential COM_
earl
|
|
|
|
|
Thank you earl,
Maybe I have not made myself understood enought. The purpose of my post is not to discuss COM, but to make clear why DLL can be used across linkers (for example, DLL created by VC can be linked in an VB application), while at the same time object file (which is generated by compiler) can not be used across linker (for example, we can not link an obj file generated by VC7 in a VC6 application). Since DLL and obj file are both binary files, why DLL can be used across linker but obj file can not? What is the internal reason?
regards,
George
|
|
|
|
|
DLLs can be used across linkers because everything you need to know is standardized while it isn't in obj files (and isn't in C++, which was the point of the latter bit of my post). You have an ordinal table to find function offsets (run dumpbin /exports on some dll). Combined with the lack of name mangling (at least usually) and the standard calling convention (put in place by __declspec(dllexport), the linker / run time knows what to do.
A dll may or may not have an import library around with automatic thunking code to fix up the lookup table, or you may have to do LoadLibrary / GetProcAddress. Either way, you're mapping function names to addresses.
I'd guess that an obj file is just a bunch of compiled code and the compiler keeps some internal table of function to address mappings (which is what is written to disk and shared via an ordinal table for dlls). In any case, non standard name mangling, various calling conventions, I don't believe (don't really know) that the standard requires any particular code layout, etc, mean they're compiler specific.
Basically, a dll is a bit of stuff added to an obj file to allow it to work across compilers.
HTH, and I'm tired, so it's bedtime.
earl
|
|
|
|
|
Thank you earl!
Let me wish you a good dearm at first. You can continue our discussion tomorrow.
You always mentioned two terms called "ordinal table" and "calling convention" (I know what means calling convention, but I have never used ordinal table before.), and it seems that the reason why DLL can be used across linkers is because DLL has standard "ordinal table" and "calling convention" in your points. Right? I am interested in this point and I am wondering whether you can give me a sample about what is a standard/non-standard "ordinal table" and "calling convention".
BTW: from your reply, I think there should be some standard way to express function look-up table, function prototype, function calling convention, ... all at binary level, right?
regards,
George
|
|
|
|
|
George, there are a variety of calling conventions supported by the x86 platform and the visual studio compiler; it doesn't really matter which you use as long as you are consistent. Because the caller and callee have to agree, MS picked one of them (cdecl, thiscall, stdcall, fastcall) for DLLs and ran with it (__stdcall if I remember correctly).
Here is a dll ordinal table from a random dll from windows\system32
C:\WINDOWS\SYSTEM32>dumpbin /exports oemdspif.dll
Microsoft (R) COFF/PE Dumper Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file oemdspif.dll
File Type: DLL
Section contains the following exports for oemdspif.dll
00000000 characteristics
437413A2 time date stamp Thu Nov 10 21:44:34 2005
0.00 version
1 ordinal base
24 number of functions
24 number of names
ordinal hint RVA name
18 0 00005090 GetCRTCCapabilities
19 1 00005160 GetCRTCConfiguration
2 2 00006090 GetDisplayDeviceCapability
4 3 00003DE0 GetDisplayDeviceMode
3 4 00003CD0 GetDisplayDeviceSwitchCapability
1 5 000036F0 GetDisplayDriverName
21 6 000057C0 GetExtendedDesktopStatus
23 7 00006520 GetLCDI2CBusData
9 8 000047F0 GetLCDRefreshRate
8 9 000046F0 GetLCDRefreshRateCapability
12 A 000061E0 GetPowerState
6 B 000044B0 GetScreenExpansionStatus
16 C 00004EA0 GetStaticPowerState
14 D 00004AC0 GetTVStandard
11 E 000049C0 IsExternalDisplayConnected
20 F 00005300 SetCRTCConfiguration
5 10 00003F40 SetDisplayDeviceMode
22 11 00005850 SetExtendedDesktopStatus
24 12 00006600 SetLCDI2CBusData
10 13 000048E0 SetLCDRefreshRate
13 14 00006360 SetPowerState
7 15 000045D0 SetScreenExpansionStatus
17 16 00004F90 SetStaticPowerState
15 17 00004C70 SetTVStandard
Summary
2000 .data
2000 .rdata
1000 .reloc
1000 .rsrc
C000 .text
C:\WINDOWS\SYSTEM32>
dumpbin comes with most versions of visual studio; it should also be available somewhere online, though VC2005 Express is free. The RVA is probably some sort of relocatable address or some such; there are obviously some complications to "just load code into memory and run it", but they're just details. This is just an ordinal table generated so the linker / runtime can figure out where functions are in the dll.
As for C, this is pretty much the standard way (on win32) to express the lookup table, etc. C++ presents other issues (name mangling, memory management, etc), which is why we have COM, as well as the desire for things like interfaces, etc.
But yeah, this C calling convention is spoken by just about everything on windows -- VB, Python, probably perl, etc.
Hope this helps
earl
|
|
|
|
|
Thank you very much earl!
I think in order for an application to work correctly with a dependent DLL, the application should understand the format of the DLL (calling conventions and ordinal tables), right? But who is responsible for interpreting DLL (interpreting the calling conventions and ordinal tables to deal with each exported functions of the DLL) and inserting related exported function address into executable files -- the linker or?
And when DLL file format is interpreted? During link time (with the help of import library .lib file) or during runtime?
regards,
George
-- modified at 4:31 Wednesday 5th July, 2006
|
|
|
|
|
George,
DLLs can be loaded at compile time -- with an import lib that thunks -- or at runtime -- with LoadLibrary and GetProcAddress.
If the latter, then the application calls LoadLibrary to explicitly open a DLL and GetProcAddress to get a function pointer to each function the app wants to call. Dealing with all the stuff required to use a DLL is split between the app and win32.
If DLLs are loaded at compile time, then code is added to the executable before main/WinMain to load the DLLs and initialize all the function pointers.
In either case, code is added to, I believe, the DLL to deal with loading the code into memory, relocating addresses, etc...
earl
|
|
|
|
|
Thank you earl!
In the situation about implicit linking, I think there should be a standard for the .lib (import library) file, so that when linking an application with an DLL, the linker can understand the exported symbols of the DLL by utilizing the import library .lib. For example, VB linker should be able to interpret the content of a .lib file created by VC in order to utilize the DLL generated by VC. Agree?
So, do you know whether there exists such a standard for .lib file?
regards,
George
|
|
|
|
|
Well, when people start getting to the point of generating libraries to be used across languages, most just use COM. Really, as long as you aren't using a DispID interface (or if you provide dual interfaces) there is virtually no overhead.
Alternatively, there are tlbs -- type libraries -- that some languages can use.
http://windowssdk.msdn.microsoft.com/en-us/library/ms221355.aspx
earl
|
|
|
|
|
Thank you earl!
I think you have answered all my question. Could you give me just one or two sentences to summarize why DLL can be used across linkers while obj files can not please?
regards,
George
|
|
|
|
|
how do i display an image using array method in a dialog box?
|
|
|
|
|