|
>>It would certainly help if you'd check return codes from Create and Add.<<
Ahh yes, I should've checked those. Create returns 1 for success, which is expected. Oddly enough however, Add returns -1 no matter what I do, even though it seems to succeed. According to MSDN it should be returning the zero-based index of the first new image if successful...odd.
>>And, you could be more specific about "doesn't work" part - there's nothing on the screen or you have problem with transparency.<<
Ah, right. Sorry about that. Yeah, they were drawing fine, just not using any transparency.
Well anyway, I was finally able to get it to work.....or at least kind of. As it turns out, I had mistaken what exactly a mask bitmap means. I thought that it meant it allowed for a nice 256 levels of alpha transparency masking. Instead, it appears to really work as an on/off mask. Apparently the transparent areas in my mask bitmaps were something like 253, 253, 253 and thus it saw them as opaque. It looks like 255,255,255 is transparent and anything else is opaque.
Unfortunately, that's not what I was after. Does anyone happen to know of a nice(and efficient!) way to do true variable transparency drawing?
-John
"Ask me about my vow of silence"
|
|
|
|
|
Hi, I'm writing application for PDA to communicate with a PC server.
After the dial-up connection is established, i purposely disconnect
the connection, but my program can't detect it and just happily tries
to send/receive data. I even suspect that recv() never returns after
connection is gone. So my questions are: how to detect whether
network is available(i think IE does a good job)? and is it true that
recv() can't return when network is gone? if so, how to recover?
Thanks a lot!!!
Wenrich
|
|
|
|
|
:(Can you tell me how to vectorize a bitmap,thanks!
Beth B.Yang
|
|
|
|
|
only this ? anything else ? it's no small feat.
I suggest you look for the catmull-rom algo. in the book "computer graphics :principles and practice" by vandam, foley, feiner, hughes.
Catmull is used to fit points onto a curve, for example, when drawing with a mouse, or a graphic pen, use the points to generate a curve.
but first you must filter out the bitmap, with combinations of contrast, edge detection, and other filters like that.
Max.
|
|
|
|
|
Thank you for your help
What I am doing is sharpen the bitmap edge and save it as vector format.Which may involve edge detect and image partition,and also the bitmap vectorize.Hopes your help.
Thank you
|
|
|
|
|
Hi Folks
Re: ADO.NET : SqlDataReader : I need to assign retrieved value to C++ variable
I have found the source of the problem expressed in the thread "ADO.NET : SqlDataReader : I need to assign retrieved value to C++ variable":
http://www.codeproject.com/script/comments/forums.asp?forumid=3785#xx309754xx
but do not yet know why it occurs or how I can fix it.
The problem arises with the /clr compiler setting.
Here is the code to illustrate this:
/////////////////////////////////////////////////////////
#include <stdafx.h>
#include <cstdlib>
#include "try_ADONET.h"
//#using <mscorlib.dll>
//#using <system.dll>
//#using <system.data.dll> // This is required for the ADO.NET Provider
using namespace std;
//using namespace System;
int Main()
{
CString busNumberSQL[2];
CString bus = "Hello";
busNumberSQL[1] = bus;
return 0;
}
////////////////////////////////////////////////////////
Without the /clr setting the array of CString busNumberSQL[2] is correctly contructed as is CString bus and the line
busNumberSQL[1] = bus;
works as expected. This can be seen by putting a breakpoint in at
return 0;
and seeing the variables in a Watch. Copy the expanded Watch details (Name, Value & Type) to an EXCEL sheet.
..................
Next, add the compiler switch /clr and rerun the code.
CString bus is constructed correctly BUT something weird happens in the construction of CString busNumberSQL[2].
Now,
busNumberSQL[1] = bus;
results in the address of bus as an integer being assigned to busNumberSQL[1], and look at the Watch details!!
Copy the expanded Watch details (Name, Value & Type) to an EXCEL sheet
Name: busNumberSQL; Value: {Length=2}; Type: ATL::CStringT<char,strtraitmfc<char,atl::chtraitscrt<char> > >[] ...(Note no dimension at end compared to the "no /clr" case.
Next Watch line: [0] 2083454756 __int32
Next Watch line: [1] 3103464 __int32
My conclusion is that busNumberSQL[2] is not an array of CString.
Of course, I need the /clr in order to use ADO.NET!
It seems as though a CString works, but a CString array for some (unknown) cannot even be defined.
Do you have any light for me? (I have not got into your previous post yet on Marshall)
Best regards
Doug.
(In case you are wondering I am very much a beginner with C++ and .NET)
Doug
|
|
|
|
|
|
I just installed the Platform SDK (Aug 2002) on my system (Win2000 SP3) and have pointed VC++ (still using 6.0, I'm afraid!) to it. My build dies because a source file references ::SHAutoComplete() .
I get an "undefined function" error, which makes sense because my shlwapi.h doesn't contain a prototype for the function, inspite of the fact that the Platform SDK and MSDN docs both say I need to #include shlwapi.h and link with shlwapi.dll . I'm using shlwapi.dll version 6.0.2800.1106, which exceeds the 5.0 minimum requirement.
What am I doing wrong?
A CP article by Chris Losinger wraps ::SHAutoComplete() by dynamically loading its address from shlwapi.dll , but it seems I shouldn't have to do this, since the code did (supposedly) compile at one point (on someone else's machine). I'm off to find an alternate shlwapi.h ...
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
i find that function on shlwapi.h, i have too the sdk from august. its in the line 1236.
LWSTDAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags);
i dont know if this can help you.
|
|
|
|
|
#define _WIN32_IE 0x0500 before all your #includes in stdafx.h. This lets you use IE 5 features
--Mike--
"I'd rather you just give me a fish today, because even if you teach me how to fish, I won't do it. I'm lazy." -- Nish
Just released - 1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Thanks guys, I found it in the latest version of shlwapi.h , which interestingly enough, didn't seem to get installed when I installed the Platform SDK (core components and MDAC only).
Thanks for your replies!
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Does inline member functions still increase performance ? doesn't the compiler optimize this for us now ?
|
|
|
|
|
inline is an indication to the compiler that it can inline a function, but it is up to the compiler whether the inlining takes place or not. If the compiler is smart eonugh, it can decide not to inline an inline function if it deems it inappropriate (the code is too big, the functions is recursive, etc.), although you shouldn't rely on the compiler wisdom with respect to this subject and happily prefix inline to every function. So, choose carefully what functions you decide to declare as inline .
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Inlining absolutely improves performance.
I wrote a program that analyzes satellite switch ring states (we're talking about billions to trillions of possible states here), and inlining improved the algorithm efficiency by 25%.
Turn off incremental linking and "debug and continue", as this injects an additional JMP instruction for every function in your code (a layer of abstraction that makes it easier to patch in new code).
Read everything you can find about the compiler's optimization switches. Some of these are not intuitive, some of them conflict with others. Look at the differences at the assembly language level.
Finally, experience has shown me that I'm hardly ever right about where I think the program is slowing down (and I think I'm a darn good programmer, especially knowing assembly language and being able to root around at that level). Use a code profiler or add profiling in to your code yourself!
Marc
|
|
|
|
|
Ok, is the standard heap manager thingy able to cope with a fragmented heap?
An intelligent heap manager might add a performance hit, but be able to deal with a fragmented heap without failing completely.
Do I have to write my own to get this functionality?
Basically, we have an object cache in our code. When memory gets tight, we throw away some of the cached data. At some point in the future, the new operator throws an exception saying no memory available despite us having at least 1.5G available (big machine). Does this make sense?
J
|
|
|
|
|
Heap fragmentation is a problem.
You can help the heap by allocating data of the same size (make your objects the same size).
I use additional heaps for caching data created with CreateHeap API function which I later destroy using DestroyHeap and create a new one. I use it not for objects, but you can overload new/delete operators to work with the additional heap.
Pavel
Sonork 100.15206
|
|
|
|
|
J Hale wrote:
When memory gets tight, we throw away some of the cached data. At some point in the future, the new operator throws an exception saying no memory available despite us having at least 1.5G available (big machine).
Well, if you mean delete/free by 'throwing away some of the cached data' --and-- next allocation request has the size equal or less to size of data thrown away, then your program should be able to allocate memory without problem.
It either a bug in VC heap manager (which calls OS heap functions in Win2K) or problem with your code overwriting heap info blocks.
Tomasz Sowinski -- http://www.shooltz.com
*** Purgamentum init, exit purgamentum ***
|
|
|
|
|
As I have learned in the old days, it is impossible to have a CALLBACK within a class, this because of the "this" pointer. I usually wrote a static version, which redirected to the "real" function.
Now I've come across another way to implement it using Assembly. However, I don't know how to accomplish this, and though I understand Assembly quite well, this is just something I can't work out. (Understanding is something else as doing.)
Sjoerd van Leent
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
Look at the CWndProcThunk class accomplishes this in ATL. That should answer your questions for both x86 and Alpha implementations of this.
Good Luck
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
That is a good point, making it compatible for both x86 and Alpha platforms.
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
Although your thunk solution seems fine to me, if you're really wanting to pass a non-static member function as a callback, in some cases you can, if in a wildly non-portable manner. In this thread[^] I explain the method.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Well, the problem rests that I want to interact with the Windows API, so I don't think the API let's me do this (though it is a beauty) .
Sjoerd van Leent
LPCTSTR Dutch = TEXT("Double Dutch ");
|
|
|
|
|
Greetings...
My application createas .ini file to store some data. I have installer which creates a shortcuts to the .exe the Program Files directory and creates two icons in the start menu and in the desktop.
When I run the application through the desktop shortcut, the .ini file is getting created in the Program Files directory which is what I expect. But when I run the application from the Start menu shortcut, the .ini is getting created in the Start Menu diorectory which is causing the .ini file to be also shown in the Start Menu, which I dont want.
In my application I am using the following method which I belive is wrong -
CreateFile ( "Application.ini", ........ );
How can I make sure that the ini is created in the directory of the program and not anywhere ?
Thanks in advance.
Rgds
Ritesh
|
|
|
|
|
Try with ".\\Application.ini" .
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
It sounds like your two shortcuts are using different 'Start it' folders. (Look at the properties of the shortcuts) You can either make sure that both shortcuts use the same folder, or you can use an absolute path in your program to access the ini file.
as long as I live it will be fine / there's nothing what I can do / the world will die and so do I / so why should I take care 'Take Care' Funker Vogt
|
|
|
|