- 博客(19)
- 资源 (22)
- 收藏
- 关注
原创 GetMessage(&msg,NULL,0,0)和GetMessage(&msg,hwnd,0,0)
如果是下面的hwnd,则当窗口关闭后,hwnd无效了,无法捕获WM_QUIT消息了。while(GetMessage(&msg,hwnd,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}hWnd [in] Handle to the window whose messages are to be retriev
2015-04-30 18:02:16 2086
原创 BitBlt 画透明位图
CDC::BitBlt函数,应用在GDI的绘图中,有时候我们需要显示的位图有一部分是透明的,例如在棋类游戏中,棋盘图片和棋子图片融合的时候,棋子边缘应该是透明。 在图1中,棋盘和棋子图片融合在一起,需要设置棋子图片边缘的“品红色”为透明。 1、BitBlt函数说明: BOOL BitBlt( int x, int
2015-04-24 20:24:59 7101 1
转载 Bitblt单色位图SetBkColor、SetTextColor作用
void CGameDIB::TransparentBlt(HDC hdcDest, int iDestX, int iDestY, int iDestWidth, int iDestHeight, HDC hdcSource, int iSourceX, int iSourceY, int iSourceWidth, int iSourceHeig
2015-04-24 09:38:24 739
转载 透明位图--SRCINVERT用法讲解
实现透明位图,有一个知识点必须要提前知道,那就是:注意对于图片来说,只有纯黑RGB(0,0,0)为0,其余即使是RGB(0,0,1)也是1如果一个单色位图向彩色位图转换,那么单色位图为1的部分(也就是白色部分),会转换为彩色位图的背景色,单色位图为0的部分(黑色部分),会转换为彩色位图的前景色。如果一个彩色位图向单色位图转换,那么彩色位图的背景色转换到单色位图中则为1(
2015-04-23 22:24:07 3491 1
原创 点击对话框的任何位置都能拖动,模拟单机了鼠标左键
void CGoBangDlg::OnLButtonDown(UINT nFlags, CPoint point){//模拟鼠标点击在None-Client,非客户区 HTCAPTION 点击标题 //功能是:点击对话框的任何位置都能拖动窗口PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y))
2015-04-23 15:01:50 492
转载 如何解决绘图过程中的闪烁
在VC中进行绘图过程处理时,如果图形刷新很快,经常出现图形闪烁的现象。利用先在内存绘制,然后拷贝到屏幕的办法可以消除屏幕闪烁,具体的方法是先在内存中创建一个与设备兼容的内存设备上下文,也就是开辟一快内存区来作为显示区域,然后在这个内存区进行绘制图形。在绘制完成后利用BitBlt函数把内存的图形直接拷贝到屏幕上即可。具体的代码实现为:(1)创建内存区域CDC* p
2015-04-21 11:50:12 3937
转载 调色板原理
逻辑调色板结构LOGPALETTE,该结构定义如下: typedef struct tagLOGPALETTE { WORD palVersion; //调色板的板本号,应该指定该值为0x300; WORD palNumEntries;//调色板中的表项数,对于灰度图像该值为256; PALETEENTRY palPalEntry[1];//调色板中的颜
2015-04-19 20:39:34 638
转载 new,malloc,GlobalAlloc用法
一。关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但
2015-04-19 10:54:24 320
转载 从内存字节流到文件—GlobalAlloc,GlobalLock,LockResource等用法
图片可以作为程序的资源,有时候我们想把图片资源编译为程序的一部分,这样资源就可以避免直接不查看利用。或者直接使用资源的二进制字节。那么怎么做到呢?windows是这么做的:首先申请一块全局内存块,将资源字节流拷贝到申请的内存中,然后就可以对该内存操作(比如转换为一个windows可以用的图片资源),最后释放掉内存块。下面是用到的几个函数:GlobalAlloc 函数原型:
2015-04-19 10:22:24 710
原创 OninitDialog与OnCreate两个消息有何区别,分别在什么时候调用
WM_INITDIALOGThe WM_INITDIALOG message is sent to the dialog box procedure immediately before a dialog box is displayed.WM_CREATEThe WM_CREATE message is sent when an application requests that a
2015-04-18 10:23:56 3663
原创 mfc对话框如何关闭自动调整大小功能
跳转到需要固定大小的对话框,将Border的属性从Reszing改为Dialog Frame就可以阻止dialog被人收到改变大小
2015-04-15 16:12:22 559
原创 CImage 加载透明PNG图片
CImage m_img;void LoadImage();void SetAlphaBits();void CceshipngView::LoadImage(){//第1步 寻找资源HRSRC hrsrc_resource=::FindResource(NULL,MAKEINTRESOURCE(IDB_NARUTO),"PNG");if(
2015-04-15 15:37:07 960
原创 CImage类 Load 图像
1 参数为路径LPCTSTR pszfilename HRESULT hresult1=m_image.Load("C:\hell.jpg"); if(E_FAIL==hresult1){MessageBox(_T(" m_image Load failed!"));return;}2 参数为路径IStream pszfile
2015-04-14 15:49:37 4215
转载 CImage类的介绍与使用
Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。因此,想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控件或代码。 现在,MFC和ATL共享的新类CImage为图像处理提供了许多相应的方法,这使得Visual C
2015-04-13 21:50:02 596
转载 InvalidateRect()与Invalidate()的用法(转)
BOOL InvalidateRect( HWND hWnd, // 窗口句柄 CONST RECT* lpRect, // 矩形区域 BOOL bErase //是否擦除背景); InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效。InvalidateRect函数
2015-04-13 19:20:16 649 1
转载 InvalidateRect()与Invalidate()的用法
BOOL InvalidateRect( HWND hWnd, // 窗口句柄 CONST RECT* lpRect, // 矩形区域 BOOL bErase //是否擦除背景); InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效。InvalidateRect函数
2015-04-13 11:19:04 534
原创 使用CImage 加载 PNG文件
//图片类class CImageEx : public CImage{public:CImageEx(){}~CImageEx(){}//加载图片bool LoadImage(HINSTANCE hInstance, LPCTSTR pszResourceName,LPCTSTR pszResourceType=TEXT("PNG"));bool
2015-04-12 22:50:02 1034
转载 如何利用CImage和AlphaBlend绘制PNG图片?
PNG图片本身就带有透明度,但是用CImage画出来的png却有白色背景,那么如何解决呢? 原因在于alpha的处理,CImage并没有做处理,而gdi+做过了处理,我们正是要做这样的处理,并不复杂反而简单。 #include void CrossImage(CImage &img) //对像素进行转换{ for(int i=0; i
2015-04-12 22:36:25 1874
转载 pragma comment的使用 pragma预处理指令详解
#pragma comment( comment-type [,"commentstring"] )该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler:放
2015-04-10 16:05:48 347
googleTest和googleMock,可以在vs2017、vs2010中编译
2023-11-29
raycasting 光线追踪
2014-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人