|
SDK API = (Software development kit) Application programming interface (Analogous to CRT in DOS kinda). SDK includes the tools and docs required and API is the standard or the function interfaces.
MFC = Microsoft foundation classes is a framework (Basically a bunch of classes which do what the win32 API does, but more OOP friendly)
WTL/ATL=Windows/Active template library. Basically does what MFC does for windows API, but using template classes instead of C++ classes.
COM/ActiveX = Was an idea M$ had which would allow for code to be modularized (if thats a word ) basically kept in a binary form which any supported language could use (VB, C++, Delphi, etc). In C++ programmers have long since passed around code in source form as C++ classes, however programmers were still still free to mess up code, modify it, etc...not ideal for commercial code your trying to sell. COM objects were designed to fix this, by keeping everything binary...so programmers had to manipulate data members via accessor/mutators like any OO purist would tell you to do. Also you hide the implementation much better than a C++ class...because functions which are meant to be private are not visible to client programmers...only interface functions are(actually it's at programmers discretion).
COM=Component object model...basically it's a standard binary communication mechanism required for code (written in delphi, c/c++, etc) to communicate with ActiveX/COM objects. This gets hard to explain briefly...i'd advise you to read an article or two on the idea/theory behind it...MSDN used to have lots...but i'm not sure if ActiveX/COM is as big of a buzz word as it was a few years ago, since the release of .NET...you'd have to ask someone more familiar with what .NET actually is and does
This is as far as I understand it anyways
I'm drinking triples, seeing double and acting single
|
|
|
|
|
Mine was funnier, even if later. :P
-Blake
|
|
|
|
|
Windows API: The application programming interface (API) exposed by the windows operating system. In Unix terms this would be like the OS system call interface, excepting of course of the fact that the Windows API does everything, rather than having half a dozen different APIs you must code to, like Unix, X, Qt, etc.
Win32: Coined to distinguish between the Windows API exposed by old 16 bit versions of Windows, i.e. Windows 1.0-3.11, and 32 bit versions, i.e. Windows 95-ME and Windows NT 3.1-Windows 2003 Server. Win32 is now a synonym for Windows API since the Win16 API is dead and forgotten.
MFC: Microsoft Foundation Classes - the original application framework that Microsoft first shipped with their C 6.0 compiler. It is old and crufty and designed for C++ without templates or other modern features. It tries hard to force everything into the Model-View-Controller design pattern.
ATL: Active Template Library - named in an era when Microsoft was sticking Active on the front of everything, like ActiveX, ActiveServer, ActiveMovie, ActiveBob. This is a newer library, designed primarily to support writing COM components in C++. It uses the language in a much more modern way than MFC, but doesn't cover nearly the same breadth of functionality. You can bold ATL and MFC together in the same application but it isn't really a great match.
WTL: You missed this one, but it is important. This is a library build on top of ATL that broadens it's scope to make it closer to an application framework. It is much lighter and faster than MFC. It has an amusing history of being supported and then unsupported and then supported by Microsoft.
COM: Component Object Model - This was born as OLE2, but left it's parent in the dust and is the standard binary component specification that virtually all Windows software was based around until .NET arrived on the scene. COM is dead, long live COM.
-Blake
|
|
|
|
|
Thanks
|
|
|
|
|
I am just seeking opinions. It has been more that 15 years since I dealt with these types of issues.
I am looking for a database management tool along the lines of how I vaguely remember LANSA and SIGNON for the AS/400.
Requirements:
1. Supports SEQUEL server, other relational databases nice but not required.
2. Builds Tables and Indexes from models.
3. Provides a front end for defining database triggers.
4. Will generate simple maintenance programs. Add/Delete/Inquire on a per table bases or SQL view.
5. Will provide for an upload process. Let me explain this one. Let’s just say I have a master database, and (standalone) clients periodically (weekly) physically attach to my network. Hopefully the tool would assist in importing changed information from these clients and exporting data to these clients.
Again, I am not asking for your deep analysis, but rather for product suggestions or personal views you may have.
Thank you
|
|
|
|
|
I don't know nothing about C++. I built and addin using VB.NET and got from www.microsoft.com a shim object.
This object has a reference to stdafx.h and stdafx.cpp.
Now I can't compile it, I have an error message that says:
c:\Development\CrossNET\COMAddInShim\stdafx.h(48): error C3506: there is no typelib registered for LIBID '{AC0714F2-3D04-11D1-AE7D-00A0C90F26F4}'
I tried searching the registry to see what this GUID is about, but can't find nothing.
Can someone please help me with this ??
I need to do a deployment tomorrow morning and QA people are waiting for this component to be compiled.
Thanks
Free your mind...
|
|
|
|
|
Perhaps you should register the type library ? DO you *have* the type library ? Know what a type library is ?
I'd suggest that 'there is no typelib registered' would be a good sign that you're not gonna find this GUID in the registry. That's the problem.
Why link to www.microsoft.com but not the object ? Where did you get it ? What is it going to do for you ?
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
How do I make them disappear...?
I've tried:
cs.dwStyles = ~ WS_VSCROLL;
But it causes the framework to not create a document or something like that...
Any ideas how I can go abouts doing this...?
I'm sure it's a CMDIChildWnd thats causing the scrollbars to appear because when I add scrollbars to embedded view I get double scrollbars...I also have concluded it's CSplitterWnd thats making scrollbars appear...
Thanks again
I'm drinking triples, seeing double and acting single
|
|
|
|
|
nm...Figure it out...
Cheers
I'm drinking triples, seeing double and acting single
|
|
|
|
|
Haven't you tried
cs.dwStyles ~= WS_VSCROLL;
instead of
cs.dwStyles = ~ WS_VSCROLL;
Bunburry
|
|
|
|
|
This might seem like a trival question, but does a dll or static lib generate faster code? My guess would be static lib, but I really do not know much about dll's. The reason that I ask is that I am writing a bunch of realtime code and I need to make things as fast as possible.
Also, how does one choose when to use a dll or a lib?
Thanks
|
|
|
|
|
|
I think that would be compiler and programmer dependant.
You as the programmer have most control over code speed...
However lib's are probably quicker because everything is linked at compile time and theres no additional over head for linking to an external library at runtime.
Other than that:
int b=0;
for(int i=0; i<10; i++)
b=(b*i)+1;
I would think would compile into the same instructions regardless of output file being DLL or LIB
mwhannan wrote:
Also, how does one choose when to use a dll or a lib?
LIB's are usually passed around when you as the programmer wants differ modules of functionality, but in the finalized product you want one single exe...DLL's are used for keeping final product in seperate modules...making it easy to upgrade parts of your app but only updating a single file...
One is runtime and the other is compile time linkage.
Cheers
I'm drinking triples, seeing double and acting single
|
|
|
|
|
"However lib's are probably quicker because everything is linked at compile time and theres no additional over head for linking to an external library at runtime."
That was what I was thinking. Does "at run time" mean that it is linked when the program first starts up, or it can happen any time during program execution?
"LIB's are usually passed around when you as the programmer wants differ modules of functionality, but in the finalized product you want one single exe...DLL's are used for keeping final product in seperate modules...making it easy to upgrade parts of your app but only updating a single file..."
Thanks, that help clear some things up.
|
|
|
|
|
mwhannan wrote:
Does "at run time" mean that it is linked when the program first starts up, or it can happen any time during program execution?
Can be either...basically at programmers preference instead of complier
Cheers
I'm drinking triples, seeing double and acting single
|
|
|
|
|
"Can be either...basically at programmers preference instead of complier "
How does that work? Sorry if these are annoying questions.
|
|
|
|
|
The dll is loaded by the client whenever the LoadLibrary() API is invoked by the client.
|
|
|
|
|
You missed another distinction : static link dll's (bound at compile time) and dynamic link dll's (loaded at run time).
Regardless, the time differences between the 3 are generally orders of magnitude less than the time an actual function takes to run.
There are also other effects that are out of the control of the application that would make measuring such differences difficult. e.g. just because the static lib is linked into the exe doesn't mean the code is in physical memory - it may be paged out, whereas a dll that's shared amongst several (running) programs may have a better chance of having it's code in physical memory at any given time.
...cmk
Save the whales - collect the whole set
|
|
|
|
|
Question? I wrote a simple code to print using MFC example from a dialog. Works great on Window XP but install the app on a Windows 200 Server machine doesnt print the text. It however, performs all the print job with out failing. Any ideas why this is happening. Does XP perform some other task behind the sence that Windows 2000 does not? It doesnt seem to contain the font even though i do all set font as shown in the sample page of MFC library.
|
|
|
|
|
It does now xp perform some other task behind the sence that windows 2000 does not .
|
|
|
|
|
so any solution to solve this problem
how does printing normaly work for the windows 2000
i use the standard OnPreaprePrint();
OnBeginPrint();
OnPrint()
OnDraw(){
in the draw i set CFont font; etc
pDC->SetFont(blah)
}
OnEndPrint();
Is this different when printing on Windows 2000
|
|
|
|
|
Nope. I have MFC based apps which print this way running identically on Win95,NT,2K and XP.
Some things to try;
pause the printer then try and print to it. This will let you see if the print job is even created.
put trace code in your OnPrint (If you don't have one, create one that just calls OnDraw like the default OnPrint for CView does.
Best of luck
Steve S
|
|
|
|
|
Does anyone know how to make a CDialog resizable in only 1 direction? i.e., when fwSide == 1.
(FYI: fwSide reference for CDialog::OnSizing())
4 3 5
+-------+
| |
1 | | 2
| |
+-------+
7 6 8
I would really like to disable the resizing arrows when the user tries to resize from any other side but 1.
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
I took care of it in PreTranslateMessage()
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
Do you mind if I tell other people?
|
|
|
|