中科院-杨力祥视频教程 08课程
这节课内容主要讲解了如何在屏幕上显示字符 和 滚动条的使用
需要掌握的知识点:
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课程相关推荐
- 《传智播客.Net培训.net视频教程》(.net视频asp.net培训传智播客asp.net视频教程开放课程c#视频移动开发winform SQL ADO.Net HTML JavaScript
本资源重要通知 2011年4月传智播客.Net培训-免费公开课现场视频 [重磅内容]微软移动开发介绍1-早起的鸟儿有食吃.rar 详情 53.2MB [重磅内容]微软移动开发介绍2-windows.p ...
- 视频教程-毕业设计课程之云南大学ASP.NET名茶购物网的设计与实现-.NET
毕业设计课程之云南大学ASP.NET名茶购物网的设计与实现 研发工程师 现任项目经理,担任几十个大型项目负责人及架构师,拥有17年互联网操作经验,13年开发经验 王翔 ¥136.00 立即订阅 扫码下 ...
- 中科院计算所培训中心四季度课程安排
从1987年成立之初至今,培训中心一如既往的秉承"科学.高效.权威.品质"的教学宗旨,以"追求卓越服务,与企业共发展"为努力目标,课程体系紧紧围绕"关 ...
- 中科院计算所培训中心开启课程研发新征程
炎炎夏日,骄阳如火,中科院计算所培训中心课程研发开展得如火如荼,培训中心副校长谢新华和赵老师以挖掘名师潜力,打造优秀教师团队为目标,又一次把培训中心课程研发推向了高潮. 为了满足不同工作领域学员的需求 ...
- 视频教程- 1-1 课程导学和Python简介-Python干货!
关于「课程导学和Python简介」的相关基础知识百科介绍: Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品. Py ...
- 01_传智播客iOS视频教程_课程介绍与知识点回顾
OC语法中static关键字不能修饰属性,也不能修饰方法,只能修饰方法中的局部变量.static修饰局部变量之后把局部变量变成静态变量.当方法执行完之后这个变量不会被回收.下次再执行这个方法的时候这个 ...
- 印制电路板(PCB)的设计流程(郭天祥视频教程)
1mil=0.025mm 1.工程师利用EDA工具设计PCB 2.在工厂中加工制作 [双面覆铜板〉下料〉叠板>数控钻导通孔〉检验.去毛刺刷洗>化学镀(导通孔金属化)>(全板电镀覆铜) ...
- windows程序扫雷程序设计
具体资源见:http://download.csdn.net/detail/zhouyelihua/7604765 在学习windows程序设计中,我们希望通过一个完整的程序来学习windows AP ...
- 看三屏网课视频不同步的解决方法(vga和asf)
文章目录 问题 解决方法一(不好用) 解决方法二(舍弃) 解决方法三(通用) 总结 附录 成品代码 frmleftup.htm原本文件的源代码 问题 为了学习Windows编程,最近在看<高级W ...
- Win32_20纯c语言版的打飞机游戏出炉了^_^
本文由BlueCoder编写 转载请说明出处: http://blog.csdn.net/crocodile__/article/details/11860129 我的邮箱:bluecoder@y ...
最新文章
- jQuery中文入门指南,翻译加实例,jQuery的起点教程
- 信纳比(SINAD)介绍
- Linux下编译vtk的java版本,vtk在linux下的安裝(12月8日更新)
- office在线编辑器
- Arista与思科新一轮交锋,Arista略胜一筹
- hdfs中8031是什么端口号_在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊...
- 根据录入的计算公式计算_污水处理工程设计入门(10)—堰口计算
- 第五十一期:互联网不如国企,去BAT的程序员都是diao丝?
- Go语言的context包从放弃到入门
- 一文了解下对小微风控策略的优雅调整
- 17.EXTJs 中icon 与iconCls的区别及用法!
- python 一个包中的文件调用另外一个包文件 实例
- OpenCv图像像素操作
- docker常用操作(八) docker安装Zookeeper
- 2007年网络安全技术发展分析
- IT故事:软件测试点亮了我人生的烛光
- 南信大 计算机与软件学院 校花,美哭了!南京12所高校最美“校花”新鲜出炉!颜值爆表!你的母校上榜了吗?...
- linux命令解压文件到指定目录并覆盖,Linux文件压缩和解压缩命令使用详解
- 2021 年 8 月全国程序员薪酬终于出炉了!北京以18904元位居榜首
- python求三个整数最大值_Python 输入三个整数,输出最大值