|
Brendan O`Connor wrote:
Lastly,does mixing STL and MFC cause any exceptions?Is it good to mix them?
Since the other questions have been answered, I will add a little tidbit to your last question. Since you are talking about exposing/exporting classes from DLLs, you should be aware that exposing/exporting STL collections across DLL boundaries may cause you problems, due to the way that (some) STL classes use static members.
These STL classes that will have problems (as well as some workarounds) are detailed in the MSDN Knowledge Base.
Note that under some situations, the collections will seem to work fine for a while, and then may just start to fail for no obvious reason. Because of that simple fact, never assume that "it works" is a reason to beleve that "it works well", or "it's correct".
(IOW, never "go with" something just because "it works", unless you can explain why it works.)
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
James R. Twine wrote:
IOW, never "go with" something just because "it works", unless you can explain why it works
How many users of MFC and STL can explain how they work?
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Tomasz Sowinski wrote:
How many users of MFC and STL can explain how they work?
I believe you should read my comments again; I wrote: "unless you can explain why it works". Why something works is much different than How something works. For example, I can briefly explain why a plane is a better choice for getting to Japan than a car is, without having to get into properties of lift or how an piston-based ICE works.
And, all of the genuinely competent developers that I know can explain how MFC's CWnd -based classes work, how the handle lookups are done, the situations when CWnd::GetDlgItem(...) will return a pointer to a "real" object, and when it will just return a pointer to a temporary CTempWnd object instead, why some care needs to be taken when using these classes across threads, etc, which covers the how quite nicely.
I would have to guess that most of the people answering questions here could do the same as well, or at least know their limitations, otherwise they risk giving out incorrect information to others... It would be very depressing to find out that this was not true.
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
Did you have any further issues?
Peace!
-=- James.
"Some People Know How To Drive, Others Just Know How To Operate A Car."
(Try Check Favorites Sometime!)
|
|
|
|
|
No - you've made your point clear.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Hi!
I can't build with VC++ 7.0 the project that use DAO. The VC++ 6.0 build correctly the same project. I receive the following error message:
fatal error LNK1120: 1 unresolved externals
"public: class ATL::CStringT > > __thiscall CdbLastOLEError::GetDescription(void)"
Do you now somebody the resolution?
Thanks
Feri
|
|
|
|
|
Okay
I finally found some samples on MSDN that show how we can save an bitmap from an HBITMAP
The problem is it's saving it in 24 bits (
Is there anyway that I can change the bits/pixel setting of my DC?
Or say once I have the bitmap ready in memory, is there anyway by which I can change it from a 24 bit bitmap to a 1 bit bitmap???
Regards
Nish
p.s. only GDI, no GDI+
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
Well, you can always BitBlt from 24-bit to 1-bit memory DC. But quality will be totally unacceptable. You should perform some dithering (Floyd-Steinberg error diffusion, perhaps).
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Tomasz Sowinski wrote:
Well, you can always BitBlt from 24-bit to 1-bit memory DC. But quality will be totally unacceptable. You should perform some dithering (Floyd-Steinberg error diffusion, perhaps).
Quality is not a problem. The bitmap consists of just black and white.
I draw it on my CView using *blush* SetPixel
Here is the code I am using :-
HDC hDC;
hDC = ::GetDC(m_hWnd);
HDC hMemDC = CreateCompatibleDC(hDC);
RECT r;
::GetClientRect(m_hWnd,&r);
SIZE size;
size.cx = r.right-r.left;
size.cy = r.bottom-r.top;
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, size.cx, size.cy);
if (hBitmap)
{
HBITMAP hOld = (HBITMAP) SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, size.cx, size.cy, hDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hOld);
if(m_hBitmap)
DeleteObject(m_hBitmap);
m_hBitmap = hBitmap;
DeleteDC(hMemDC);
::ReleaseDC(NULL, hDC);
}
I guess I should change my CreateCompatibleDC to #CreateDCwith1Bits#!
But how do I do that? Is there any GDI function for that?
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
If you replace hDC with hMemDC in a call to CreateCompatibleBitmap, hBitmap will be monochrome. There's some rule which GDI uses when blitting to monochrome DCs - I don't remember exactly, but it may be related to current text color. You'll have to experiment a little bit or browse through MSDN or CP.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Tomasz Sowinski wrote:
If you replace hDC with hMemDC in a call to CreateCompatibleBitmap, hBitmap will be monochrome. There's some rule which GDI uses when blitting to monochrome DCs - I don't remember exactly, but it may be related to current text color. You'll have to experiment a little bit or browse through MSDN or CP.
Well, it created a 1-bit bitmap. But it was all blank
I dunno what kinda stupid logic it used. Basically it was a bitmap with a lot of white and a black signature. I think 99% of the area would have been white. yet I expected it to convert that properly to a 1-bit bitmap
Now what do I do?
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
Nish - Native CPian wrote:
Now what do I do?
Can't you use this SetPixel stuff directly on hMemDC? It would create the same thing. Getting client DC and blitting from it isn't the best way - there may be some topmost window (WinAmp, for example) floating above, etc.
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
Set the background color of the source DC (the 24 bit bitmap) to the color of the color you want to be black in your monochrome bitmap.
::SetBkColor (hdcSrc, RGB (0, 0, 0));
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?
|
|
|
|
|
Hi!
I try to put MicrosoftAccessDriver version 4.00.6019.00 on Windows98 and recieve a message
The setup routines for Microsoft Access Driver ODBC driver could not be loaded due to system error code 1157.
Tell me,please,what is it means.
May be that i can not put driver with last version on Windows98 and Windows95?
Help me,please!!!
|
|
|
|
|
Check article Q260558 on support.microsoft.com.
|
|
|
|
|
Hey,
So this is what I want to do: I work for a video game company, and I am working on the installer for the game. What they want is a graphically attracting version of the installer made with installShield (you know, weapons, fires, movies, etc.). I own installShield professional 5.5, and it allows you to display movies in the background, but I want to actually customize my own dialog boxes, while still keeping the functionality of installShield. I tried to use the tutorial about adding DLL's to installShield, but I do not know how to make an MSI file in installShield, or much less what an MSI file is.
Any help would be GREATLY appreciated.
Thanks,
Tali
|
|
|
|
|
MSI stands for MicroSoft Installer. An .msi file is one of the files that go with the new Windows Installer. Check out msdn.microsoft.com for more info.
|
|
|
|
|
As in subject!
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
|
Thanks. If nothing else works out, I'll have to use something like that
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
It should be possible using GDI+ if you can use it. Attach the HBITMAP to an Bitmap object and call Save method. There is a way to select the format in which you want to save.
|
|
|
|
|
Sadly I am using VC++ 6 and I don't have the new PSDK either
Sucks to be me
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
i know where you can get a nice, cheap, commercial solution
-c
Cheap oil. It's worth it!
|
|
|
|
|
AFAIK, Nish's bosses aren't going to buy any non-Java tools...
Tomasz Sowinski -- http://www.shooltz.com
- It's for protection - Protection from what? Zee Germans?
|
|
|
|
|
he said he was using VC6, not Java.
-c
Cheap oil. It's worth it!
|
|
|
|