MFC实现窗口透明,并显示一张透明PNG图片

参考了大佬的文章,记录一下过程,帮助记忆。

实现了窗口背景透明,button、edit控件不透明

可以看到窗口变成透明的了,并且载入了一张透明的png图片

代码如下:

在头文件中加入:CImage img

BOOL CMFC301透明窗体Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysM
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MFC实现按键切换显示png图片,你需要按照以下步骤进行操作: 1. 将要显示png图片添加到MFC资源中,可以使用Visual Studio的资源编辑器进行添加。 2. 在对话框类中添加一个成员变量来保存图片控件的句柄,例如: ``` CStatic m_ImageCtrl; ``` 3. 在OnInitDialog函数中初始化图片控件,并且设置初始显示图片,例如: ``` m_ImageCtrl.SubclassDlgItem(IDC_IMAGE_CTRL, this); m_ImageCtrl.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_DEFAULT_IMAGE))); ``` 其中IDC_IMAGE_CTRL是在对话框中添加的图片控件的ID,IDB_DEFAULT_IMAGE是初始显示图片MFC资源中的ID。 4. 在对话框类中添加处理按键消息的函数,例如: ``` BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_LEFT: m_ImageCtrl.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_LEFT_IMAGE))); return TRUE; case VK_RIGHT: m_ImageCtrl.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_RIGHT_IMAGE))); return TRUE; default: break; } } return CDialogEx::PreTranslateMessage(pMsg); } ``` 在这个函数中,我们使用了LoadBitmap函数来加载图片资源,根据不同的按键设置不同的图片。 5. 最后,别忘了在对话框的消息映射中添加WM_KEYDOWN消息的处理函数,例如: ``` BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_KEYDOWN() //其他消息映射 END_MESSAGE_MAP() ``` 这样,按下左右箭头键时,就能切换显示不同的png图片了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值