|
In your test button handler call
CDialog::OnOK();
Then your dialog will be closed automatically. Actually the CDialog::OnOK() calls UpdateData() to update data from controls to member variables and calls EndDialog() to close the dialog.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Thanks a lot. That was incredibly simple! Thanks again!
|
|
|
|
|
or CDialog::OnCancel if the datas don't have to be saved :P
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
Rating helpfull answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Very true.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Well you can insert a button to your dialog box and insert OnOK() or EndDialog() on this button.
|
|
|
|
|
I know there is BOM that we can get the coded format of a file.
But utf-8 has two format with BOM and without BOM.
How can I get that coded format?
And is there a easy way to get the coded format of a file?
I am in china.
the coded format has utf-8 Unicode ANSI GBK GB2312 BIG5 ...
|
|
|
|
|
Like a pair, for the first field, the value is unique, and the second field, the value is also unique. And I can quickly use one field to find another. Is there such a template class?
|
|
|
|
|
What about a class that contains the datas you need and a CList of it?
Take a look to http://www.codeproject.com/KB/recipes/SmartListII.aspx[^], it may help you.
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
Rating helpfull answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
followait wrote: Like a pair, for the first field, the value is unique, and the second field, the value is also unique. And I can quickly use one field to find another. Is there such a template class?
Since your first field is unique and you want to lookup the second field by using first, map will be the best choice. You can use either CMap or std::map .
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Yes, the bimap[^]
Graham
Librarians rule, Ook!
|
|
|
|
|
I save a CBitmap object to disk with this code :
CDC * pDC = GetDC();
CBitmap Bitmap;
Bitmap.CreateCompatibleBitmap(pDC,screenMaxX, screenMaxY);
Image.Attach(Bitmap);
Image.Save(_T("xxx.bmp"));
but the bitmap I saved was completely black
Some one plz help me
|
|
|
|
|
capint wrote: Bitmap.CreateCompatibleBitmap(pDC,screenMaxX, screenMaxY);
Image.Attach(Bitmap);
this creates only the bitmap object, allocates resources for the bitmap and the color format is compatible with the Device context, but the image it initially contains is blank, you need to fill the image in to the allocated bitmap resource.
I assume you want the image in the Device context then you need to copy the bitmap from dc to this bitmap,
CBitmap Bitmap;
Bitmap.CreateCompatibleBitmap(pDC,screenMaxX, screenMaxY);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&Bitmap);
dcMemory.BitBlt(0, 0, screenMaxX, screenMaxY, pDC,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
|
|
|
|
|
Thanks so much
|
|
|
|
|
|
DirectX9 Surface support alpha-channel and can be loaded from .png file. How can I make them draw with transparency ?
|
|
|
|
|
"A Microsoft® Direct3D® device is a state computer", you need to enable/set the render states for Transparency. see [Alpha Blending State ^] you need to use the D3DRS_ALPHABLENDABLE render state to enable alpha transparency blending and set the blending type.
|
|
|
|
|
from the above link:
The alpha value of a color controls its transparency. Enabling alpha blending allows colors, materials, and textures on a surface to be blended with transparency onto another surface.
In my game, I just need to draw .png images with alpha, the same size they are. I've got a lot of those for drawing a complicated animation. I've got about 650 images.
I find the textures interface unsuitable, because of their creation cost, and the fact they don't natively looked exactly as the images.
So, I'm using D3DxCreateSurfaceFromFile() and later ID3DDevice::StretchRect() to draw on the bacbuffer surface.
It seems to me like the SetRenderState() capabilities do not apply to DirectX9 surfaces. But I do guess there is some way to alpha-blend surfaces because they contain alpha-channel color.
|
|
|
|
|
Hanan888 wrote: The alpha value of a color controls its transparency. Enabling alpha blending allows colors, materials, and textures on a surface to be blended with transparency onto another surface.
have you seen "on a surface" to another surface. without enabling alpha blending state, you are not going to get transparency from Direct 3D, which doesnot do/skips any alpha blending calculation on the device.
Hanan888 wrote: It seems to me like the SetRenderState() capabilities do not apply to DirectX9 surfaces
have you tried?
Hanan888 wrote: So, I'm using D3DxCreateSurfaceFromFile()
AFAIK, D3DxCreateSurfaceFromFile is not dx9 API, may be you are using some wrapper which creates a surface and uses D3DXLoadSurfaceFromFile API.
|
|
|
|
|
Thank you.
Rajkumar R wrote: have you seen "on a surface" to another surface. without enabling alpha blending state, you are not going to get transparency from Direct 3D, which doesnot do/skips any alpha blending calculation on the device.
I think perhaps StretchRect() doesn't go through that processing.
this is what I tried:
pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
pd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCCOLOR);
pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pBackBuf);
pd3dDevice->StretchRect(sourceSurface, pSourceRect, pBackBuf,
pRectOnBackbuffer,D3DTEXF_NONE);
I use surfaces in the A8R8G8B8 format, load from PNG images with alpha-channels.
saw no effect.
This is how I create the source surfaces:
device->CreateOffscreenPlainSurface(width,height, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
&surface, NULL);
Rajkumar R wrote: AFAIK, D3DxCreateSurfaceFromFile is not dx9 API, may be you are using some wrapper which creates a surface and uses D3DXLoadSurfaceFromFile API.
Sorry for the typo, it's D3DXLoadSurfaceFromFile() .
|
|
|
|
|
I think so, StretchRect replaces the surface color values without doing alpha blending, i was thinking on IDirectDrawSurface:Blt which supports that.
I think you need to go to texture only (collection of surface), consider using [ID3DXSprite Interface^] which made ease displaying the 2d textures. to reduce the cost of texture creation, i think you create a single texture with only one level and load surface of that level each time using D3DXLoadSurfaceFromFile, while you can get the surface of the texture level with IDirect3DTexture9::GetSurfaceLevel
|
|
|
|
|
Thanks again for your help.
Rajkumar R wrote: i was thinking on IDirectDrawSurface:Blt which supports that
I don't think DirectDrawSurface support any alpha-blending. It support color-keying - setting a specific color not to be shown. Also, AFAIK DirectDrawSurface cannot be loaded from .PNG file.
It seems I'm gonna use the sprite interface with textures.
AFAIK, all textures must be power of 2 in size which will force me to alter the resource files.
Also, with the many images I have, it's kinda slow and I'm looking for anything that speeds up the loading.
|
|
|
|
|
Hanan888 wrote: I don't think DirectDrawSurface support any alpha-blending
see, [IDirectDrawSurface::Blt^] and see the DDBLT_ALPHASRC flag.
Hanan888 wrote: Also, with the many images I have, it's kinda slow and I'm looking for anything that speeds up the loading.
i think you can use *.dds, which stores exactly in surface format.
|
|
|
|
|
Rajkumar R wrote: see, [IDirectDrawSurface::Blt^] and see the DDBLT_ALPHASRC flag.
Are you sure this applies to the latest SDK? couldn't find it in any branch of the MSDN documentation tree.
|
|
|
|
|
Hanan888 wrote: Are you sure this applies to the latest SDK?
yep, but not in Direct3D 9(though 9 is not latest) since directdraw interfaces are outdated in direct3d9. It is used latest directshow sdk, where VMR7 is supported by this IDirectDrawSurface interfaces while VMR9 is supported by IDirect3DSurface9 interfaces. Haven't you seen this
"The IDirectDrawSurface interface is exposed on DirectDrawSurface objects that are used in the DirectShow multimedia streaming APIs" in that link. you can also refer some samples in DirectShow how custom allocator are implemented to mix various video streams much similar like your requirement.
|
|
|
|
|
Hi,
I have a CView form on which i put some text, but when i minimised the frame the text dispappear. My question is what should i do to prevent the erase of my Text. in other words, when i'll minimize the frame, i dont wanna lose the text.
Thx !!
"The Ultimate Limit Is Only Your Imagination."
|
|
|
|