Chapter22 滚动字幕程序
1. OnDraw函数中写画得内容.使用Invalidate() 或者 InvalidateRect()刷新 触发OnDraw()得调用.
2. Windows不允许直接 访问显示硬件 .我们必须通过和窗口 关联得 “设备环境”跟显示硬件 通讯 .设备环境由C++得CDC类 对象表示得.该对象以 指针形式作为参数传给OnDraw() .
Chapter22 滚动轴响应键盘
1.Windows 为每一键发送3条消息.第一条是 WM_KEYDOWN,接着发送得是WM_
CHAR消息.以及 被按下 得字符得简码,第三是 WM_KEYUP..
CHAR消息.以及 被按下 得字符得简码,第三是 WM_KEYUP..
表非打印的虚拟键码
虚拟键码
|
控制键
|
VK-MENU
|
Menu(菜单,只在Window95,98键盘上有)
|
VK-APPS
|
Applicate(应用程序,只有在Window95/98键盘上有)
|
VK-CONTROL
|
Control(控制)
|
VK-DELETE
|
Delete
|
VK-DOWN
|
下箭头
|
VK-END
|
End
|
VK-F1到VK-F12
|
F1到F12
|
VK-HOME
|
Home
|
VK-INSERT
|
Insert
|
VK-LEFT
|
左箭头
|
VK-PAUSE
|
Pause
|
VK-NEXT
|
PageDown
|
VK-PRIOR
|
PageUp
|
VK-SNAPSHOT
|
PrintScreen
|
VK-RIGHT
|
右箭头
|
VK-SHIFT
|
SHift
|
VK-UP
|
上箭头
|
2.0核心代码
void CCKEYSCROLLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
switch(nChar)
{
case VK_HOME:
OnVScroll(SB_TOP,0,NULL);
OnHScroll(SB_LEFT,0,NULL);
break;
case VK_END:
OnVScroll(SB_BOTTOM,0,NULL);
OnHScroll(SB_RIGHT,0,NULL);
break;
case VK_UP:
OnVScroll(SB_LINEUP,0,NULL);
break;
case VK_DOWN:
OnVScroll(SB_LINEDOWN,0,NULL);
break;
case VK_LEFT:
OnHScroll(SB_LINELEFT,0,NULL);
break;
case VK_RIGHT:
OnHScroll(SB_LINERIGHT,0,NULL);
break;
}
CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}
chapter23 bitmap
1. 在制作位图显示之前先转移到内存中.在windwos api中,所分配的内存句柄为HBITMAP ,它用来获得位图在内存中的地址以及长度的数据,当驻留内存中的数据转移到视频内存中时位图显示在屏幕上.
2. Cbitmap Bitmap //创建位图对象.
3. 上面步骤2只是创建一空的位图.使用时需要 LoadBitmap();
4. Bitmap.LoadBitmap(IDR_BITMAP);
5. Bit
6. BltBlt(int x,int y,int width,int height,CDC* pScrDC,int xSRc,int ySrc,DWORD dwRop);
dwRop为位图的显示格式.
7. 主要代码
void CBitMap22View::OnDraw(CDC* pDC)
{
CBitMap22Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBitmap map;
map.LoadBitmap(IDB_BITMAP1);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap *pOldBitmap=MemDC.SelectObject(&map);
BITMAP bm;
map.GetObject(sizeof(BITMAP),&bm); //获得位图信息
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
// TODO: add draw code for native data here
}
Chapter 24 Split Window
1. 主要类 CSplitterWnd
2. BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nColw,DWORD dwStyle=WS_CHILD|WS_VISIBLE,UINT nID=AFX_IDW_PANE_FIRST);
3. BOOL Create();
4. 主要代码
CRect r;
GetClientRect(&r);
CSize paneSize(r.Width()/3,r.Height()/3);
m_wndSplitter.CreateStatic(this,3,1);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(myView),paneSize,pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(myView),paneSize,pContext);
m_wndSplitter.CreateView(2,0,RUNTIME_CLASS(myView),paneSize,pContext);
return true;
Chapter25,26 画笔
1. 主要code
CClientDC dc(this);
dc.MoveTo(x,y);
dc.lineTo(CPoint end);
2. 画笔CPen类是画图程序中常用的类.画笔用于指定画线的特正.CDC中各种画线的函数如LineTo(),ARc(). PolyLine()等均使用画笔对象.
3. CPen() CPen(int nPenStyle,int nWidth,COLORREF crColor); and so on.
4. Style种类 PS_SOLID,PS_DASH,PS_DOT, and so on/
5.使用CPen主要代码
pen.DeleteObject();
pen.DeleteObject();
pen.CreatePen(PS_SOLID,1,m_Color);
使用时候
CClientDC dc(this);
dc.SelectObject(&pen);