这节课内容主要讲解了如何在屏幕上显示字符 和 滚动条的使用

需要掌握的知识点:

1.如何定义结构体数组,详细内容看代码片段一。

2.TEXTMETRIC ,GetTextMetrics, lstrlen, wsprintf,SetTextAlign

3.WM_VSCROLL 和WM_HSCROLL的使用方法

/*-----------------------------------------------SYSMETS.H -- System metrics display structure-----------------------------------------------*/#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct
{int     iIndex ;TCHAR * szLabel ;TCHAR * szDesc ;
}
sysmetrics [] =
{SM_CXSCREEN,             TEXT ("SM_CXSCREEN"),              TEXT ("Screen width in pixels"),SM_CYSCREEN,             TEXT ("SM_CYSCREEN"),              TEXT ("Screen height in pixels"),SM_CXVSCROLL,            TEXT ("SM_CXVSCROLL"),             TEXT ("Vertical scroll width"),SM_CYHSCROLL,            TEXT ("SM_CYHSCROLL"),             TEXT ("Horizontal scroll height"),SM_CYCAPTION,            TEXT ("SM_CYCAPTION"),             TEXT ("Caption bar height"),SM_CXBORDER,             TEXT ("SM_CXBORDER"),              TEXT ("Window border width"),SM_CYBORDER,             TEXT ("SM_CYBORDER"),              TEXT ("Window border height"),SM_CXFIXEDFRAME,         TEXT ("SM_CXFIXEDFRAME"),          TEXT ("Dialog window frame width"),SM_CYFIXEDFRAME,         TEXT ("SM_CYFIXEDFRAME"),          TEXT ("Dialog window frame height"),SM_CYVTHUMB,             TEXT ("SM_CYVTHUMB"),              TEXT ("Vertical scroll thumb height"),SM_CXHTHUMB,             TEXT ("SM_CXHTHUMB"),              TEXT ("Horizontal scroll thumb width"),SM_CXICON,               TEXT ("SM_CXICON"),                TEXT ("Icon width"),SM_CYICON,               TEXT ("SM_CYICON"),                TEXT ("Icon height"),SM_CXCURSOR,             TEXT ("SM_CXCURSOR"),              TEXT ("Cursor width"),SM_CYCURSOR,             TEXT ("SM_CYCURSOR"),              TEXT ("Cursor height"),SM_CYMENU,               TEXT ("SM_CYMENU"),                TEXT ("Menu bar height"),SM_CXFULLSCREEN,         TEXT ("SM_CXFULLSCREEN"),          TEXT ("Full screen client area width"),SM_CYFULLSCREEN,         TEXT ("SM_CYFULLSCREEN"),          TEXT ("Full screen client area height"),SM_CYKANJIWINDOW,        TEXT ("SM_CYKANJIWINDOW"),         TEXT ("Kanji window height"),SM_MOUSEPRESENT,         TEXT ("SM_MOUSEPRESENT"),          TEXT ("Mouse present flag"),SM_CYVSCROLL,            TEXT ("SM_CYVSCROLL"),             TEXT ("Vertical scroll arrow height"),SM_CXHSCROLL,            TEXT ("SM_CXHSCROLL"),             TEXT ("Horizontal scroll arrow width"),SM_DEBUG,                TEXT ("SM_DEBUG"),                 TEXT ("Debug version flag"),SM_SWAPBUTTON,           TEXT ("SM_SWAPBUTTON"),            TEXT ("Mouse buttons swapped flag"),SM_CXMIN,                TEXT ("SM_CXMIN"),                 TEXT ("Minimum window width"),SM_CYMIN,                TEXT ("SM_CYMIN"),                 TEXT ("Minimum window height"),SM_CXSIZE,               TEXT ("SM_CXSIZE"),                TEXT ("Min/Max/Close button width"),SM_CYSIZE,               TEXT ("SM_CYSIZE"),                TEXT ("Min/Max/Close button height"),SM_CXSIZEFRAME,          TEXT ("SM_CXSIZEFRAME"),           TEXT ("Window sizing frame width"),SM_CYSIZEFRAME,          TEXT ("SM_CYSIZEFRAME"),           TEXT ("Window sizing frame height"),SM_CXMINTRACK,           TEXT ("SM_CXMINTRACK"),            TEXT ("Minimum window tracking width"),SM_CYMINTRACK,           TEXT ("SM_CYMINTRACK"),            TEXT ("Minimum window tracking height"),SM_CXDOUBLECLK,          TEXT ("SM_CXDOUBLECLK"),           TEXT ("Double click x tolerance"),SM_CYDOUBLECLK,          TEXT ("SM_CYDOUBLECLK"),           TEXT ("Double click y tolerance"),SM_CXICONSPACING,        TEXT ("SM_CXICONSPACING"),         TEXT ("Horizontal icon spacing"),SM_CYICONSPACING,        TEXT ("SM_CYICONSPACING"),         TEXT ("Vertical icon spacing"),SM_MENUDROPALIGNMENT,    TEXT ("SM_MENUDROPALIGNMENT"),     TEXT ("Left or right menu drop"),SM_PENWINDOWS,           TEXT ("SM_PENWINDOWS"),            TEXT ("Pen extensions installed"),SM_DBCSENABLED,          TEXT ("SM_DBCSENABLED"),           TEXT ("Double-Byte Char Set enabled"),SM_CMOUSEBUTTONS,        TEXT ("SM_CMOUSEBUTTONS"),         TEXT ("Number of mouse buttons"),SM_SECURE,               TEXT ("SM_SECURE"),                TEXT ("Security present flag"),SM_CXEDGE,               TEXT ("SM_CXEDGE"),                TEXT ("3-D border width"),SM_CYEDGE,               TEXT ("SM_CYEDGE"),                TEXT ("3-D border height"),SM_CXMINSPACING,         TEXT ("SM_CXMINSPACING"),          TEXT ("Minimized window spacing width"),SM_CYMINSPACING,         TEXT ("SM_CYMINSPACING"),          TEXT ("Minimized window spacing height"),SM_CXSMICON,             TEXT ("SM_CXSMICON"),              TEXT ("Small icon width"),SM_CYSMICON,             TEXT ("SM_CYSMICON"),              TEXT ("Small icon height"),SM_CYSMCAPTION,          TEXT ("SM_CYSMCAPTION"),           TEXT ("Small caption height"),SM_CXSMSIZE,             TEXT ("SM_CXSMSIZE"),              TEXT ("Small caption button width"),SM_CYSMSIZE,             TEXT ("SM_CYSMSIZE"),              TEXT ("Small caption button height"),SM_CXMENUSIZE,           TEXT ("SM_CXMENUSIZE"),            TEXT ("Menu bar button width"),SM_CYMENUSIZE,           TEXT ("SM_CYMENUSIZE"),            TEXT ("Menu bar button height"),SM_ARRANGE,              TEXT ("SM_ARRANGE"),               TEXT ("How minimized windows arranged"),SM_CXMINIMIZED,          TEXT ("SM_CXMINIMIZED"),           TEXT ("Minimized window width"),SM_CYMINIMIZED,          TEXT ("SM_CYMINIMIZED"),           TEXT ("Minimized window height"),SM_CXMAXTRACK,           TEXT ("SM_CXMAXTRACK"),            TEXT ("Maximum draggable width"),SM_CYMAXTRACK,           TEXT ("SM_CYMAXTRACK"),            TEXT ("Maximum draggable height"),SM_CXMAXIMIZED,          TEXT ("SM_CXMAXIMIZED"),           TEXT ("Width of maximized window"),SM_CYMAXIMIZED,          TEXT ("SM_CYMAXIMIZED"),           TEXT ("Height of maximized window"),SM_NETWORK,              TEXT ("SM_NETWORK"),               TEXT ("Network present flag"),SM_CLEANBOOT,            TEXT ("SM_CLEANBOOT"),             TEXT ("How system was booted"),SM_CXDRAG,               TEXT ("SM_CXDRAG"),                TEXT ("Avoid drag x tolerance"),SM_CYDRAG,               TEXT ("SM_CYDRAG"),                TEXT ("Avoid drag y tolerance"),SM_SHOWSOUNDS,           TEXT ("SM_SHOWSOUNDS"),            TEXT ("Present sounds visually"),SM_CXMENUCHECK,          TEXT ("SM_CXMENUCHECK"),           TEXT ("Menu check-mark width"),SM_CYMENUCHECK,          TEXT ("SM_CYMENUCHECK"),           TEXT ("Menu check-mark height"),SM_SLOWMACHINE,          TEXT ("SM_SLOWMACHINE"),           TEXT ("Slow processor flag"),SM_MIDEASTENABLED,       TEXT ("SM_MIDEASTENABLED"),        TEXT ("Hebrew and Arabic enabled flag"),SM_MOUSEWHEELPRESENT,    TEXT ("SM_MOUSEWHEELPRESENT"),     TEXT ("Mouse wheel present flag"),SM_XVIRTUALSCREEN,       TEXT ("SM_XVIRTUALSCREEN"),        TEXT ("Virtual screen x origin"),SM_YVIRTUALSCREEN,       TEXT ("SM_YVIRTUALSCREEN"),        TEXT ("Virtual screen y origin"),SM_CXVIRTUALSCREEN,      TEXT ("SM_CXVIRTUALSCREEN"),       TEXT ("Virtual screen width"),SM_CYVIRTUALSCREEN,      TEXT ("SM_CYVIRTUALSCREEN"),       TEXT ("Virtual screen height"),SM_CMONITORS,            TEXT ("SM_CMONITORS"),             TEXT ("Number of monitors"),SM_SAMEDISPLAYFORMAT,    TEXT ("SM_SAMEDISPLAYFORMAT"),     TEXT ("Same color format flag")
} ;
/*----------------------------------------------------
SYSMETS1.C -- System Metrics Display Program No. 1
(c) Charles Petzold, 1998
----------------------------------------------------*/
#define WINVER 0x0500
#include <windows.h>
#include "sysmets.h"LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{static TCHAR szAppName[] = TEXT ("SysMets1") ;HWND         hwnd ;MSG          msg ;WNDCLASS     wndclass ;wndclass.style         = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc   = WndProc ;wndclass.cbClsExtra    = 0 ;wndclass.cbWndExtra    = 0 ;wndclass.hInstance     = hInstance ;wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;wndclass.lpszMenuName  = NULL ;wndclass.lpszClassName = szAppName ;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 1"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;
}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{static int  cxChar, cxCaps, cyChar ;HDC         hdc ;int         i ;PAINTSTRUCT ps ;TCHAR       szBuffer [10] ;TEXTMETRIC  tm ;switch (message){case WM_CREATE:hdc = GetDC (hwnd) ;GetTextMetrics (hdc, &tm) ;cxChar = tm.tmAveCharWidth ;cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;cyChar = tm.tmHeight + tm.tmExternalLeading ;ReleaseDC (hwnd, hdc) ;return 0 ;case WM_PAINT :hdc = BeginPaint (hwnd, &ps) ;for (i = 0 ; i < NUMLINES ; i++){TextOut (hdc, 0, cyChar * i,                      sysmetrics[i].szLabel,lstrlen (sysmetrics[i].szLabel)) ;TextOut (hdc, 22 * cxCaps, cyChar * i,      sysmetrics[i].szDesc,lstrlen (sysmetrics[i].szDesc)) ;SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;TextOut (hdc, 22 * cxCaps + 40 * cxChar, cyChar * i, szBuffer, wsprintf (szBuffer, TEXT ("%5d"), GetSystemMetrics (sysmetrics[i].iIndex))) ;SetTextAlign (hdc, TA_LEFT | TA_TOP) ;}EndPaint (hwnd, &ps) ;return 0 ;case WM_DESTROY :PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;
}
/*----------------------------------------------------SYSMETS2.C -- System Metrics Display Program No. 2(c) Charles Petzold, 1998----------------------------------------------------*/#define WINVER 0x0500
#include <windows.h>
#include "sysmets.h"LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{static TCHAR szAppName[] = TEXT ("SysMets2") ;HWND         hwnd ;MSG          msg ;WNDCLASS     wndclass ;wndclass.style         = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc   = WndProc ;wndclass.cbClsExtra    = 0 ;wndclass.cbWndExtra    = 0 ;wndclass.hInstance     = hInstance ;wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;wndclass.lpszMenuName  = NULL ;wndclass.lpszClassName = szAppName ;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 2"),WS_OVERLAPPEDWINDOW | WS_VSCROLL,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;
}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{static int  cxChar, cxCaps, cyChar, cyClient, iVscrollPos ;HDC         hdc ;int         i, y ;PAINTSTRUCT ps ;TCHAR       szBuffer[10] ;TEXTMETRIC  tm ;switch (message){case WM_CREATE:hdc = GetDC (hwnd) ;GetTextMetrics (hdc, &tm) ;cxChar = tm.tmAveCharWidth ;cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;cyChar = tm.tmHeight + tm.tmExternalLeading ;ReleaseDC (hwnd, hdc) ;SetScrollRange (hwnd, SB_VERT, 0, NUMLINES - 1, FALSE) ;SetScrollPos   (hwnd, SB_VERT, iVscrollPos, TRUE) ;return 0 ;case WM_SIZE:cyClient = HIWORD (lParam) ;return 0 ;case WM_VSCROLL:switch (LOWORD (wParam)){case SB_LINEUP:iVscrollPos -= 1 ;break ;case SB_LINEDOWN:iVscrollPos += 1 ;break ;case SB_PAGEUP:iVscrollPos -= cyClient / cyChar ;break ;case SB_PAGEDOWN:iVscrollPos += cyClient / cyChar ;break ;case SB_THUMBPOSITION:iVscrollPos = HIWORD (wParam) ;break ;default :break ;}iVscrollPos = max (0, min (iVscrollPos, NUMLINES - 1)) ;if (iVscrollPos != GetScrollPos (hwnd, SB_VERT)){SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;InvalidateRect (hwnd, NULL, TRUE) ;}return 0 ;case WM_PAINT:hdc = BeginPaint (hwnd, &ps) ;for (i = 0 ; i < NUMLINES ; i++){y = cyChar * (i - iVscrollPos) ;TextOut (hdc, 0, y,sysmetrics[i].szLabel,lstrlen (sysmetrics[i].szLabel)) ;TextOut (hdc, 22 * cxCaps, y,sysmetrics[i].szDesc,lstrlen (sysmetrics[i].szDesc)) ;SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;TextOut (hdc, 22 * cxCaps + 40 * cxChar, y, szBuffer,wsprintf (szBuffer, TEXT ("%5d"),GetSystemMetrics (sysmetrics[i].iIndex))) ;SetTextAlign (hdc, TA_LEFT | TA_TOP) ;}EndPaint (hwnd, &ps) ;return 0 ;case WM_DESTROY:PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;
}
/*----------------------------------------------------SYSMETS3.C -- System Metrics Display Program No. 3(c) Charles Petzold, 1998----------------------------------------------------*/#define WINVER 0x0500
#include <windows.h>
#include "sysmets.h"LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{static TCHAR szAppName[] = TEXT ("SysMets3") ;HWND         hwnd ;MSG          msg ;WNDCLASS     wndclass ;wndclass.style         = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc   = WndProc ;wndclass.cbClsExtra    = 0 ;wndclass.cbWndExtra    = 0 ;wndclass.hInstance     = hInstance ;wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;wndclass.lpszMenuName  = NULL ;wndclass.lpszClassName = szAppName ;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("Program requires Windows NT!"), szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 3"),WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;
}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{static int  cxChar, cxCaps, cyChar, cxClient, cyClient, iMaxWidth ;HDC         hdc ;int         i, x, y, iVertPos, iHorzPos, iPaintBeg, iPaintEnd ;PAINTSTRUCT ps ;SCROLLINFO  si ;TCHAR       szBuffer[10] ;TEXTMETRIC  tm ;switch (message){case WM_CREATE:hdc = GetDC (hwnd) ;GetTextMetrics (hdc, &tm) ;cxChar = tm.tmAveCharWidth ;cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;cyChar = tm.tmHeight + tm.tmExternalLeading ;ReleaseDC (hwnd, hdc) ;// Save the width of the three columnsiMaxWidth = 40 * cxChar + 22 * cxCaps ;return 0 ;case WM_SIZE:cxClient = LOWORD (lParam) ;cyClient = HIWORD (lParam) ;// Set vertical scroll bar range and page sizesi.cbSize = sizeof (si) ;si.fMask  = SIF_RANGE | SIF_PAGE ;si.nMin   = 0 ;si.nMax   = NUMLINES - 1 ;si.nPage  = cyClient / cyChar ;SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;// Set horizontal scroll bar range and page sizesi.cbSize = sizeof (si) ;si.fMask  = SIF_RANGE | SIF_PAGE ;si.nMin   = 0 ;si.nMax   = 2 + iMaxWidth / cxChar ;si.nPage  = cxClient / cxChar ;SetScrollInfo (hwnd, SB_HORZ, &si, TRUE) ;return 0 ;case WM_VSCROLL:// Get all the vertial scroll bar informationsi.cbSize = sizeof (si) ;si.fMask  = SIF_ALL ;GetScrollInfo (hwnd, SB_VERT, &si) ;// Save the position for comparison later oniVertPos = si.nPos ;switch (LOWORD (wParam)){case SB_TOP:si.nPos = si.nMin ;break ;case SB_BOTTOM:si.nPos = si.nMax ;break ;case SB_LINEUP:si.nPos -= 1 ;break ;case SB_LINEDOWN:si.nPos += 1 ;break ;case SB_PAGEUP:si.nPos -= si.nPage ;break ;case SB_PAGEDOWN:si.nPos += si.nPage ;break ;case SB_THUMBTRACK:si.nPos = si.nTrackPos ;break ;default:break ;         }// Set the position and then retrieve it.  Due to adjustments//   by Windows it may not be the same as the value set.si.fMask = SIF_POS ;SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;GetScrollInfo (hwnd, SB_VERT, &si) ;// If the position has changed, scroll the window and update itif (si.nPos != iVertPos){                    ScrollWindow (hwnd, 0, cyChar * (iVertPos - si.nPos), NULL, NULL) ;UpdateWindow (hwnd) ;}return 0 ;case WM_HSCROLL:// Get all the vertial scroll bar informationsi.cbSize = sizeof (si) ;si.fMask  = SIF_ALL ;// Save the position for comparison later onGetScrollInfo (hwnd, SB_HORZ, &si) ;iHorzPos = si.nPos ;switch (LOWORD (wParam)){case SB_LINELEFT:si.nPos -= 1 ;break ;case SB_LINERIGHT:si.nPos += 1 ;break ;case SB_PAGELEFT:si.nPos -= si.nPage ;break ;case SB_PAGERIGHT:si.nPos += si.nPage ;break ;case SB_THUMBPOSITION:si.nPos = si.nTrackPos ;break ;default :break ;}// Set the position and then retrieve it.  Due to adjustments//   by Windows it may not be the same as the value set.si.fMask = SIF_POS ;SetScrollInfo (hwnd, SB_HORZ, &si, TRUE) ;GetScrollInfo (hwnd, SB_HORZ, &si) ;// If the position has changed, scroll the window if (si.nPos != iHorzPos){ScrollWindow (hwnd, cxChar * (iHorzPos - si.nPos), 0, NULL, NULL) ;}return 0 ;case WM_PAINT :hdc = BeginPaint (hwnd, &ps) ;// Get vertical scroll bar positionsi.cbSize = sizeof (si) ;si.fMask  = SIF_POS ;GetScrollInfo (hwnd, SB_VERT, &si) ;iVertPos = si.nPos ;// Get horizontal scroll bar positionGetScrollInfo (hwnd, SB_HORZ, &si) ;iHorzPos = si.nPos ;// Find painting limitsiPaintBeg = max (0, iVertPos + ps.rcPaint.top / cyChar) ;iPaintEnd = min (NUMLINES - 1,iVertPos + ps.rcPaint.bottom / cyChar) ;for (i = iPaintBeg ; i <= iPaintEnd ; i++){x = cxChar * (1 - iHorzPos) ;y = cyChar * (i - iVertPos) ;TextOut (hdc, x, y,sysmetrics[i].szLabel,lstrlen (sysmetrics[i].szLabel)) ;TextOut (hdc, x + 22 * cxCaps, y,sysmetrics[i].szDesc,lstrlen (sysmetrics[i].szDesc)) ;SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;TextOut (hdc, x + 22 * cxCaps + 40 * cxChar, y, szBuffer,wsprintf (szBuffer, TEXT ("%5d"),GetSystemMetrics (sysmetrics[i].iIndex))) ;SetTextAlign (hdc, TA_LEFT | TA_TOP) ;}EndPaint (hwnd, &ps) ;return 0 ;case WM_DESTROY :PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;
}

中科院-杨力祥视频教程 08课程相关推荐

  1. 《传智播客.Net培训.net视频教程》(.net视频asp.net培训传智播客asp.net视频教程开放课程c#视频移动开发winform SQL ADO.Net HTML JavaScript

    本资源重要通知 2011年4月传智播客.Net培训-免费公开课现场视频 [重磅内容]微软移动开发介绍1-早起的鸟儿有食吃.rar 详情 53.2MB [重磅内容]微软移动开发介绍2-windows.p ...

  2. 视频教程-毕业设计课程之云南大学ASP.NET名茶购物网的设计与实现-.NET

    毕业设计课程之云南大学ASP.NET名茶购物网的设计与实现 研发工程师 现任项目经理,担任几十个大型项目负责人及架构师,拥有17年互联网操作经验,13年开发经验 王翔 ¥136.00 立即订阅 扫码下 ...

  3. 中科院计算所培训中心四季度课程安排

    从1987年成立之初至今,培训中心一如既往的秉承"科学.高效.权威.品质"的教学宗旨,以"追求卓越服务,与企业共发展"为努力目标,课程体系紧紧围绕"关 ...

  4. 中科院计算所培训中心开启课程研发新征程

    炎炎夏日,骄阳如火,中科院计算所培训中心课程研发开展得如火如荼,培训中心副校长谢新华和赵老师以挖掘名师潜力,打造优秀教师团队为目标,又一次把培训中心课程研发推向了高潮. 为了满足不同工作领域学员的需求 ...

  5. 视频教程- 1-1 课程导学和Python简介-Python干货!

    关于「课程导学和Python简介」的相关基础知识百科介绍: Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品. Py ...

  6. 01_传智播客iOS视频教程_课程介绍与知识点回顾

    OC语法中static关键字不能修饰属性,也不能修饰方法,只能修饰方法中的局部变量.static修饰局部变量之后把局部变量变成静态变量.当方法执行完之后这个变量不会被回收.下次再执行这个方法的时候这个 ...

  7. 印制电路板(PCB)的设计流程(郭天祥视频教程)

    1mil=0.025mm 1.工程师利用EDA工具设计PCB 2.在工厂中加工制作 [双面覆铜板〉下料〉叠板>数控钻导通孔〉检验.去毛刺刷洗>化学镀(导通孔金属化)>(全板电镀覆铜) ...

  8. windows程序扫雷程序设计

    具体资源见:http://download.csdn.net/detail/zhouyelihua/7604765 在学习windows程序设计中,我们希望通过一个完整的程序来学习windows AP ...

  9. 看三屏网课视频不同步的解决方法(vga和asf)

    文章目录 问题 解决方法一(不好用) 解决方法二(舍弃) 解决方法三(通用) 总结 附录 成品代码 frmleftup.htm原本文件的源代码 问题 为了学习Windows编程,最近在看<高级W ...

  10. Win32_20纯c语言版的打飞机游戏出炉了^_^

    本文由BlueCoder编写   转载请说明出处: http://blog.csdn.net/crocodile__/article/details/11860129 我的邮箱:bluecoder@y ...

最新文章

  1. jQuery中文入门指南,翻译加实例,jQuery的起点教程
  2. 信纳比(SINAD)介绍
  3. Linux下编译vtk的java版本,vtk在linux下的安裝(12月8日更新)
  4. office在线编辑器
  5. Arista与思科新一轮交锋,Arista略胜一筹
  6. hdfs中8031是什么端口号_在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊...
  7. 根据录入的计算公式计算_污水处理工程设计入门(10)—堰口计算
  8. 第五十一期:互联网不如国企,去BAT的程序员都是diao丝?
  9. Go语言的context包从放弃到入门
  10. 一文了解下对小微风控策略的优雅调整
  11. 17.EXTJs 中icon 与iconCls的区别及用法!
  12. python 一个包中的文件调用另外一个包文件 实例
  13. OpenCv图像像素操作
  14. docker常用操作(八) docker安装Zookeeper
  15. 2007年网络安全技术发展分析
  16. IT故事:软件测试点亮了我人生的烛光
  17. 南信大 计算机与软件学院 校花,美哭了!南京12所高校最美“校花”新鲜出炉!颜值爆表!你的母校上榜了吗?...
  18. linux命令解压文件到指定目录并覆盖,Linux文件压缩和解压缩命令使用详解
  19. 2021 年 8 月全国程序员薪酬终于出炉了!北京以18904元位居榜首
  20. python求三个整数最大值_Python 输入三个整数,输出最大值

热门文章

  1. 【git学习】git项目管理工具
  2. ubuntu无法安装软件问题解决
  3. JSP+javabean实现购物车功能
  4. winform中HSrollbar如何控制thumb滑块的宽度呢
  5. 软考数据库考试有题库吗_软考数据库系统工程师考试心得
  6. 完整版彻底卸载SQL Server2019
  7. VSCode改变字体颜色
  8. 想把PDF论文里面的图片导出来,有什么办法
  9. C语言程序设计(第四版)谭浩强 清华 【2000】
  10. 迅雷bolt界面引擎