BOOL CXBitmapDlg::OnInitDialog()
{
..................
.................. SetWindowRgn (m_rgn, FALSE);
ShowWindow(SW_SHOW); m_btnOK.Create......
m_btnCancle.Create......}
按纽的显示正常,但是点上去没有任何反映,由于这个对话框是DoModal的,只有把程序关了.注释掉SetWindowRgn后,就可以了,但是就没有圆角矩形的效果(这个效果是必须的).
各位高手帮我看看吧,谢谢了!
{
..................
.................. SetWindowRgn (m_rgn, FALSE);
ShowWindow(SW_SHOW); m_btnOK.Create......
m_btnCancle.Create......}
按纽的显示正常,但是点上去没有任何反映,由于这个对话框是DoModal的,只有把程序关了.注释掉SetWindowRgn后,就可以了,但是就没有圆角矩形的效果(这个效果是必须的).
各位高手帮我看看吧,谢谢了!
解决方案 »
- 如何动态地改变工具栏中其中一个按钮的颜色?
- 求救,请高手帮忙,线程中用ADO的问题,郁闷啊
- 怎样在状态栏中添加一个时间显示
- help me
- 在dll的导出函数中创建一个工作者线程,调试发现线程函数根本就没有执行。
- 如何读取音乐文件属性
- 犹豫中?学习vc6还是2005?大家给点意见吧!在线等
- 菜鸟提问:请问有关 在任务管理器中杀进程的析构怎么处理
- 我的困惑---VC|VB哪种更实用???
- 我写的vbscript的病毒,是以vbs为扩展名,双击时会问是否运行,那这样的病毒还有什么隐蔽性阿?能否直接运行阿?谢谢
- 急!!如何在一个VC程序中调用另一个VC程序,并控制的窗口大小,和显示范围??谢谢了
- 如何枚举一个文件夹下的快捷方式文件,那位大虾测试了可以枚举到给一个code
你这两个按钮的消息响应做了吗??
能把这个函数全写出来吗?
{
CDialog::OnInitDialog();
SetWindowText(_T("Hello"));
BITMAP bmp;
UINT cx,cy;
HBITMAP hBitmap=(HBITMAP)LoadImage( AfxGetInstanceHandle(),
MAKEINTRESOURCE(m_uiImgID),
IMAGE_BITMAP,
0,
0,
0
);
CBitmap bitmap;
bitmap.Attach(hBitmap);
bitmap.GetBitmap(&bmp);
cx=bmp.bmWidth;
cy=bmp.bmHeight;
int x,y;
x = GetSystemMetrics(SM_CXSCREEN);
y = GetSystemMetrics(SM_CYSCREEN);
int height = cy;
int width = cx;
CDC dcImage;
dcImage.CreateCompatibleDC(NULL);
CBitmap bmBitmap;
bmBitmap.LoadBitmap(m_uiImgID);
dcImage.SelectObject(bmBitmap);
COLORREF color=RGB(0,255,0);
int m_x=0,m_y=0;
BOOL bBreak=FALSE;
CRgn m_rgn;
m_rgn.CreateRectRgn(0, 0, cx, cy);
//把四个角去掉(四个角的颜色是(0,255,0))
for(m_y=0;m_y<15;m_y++)
{
for(m_x=0;m_x<15;m_x++)
{
if(dcImage.GetPixel(m_x,m_y)!=color)
{
if(m_x!=0)
{
CRgn rgnAdd;
rgnAdd.CreateRectRgn(0,m_y,m_x,m_y+1);
m_rgn.CombineRgn(&m_rgn,&rgnAdd,RGN_DIFF);
}
else
{
bBreak=TRUE;
}
break;
}
}
if(bBreak)
break;
}
bBreak=FALSE;
for(m_y=height-1;m_y>height-15;m_y--)
{
for(m_x=0;m_x<15;m_x++)
{
if(dcImage.GetPixel(m_x,m_y)!=color)
{
if(m_x!=0)
{
CRgn rgnAdd;
rgnAdd.CreateRectRgn(0,m_y,m_x,m_y+1);
m_rgn.CombineRgn(&m_rgn,&rgnAdd,RGN_DIFF);
}
else
{
bBreak=TRUE;
}
break;
}
}
if(bBreak)
break;
}
bBreak=FALSE;
for(m_y=0;m_y<15;m_y++)
{
for(m_x=width-1;m_x>width-15;m_x--)
{
if(dcImage.GetPixel(m_x,m_y)!=color)
{
if(m_x!=width-1)
{
CRgn rgnAdd;
rgnAdd.CreateRectRgn(m_x+1,m_y,width,m_y+1);
m_rgn.CombineRgn(&m_rgn,&rgnAdd,RGN_DIFF);
}
else
{
bBreak=TRUE;
}
break;
}
}
if(bBreak)
break;
}
bBreak=FALSE;
for(m_y=height-1;m_y>height-15;m_y--)
{
for(m_x=width-1;m_x>width-15;m_x--)
{
if(dcImage.GetPixel(m_x,m_y)!=color)
{
if(m_x!=width-1)
{
CRgn rgnAdd;
rgnAdd.CreateRectRgn(m_x+1,m_y,width,m_y+1);
m_rgn.CombineRgn(&m_rgn,&rgnAdd,RGN_DIFF);
}
else
{
bBreak=TRUE;
}
break;
}
}
if(bBreak)
break;
}
SetWindowRgn (m_rgn, FALSE);
ShowWindow(SW_SHOW);
MoveWindow((x-cx)/2, (y-cy)/2+2, cx, cy);
DeleteObject(hBitmap); m_btnOK.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(20,20,20+74,20+29), this, IDC_DIALOG_BTN_OK);
m_btnOK.LoadBitmaps(IDB_BK_YES_UP, IDB_BK_YES_DOWN);
m_btnOK.ShowWindow(SW_SHOW); m_btnCancel.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(100,20,100+74,20+29), this, IDC_DIALOG_BTN_CANCLE);
m_btnCancel.LoadBitmaps(IDB_BK_NO_UP, IDB_BK_NO_DOWN);
m_btnCancel.ShowWindow(SW_SHOW);
return TRUE;
}