sunnyli3166 2014-12-02 01:34 采纳率: 36.4%
浏览 2977
已采纳

MFC view窗口透明设置

基于MFC单文档程序,设置2个工具按钮,一个使画图背景为默认模式,另一个使view窗口透明直接在桌面作图。。。默认启动时只显示工具栏

我的做法是开始设置 view Precreatewindow cs

cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW |CS_VREDRAW);// view背景透明 只显示工具栏。这个功能Ok。

onbutton1: 加载一个类似默认背景白色的图片。。这个功能也ok。

Onbutton2: 要怎么去实现透明,实现桌面画图呢。??

运行后要在button1 button2切换时窗口也切换。。

各位大侠指导下啊,,我是新手。。。万分感激!!!

  • 写回答

1条回答 默认 最新

  • save4me 2014-12-02 02:43
    关注

    试一下MFC屏幕标记之透明窗体(一)
    //点击按钮实现窗口透明函数
    void CScreenMarkerDlg::OnButtonTransparent()
    {
    HINSTANCE hInst = GetModuleHandle("User32.dll");
    if (hInst)
    {
    //获取模块里的函数
    BOOL (WINAPI SetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD)=
    (BOOL (WINAPI
    ) (HWND,COLORREF,BYTE,DWORD))GetProcAddress(hInst,"SetLayeredWindowAttributes");
    //函数指针正确获取
    if(SetLayeredWindowAttributes)
    {
    //让窗口具透明的特性
    ::SetWindowLong(m_hWnd,GWL_EXSTYLE, GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);

    //设置窗口透明。第4参数为1时,第二个参数是被透明的颜色
    SetLayeredWindowAttributes(m_hWnd,GetSysColor(COLOR_3DFACE),0,0x1);
    }
    FreeLibrary(hInst); //释放调模块句柄
    }
    }

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料