VC6【MFC】代码累积(一)
来源:互联网 发布:后台cms内容管理系统 编辑:程序博客网 时间:2024/06/11 07:03
- ● 定时器(消息处理)
- OnCreate消息处理中加入:
- SetTimer(1,1000,NULL);
- OnTimer消息处理中加入:
- InvalidateRect(NULL, TRUE);
- UpdateWindow();
- ● 双缓冲
- 加入OnDraw()消息处理的代码
- RECT Rect;
- GetClientRect(&Rect);
- static BOOL bColor = FALSE;
- if(bColor)
- pDC->SelectStockObject(WHITE_PEN);
- else
- pDC->SelectStockObject(BLACK_PEN);
- bColor = !bColor;
- for(int i=0; i<Rect.right; i++)
- {
- pDC->MoveTo(i,0);
- pDC->LineTo(i, Rect.bottom);
- }
-
- RECT Rect;
- GetClientRect(&Rect);
- static BOOL bColor = FALSE;
- CDC MemDC;
- MemDC.CreateCompatibleDC(pDC);
- CBitmap MemBitmap;
- MemBitmap.CreateCompatibleBitmap(pDC, Rect.right, Rect.bottom);
- CBitmap *pOldBitmap = MemDC.SelectObject(&MemBitmap);
- if(bColor)
- MemDC.SelectStockObject(WHITE_PEN);
- else
- MemDC.SelectStockObject(BLACK_PEN);
- bColor = !bColor;
- for(int i=0; i<Rect.right; i++)
- {
- MemDC.MoveTo(i,0);
- MemDC.LineTo(i, Rect.bottom);
- }
- pDC->BitBlt(0, 0, Rect.right, Rect.bottom,
- &MemDC, 0, 0, SRCCOPY);
- MemDC.SelectObject(pOldBitmap);
-
-
-
- ● Bitmap非设备上下文兼容位图的显示
- 全局定义一个变量
- CBitmap m_Bitmap1;
- 构造函数中,从资源加载位图(16位)
- m_Bitmap1.LoadBitmap(IDB_BITMAP1);
- 加入OnDraw()消息处理中的显示代码
- CDC MemDC;
- MemDC.CreateCompatibleDC(pDC);
- CBitmap * pOldBitmap = MemDC.SelectObject(&m_Bitmap1);
-
- BITMAP bm1;
- m_Bitmap1.GetObject(sizeof(BITMAP), &bm1);
- pDC->BitBlt(10, 10, bm1.bmWidth, bm1.bmHeight, &MemDC, 0, 0, SRCCOPY);
-
- MemDC.SelectObject(pOldBitmap);
- ● 在主框架的OnCreate处理中设置窗体位置和大小
- this->MoveWindow(600,100,190,120,TRUE);
- ● 取系统当前时间
- CTime time(CTime::GetCurrentTime());
- ● 可点击任意位置移动的窗体.
- 全局:
- CPoint OffSetPoint;
- bool IS_Moved;
- OnLButtonDown消息事件中:
- IS_Moved = true;
- OffSetPoint = point;
- OnLButtonUp消息事件中:
- IS_Moved = false;
- OnMouseMove消息事件中:
- if(IS_Moved)
- {
- CRect rect;
- GetWindowRect(&rect);
- CPoint Tpoint;
- Tpoint.x = point.x - OffSetPoint.x;
- Tpoint.y = point.y - OffSetPoint.y;
-
- this->MoveWindow(rect.left + Tpoint.x,
- rect.top + Tpoint.y,
- rect.right - rect.left,
- rect.bottom - rect.top,
- TRUE);
- }
- ● 在对话框下取得DC
- 需要注意的是这做法不会释放资源.
- 千万不要放在会反复执行的地方,比如循环,计时器之类
- CDC * pDC = this->GetDC();
- 全局:
- CDC * pDC;
- 初始化:
- pDC = this->GetDC();
- 我想这是因为它是个指针,每次都是新建一个DC,然后指向.
- 旧的如果不释放就会成LJ,偏偏它还就没自动释放掉.
-
-
- ● 退出,通知程序结束运行.
- this->PostMessage(WM_CLOSE);
- ● 鼠标消息之中,将客户区坐标转换到全屏
- ClientToScreen(&point);
- ● 放在APP的初始化里,背景色
- this->SetDialogBkColor(RGB(255,255,255));
- ● 添回快捷菜单
- CMenu menu;
- VERIFY(menu.LoadMenu(IDR_MENU1));
- ClientToScreen(&point);
- CMenu* pPopup = menu.GetSubMenu(0);
- ASSERT(pPopup != NULL);
- CWnd* pWndPopupOwner = this;
- while (pWndPopupOwner-> GetStyle() & WS_CHILD)
- pWndPopupOwner = pWndPopupOwner-> GetParent();
- pPopup-> TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
- point.x, point.y,
- pWndPopupOwner);
- ● 绘制一个白色矩形背景
- CRect Rect(0, 0, 185, 80);
- CClientDC ClientDC( this );
- CPen Pen( PS_SOLID, 1, RGB(255,255,255) );
- CPen *pOldPen = (CPen *) ClientDC.SelectObject( &Pen );
- ClientDC.Rectangle( &Rect );