基于VC++ PNG按钮的实现【5】

graph.DrawImage(m_pImageNum,20*5,0,140,0,14,23,UnitPixel);

// 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位置 S

       graph.DrawImage(m_pImageNum,20*6,0,14*(SystemTime.wSecond/10),

0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位 /

       graph.DrawImage(m_pImageNum,20*7,0,14*(SystemTime.wSecond%10),

0,14,23,UnitPixel); // 该函数从 m_pImageClock 中剪切指定 rect 中的像素 draw 到指定位 /

// 绘画结束

// 设置窗体的透明特性

       SIZE sizeWindow={m_BakWidth,m_BakHeight};

       POINT ptSrc={0,0};

       DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);//GWL_EXSTYLE;// 获得扩展窗口 风格。

       if((dwExStyle&0x80000)!=0x80000)//dwExStyle&0x80000 显示 alpha 透明通道,如 //0x80000 窗体为透明,否则设置为透明

              SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);

BOOL bRet=FALSE;

//The UpdateLayeredWindow function updates the position, size, shape, content, and //translucency of a layered window.

// 刷新窗口函数

       bRet= UpdateLayeredWindow( m_hWnd,hdcScreen,&ptWinPos,

                            &sizeWindow,m_hdcMemory,&ptSrc,0,&m_Blend,2);

      

// 释放环境

       graph.ReleaseHDC(m_hdcMemory);

       ::ReleaseDC(m_hWnd,hdcScreen);

       hdcScreen=NULL;

       ::ReleaseDC(m_hWnd,hdcTemp);

       hdcTemp=NULL;

       DeleteObject(hBitMap);

       DeleteDC(m_hdcMemory);

       m_hdcMemory=NULL;

       return bRet;

}

void CGDIPClockDlg::OnTimer(UINT nIDEvent)

{

       // TODO: Add your message handler code here and/or call default

       UpdateClockDisplay();

       CDialog::OnTimer(nIDEvent);

}

void CGDIPClockDlg::OnRButtonUp(UINT nFlags, CPoint point)

{

       // TODO: Add your message handler code here and/or call default

       CDialog::OnRButtonUp(nFlags, point);

}

void CGDIPClockDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

// 禁止显示移动矩形窗体框

       ::SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,TRUE,NULL,0);

// 非标题栏移动整个窗口

       SendMessage(WM_SYSCOMMAND,0xF012,0);  

       PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));  

       CDialog::OnLButtonDown(nFlags, point);

}

5 结语

以上,介绍了在 Windows 下采用 VC++ 进行 PNG 按钮的实现,并结合实例进行了实际运用说明。在传统的 DOS 环境中,要在打印机上打印一幅图时一件非常复杂的事情,用户必须根据打印机类型和指令规则向打印机输入数据。而 Windows 则提供 图形设备接口 GDI ,它是 Graphics Device Interface 的缩写。使得用户直接利用系统的 GDI 函数就能方便实现输入和输出,而不必关心与系统相连的外部设备类型。我们利用 GDI 所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作,能够方便的绘制漂亮的图形界面。 [4]

参 考 文 献

[1 ]乔林,杨志刚等.Visual C++ 6.0 高级编程技术[M ]. 北京:中国铁道出版社,2000.
[2 ]刘长明,杨工明.Visual C++ 实战与提高[M ]. 北京:中国铁道出版社,2001.
[3 ]Jon Bate
s · Tim Tompkins. 实用Visual C++ 6.0 教程[M ]. 北京:清华大学出版社,2000.

[4 ]郑阿奇,丁有何,郑进,周怡君.Visual C++ 6.0 实用教程(第三版)[M ]. 北京:电子工业出版社,2007.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值