对话框透明,只显示边框如何写? 对话框透明,只显示边框,看起来的效果就是一个矩形框。有checkbox控制是否显示,这个对话框怎么写?求大神指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果没有 Title 窗口就 移动不了了。void CTransDlgDlg::RgnSubtractCtrls(CRgn &rgn,int offX,int offY){ CWnd *pWnd=0; int ID[]={IDOK,IDC_BUTTON1,IDCANCEL}; for(int jj=0;jj<sizeof(ID)/sizeof(int);jj++) { pWnd=GetDlgItem(ID[jj]); CRect rc; pWnd->GetWindowRect(&rc); ScreenToClient(&rc); rc.OffsetRect(offX,offY); CRgn ctlRgn; ctlRgn.CreateRectRgnIndirect(&rc); rgn.CombineRgn(&rgn,&ctlRgn,RGN_XOR); ctlRgn.DeleteObject(); }} void CTransDlgDlg::OnButton1() { // TODO: Add your control notification handler code herestatic BOOL sw=FALSE; if(!sw) { sw=TRUE; CRect rcWin; GetWindowRect(&rcWin); CRect rcClt; GetClientRect(&rcClt); ClientToScreen(&rcClt);// rcClt.OffsetRect(-rcWin.left,-rcWin.top); int offX=rcClt.left; int offY=rcClt.top; rcWin.OffsetRect(-rcWin.left,-rcWin.top);// CRgn tmp; tmp.CreateRectRgnIndirect(&rcClt);// RgnSubtractCtrls(tmp,offX,offY);// CRgn rgn; rgn.CreateRectRgnIndirect(&rcWin); rgn.CombineRgn(&rgn, &tmp, RGN_DIFF); SetWindowRgn(rgn,TRUE); tmp.DeleteObject(); rgn.DeleteObject(); m_Trans.SetWindowText("不透明"); } else { sw=FALSE; SetWindowRgn(0,TRUE); m_Trans.SetWindowText("透明"); }}BOOL CTransDlgDlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CRect rc; GetClientRect(&rc); pDC->FillSolidRect(&rc,RGB(255,200,200)); return TRUE; //return CDialog::OnEraseBkgnd(pDC);} m_Trans这个是什么类型的啊?不移动。不需要Title CButton m_Trans;我的对话框上有 个 按钮int ID[]={IDOK,IDC_BUTTON1,IDCANCEL};这3个按钮 要 从 透明 rgn 减去,(即 3个按钮 不透明)m_Trans 就是 OnButton1() 1.窗口 减去 客户区。2.减去按钮3.主要:SetWindowRgn(rgn,TRUE); OnNcPaint:{CDialog::OnNcPaint();// 先叫父类 画CWindowDC dc(this);Rect rcWin;GetWindowRect(reWin);rcWin.OffsetRect(-rcWin.TopLeft());CBrush br;br.CreateolidBrush(RGB(255,0,0));// 3 pixelsdc.FrameRect(rcWin,&br);rcWin.DeflateRect(1,1);dc.FrameRect(rcWin,&br);rcWin.DeflateRect(1,1);dc.FrameRect(rcWin,&br);} ADO指针释放问题 [求助]如何获取IE的版本和控件是否存在? 关于《Windows核心编程》代码编译问题 大家好,希望大家关注一下! com调用ORACLE存储过程时,过程的返回参数无法得到,怎么办各位 关于数据库备份及恢复的问题? 怎样显示和隐藏工具栏图标? (up有分) 如何让单文档窗口初始化时最大化? 急,请教问题! 退出怎么搞.我的一个按钮函数为void类型.但是不知道在里面加什么东西,可以从程序退出. OpenCV读取视频显示灰色图像 求助
{
CWnd *pWnd=0;
int ID[]={IDOK,IDC_BUTTON1,IDCANCEL};
for(int jj=0;jj<sizeof(ID)/sizeof(int);jj++)
{
pWnd=GetDlgItem(ID[jj]);
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);
rc.OffsetRect(offX,offY);
CRgn ctlRgn;
ctlRgn.CreateRectRgnIndirect(&rc);
rgn.CombineRgn(&rgn,&ctlRgn,RGN_XOR);
ctlRgn.DeleteObject();
}
} void CTransDlgDlg::OnButton1()
{
// TODO: Add your control notification handler code here
static BOOL sw=FALSE;
if(!sw)
{
sw=TRUE;
CRect rcWin;
GetWindowRect(&rcWin);
CRect rcClt;
GetClientRect(&rcClt);
ClientToScreen(&rcClt);
//
rcClt.OffsetRect(-rcWin.left,-rcWin.top);
int offX=rcClt.left;
int offY=rcClt.top;
rcWin.OffsetRect(-rcWin.left,-rcWin.top);
//
CRgn tmp;
tmp.CreateRectRgnIndirect(&rcClt);
//
RgnSubtractCtrls(tmp,offX,offY);
//
CRgn rgn;
rgn.CreateRectRgnIndirect(&rcWin);
rgn.CombineRgn(&rgn, &tmp, RGN_DIFF);
SetWindowRgn(rgn,TRUE);
tmp.DeleteObject();
rgn.DeleteObject();
m_Trans.SetWindowText("不透明"); }
else
{
sw=FALSE;
SetWindowRgn(0,TRUE);
m_Trans.SetWindowText("透明");
}
}BOOL CTransDlgDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetClientRect(&rc);
pDC->FillSolidRect(&rc,RGB(255,200,200));
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}
不移动。不需要Title
int ID[]={IDOK,IDC_BUTTON1,IDCANCEL};
这3个按钮 要 从 透明 rgn 减去,(即 3个按钮 不透明)
m_Trans 就是 OnButton1()
1.窗口 减去 客户区。
2.减去按钮
3.主要:SetWindowRgn(rgn,TRUE);
{
CDialog::OnNcPaint();// 先叫父类 画
CWindowDC dc(this);
Rect rcWin;
GetWindowRect(reWin);
rcWin.OffsetRect(-rcWin.TopLeft());
CBrush br;
br.CreateolidBrush(RGB(255,0,0));
// 3 pixels
dc.FrameRect(rcWin,&br);
rcWin.DeflateRect(1,1);
dc.FrameRect(rcWin,&br);
rcWin.DeflateRect(1,1);
dc.FrameRect(rcWin,&br);
}