两个小问题,送分

AbnerChai 2003-08-22 07:06:05
1:SDI窗口,大小固定了,如何让它不能移动?即用鼠标拖动标题栏窗口不动。
我现在用如下代码实现,但有问题:就是屏幕闪动的很历害,请问如何解决或有
更好的办法让窗口不动?
void CMainFrame::OnMove(int x, int y)
{
CFrameWnd::OnMove(x, y);
// TODO: Add your message handler code here
this->MoveWindow(&czSize);

}

2:想在对话框上的某一区显示出bmp图片或画图,如何办?
有人说用一个static控件,然后在static控件中画。请问static控件是什么?sorry
另外有人说用一个picture控件,请问用picture控件,我可以在上面画线等图形吗?
...全文
29 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
c2413 2003-10-17
  • 打赏
  • 举报
回复
怎么还没结帖
janewhee2001 2003-08-25
  • 打赏
  • 举报
回复
uping
dutzhp 2003-08-25
  • 打赏
  • 举报
回复
void CMainFrame::OnMove(int x, int y)
{
return;
}

picture
思危 2003-08-25
  • 打赏
  • 举报
回复
问题二:
仅显示图片用Picture控件,但不能绘图。
要用代码写的话过载OnPaint函数

CPaintDC dc(this);
CDC dcMem;
HBITMAP hbmpOld;
CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_BITMAP1);
dcMem.CreateCompatibleDC(&dc);
hbmpOld=(HBITMAP)dcMem.SelectObject(m_bitmap);
dc.BitBlt(0,0,32,32,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(hbmpOld);
dcMem.DeleteDC();
m_bitmap.DeleteObject();
思危 2003-08-25
  • 打赏
  • 举报
回复
问题一:
void CMainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (nHitTest == HTCAPTION) return;

CFrameWnd::OnNcLButtonDown(nHitTest, point);
}
在OnHitTest中过滤的消息太多了
w803007 2003-08-24
  • 打赏
  • 举报
回复
gzing
yanzai8848 2003-08-24
  • 打赏
  • 举报
回复
1, 重载WM_NCHITTEST消息虚函数
UINT CMainFrame::OnNcHitTest(CPoint point)
{
UINT nRes = CFrameWnd::OnNcHitTest(point);
return (nRes == HTCAPTION) ? HTCLIENT : nRes;
}

2, 是Dialog编辑控件中的static text 以及 picture都是static
这里使用picture, 这是下面的image变亮,选择你的位图ID.

kilnut 2003-08-23
  • 打赏
  • 举报
回复
up
AbnerChai 2003-08-23
  • 打赏
  • 举报
回复
不知道在picture 框上可以用cdc画图吗?
yimi128 2003-08-22
  • 打赏
  • 举报
回复
解决2最简单的方法:在对话框上添加一个picture控件,然后把bmp图片导入资源中,然后在picture的属性里有一个bitmap,直接选就可以显示图片了
c2413 2003-08-22
  • 打赏
  • 举报
回复
void CShowBmpDlg::ShowBmp1(CPaintDC& dc)
{
CBitmap bitmap;
CBitmap* pOldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(&dc); ///建立与显示设备兼容的内存设备场境
bitmap.LoadBitmap(IDB_BITMAP1); ///取出位图资源
pOldBitmap=MemDC.SelectObject(&bitmap); ///将位图选入内存场境
dc.BitBlt(20,20,48,48,&MemDC,0,0,SRCCOPY); ///显示它
MemDC.SelectObject(pOldBitmap);
}
feeboby 2003-08-22
  • 打赏
  • 举报
回复
up
zhaolaoxin 2003-08-22
  • 打赏
  • 举报
回复
CStatic类,CStatic::LoadBitmap();
akun 2003-08-22
  • 打赏
  • 举报
回复
1. 那就只有把窗口标题栏去掉.
2. 把static设置成块状,并且把他的id改掉,这样才能获得它的窗口句饼,客户区大小.
在dialog里面用CDC画图吧..
zhaolaoxin 2003-08-22
  • 打赏
  • 举报
回复
void CMainFrame::OnMove(int x, int y)
{
return;

/* CFrameWnd::OnMove(x, y);
// TODO: Add your message handler code here
this->MoveWindow(&czSize);
*/
}
fooxu 2003-08-22
  • 打赏
  • 举报
回复
具体代码我现在不好提供,,,
思路是:
取的整个窗体的RECT ,按这个RECY计算你要画图形的地方,,把图片资源添加到这里
AbnerChai 2003-08-22
  • 打赏
  • 举报
回复
上面的czSize是一个RECT结结构,它保存的是屏幕的大小.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧