博文

Linux下MPlayer安装手记(2009-02-25 11:13:00)

摘要:版本信息: Linux系统版本:RHEL5.5(i386-redhat-linux) Kernel版本:2.6.18-53.el5 (由#uname -r命令获得) gcc 版本:4.1.2 20070626 (Red Hat 4.1.2-14) (由#gcc -v命令获得) 安装mplayer需要四个包的安装:主程序,皮肤,codecs以及wincodecs(win32)。这四个程序都可以从以下两个网站下载: http://www.mplayerhq.hu http://www.mplayerhq.hu/MPlayer/releases/codecs/  我下载的程序分别是以下四种: (1)codecs:all-20071007.tar.bz2 (2)wincodecs:windows-all-20071007.zip (3)mplayer src code pkg:Mplayer-1.0rc2.tar.bz2 (4)Skin:Abyss-1.7.tar.bz2 然后从Windows下搜索*.ttf,查找到字体文件simkai.ttf和以上四个文件一起放到/home/fan/MPlayer文件夹中。 首先在终端进入MPlayer文件夹:[root@localhost ~]# cd /home/fan/MPlayer 1.安装编码器 Mplayer默认/usr/local/lib/codecs/文件夹中查找解码器(我们可以运行不带参数的./configure来查看其默认解码器搜索目录)。这里我们将解码器指定安装在 /usr/lib/codecs/和/usr/lib/wincodecs文件夹中: <1>安装codecs [root@localhost ~]# cd /home/fan/MPlayer [root@localhost MPlayer]# tar vjxf essential-20071007.tar.bz2 [root@localhost MPlayer]# mv all-20071007 /usr/lib/codecs <2>安装windcodecs [root@localhost MPlayer]# unzip windows-essential-20071007.zi......

阅读全文(8866) | 评论:0

Linux常见压缩格式及解压(2009-02-19 17:32:00)

摘要:(1)*.tar <1>建立*.tar包: 将指定的文件或目录打包到指定的文件中 #tar cvf tarName.tar 源文件或目录 c用于创建.tar包 v用于执行时给出详细信息 f用于指定.tar包的文件名 例如将../blog/file文件夹压缩成test.tar: [root@localhost blog]# tar cvf test.tar file file/ file/file1 file/file2 <2>查看*.tar包里的内容 # tar tf tarName.tar t是指用于指定的,tar包中的目录和文件 f用于指定.tar包的文件名 [root@localhost blog]# tar tf test.tar file/ file/file1 file/file2  <3>释放*.tar包 # tar xvf tarName.tar x指用于释放.tar包 v用于执行时给出详细信息 f用于指定.tar包的文件名 [root@localhost blog]# tar xvf test.tar file/ file/file1 file/file2 (2)*.tar.gz(*.tgz) <1>建立*.tar.gz包 # tar cvfz tarName.tar.gz 源文件或目录 c用于创建.tar包 v用于执行时给出详细信息 f用于指定.tar包的文件名 z是指用gzip程序进行压缩 [root@localhost blog]# tar cvfz test.tar.gz file  <2>查看*.tar.gz(*.tgz)包 # tar tfz tarName.tar.gz 源文件或目录 t是指用于指定的,tar包中的目录和文件 f用于指定.tar包的文件名 z是指用gzip程序压缩方式 [root@localhost blog]# tar tfz test.tar.gz (3)*.tar.bz2 <1>建立*.tar.bz2包 #tar cvfj tarName.tar.bz2 源文件或目录 ......

阅读全文(3263) | 评论:1

MFC中的GDI绘图(5)(2008-12-22 12:56:00)

摘要:坐标映射实例 (1)建立单文档MFC项目Draw:New—>Projects—>MFC AppWizard(EXE)—>Single Document。 (2)找到CMainFrame::PreCreateWindow函数,在其中设置默认窗口大小为400 pixel*300 pixel。 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {     if( !CFrameWnd::PreCreateWindow(cs) )         return FALSE;     // TODO: Modify the Window class or styles here by modifying     // the CREATESTRUCT cs     cs.cx=400;     cs.cy=300;     return TRUE; } (3)添加OnPaint事件 资源管理器—>ClassView—>右击CDrawView 选择Add Windows Message Handler —>WM_PAINT—> Add Handler 1.     void CDrawView::OnPaint() 2.     { 3.          CPaintDC dc(this); // device context for painting   4.          // TODO: Add your message handler code here 5.   &nb......

阅读全文(4577) | 评论:0

MFC中的GDI绘图(4)(2008-12-21 21:29:00)

摘要:3、创建绘图工具并选入DC    有了画布,要绘图我们必须有画笔画刷。在Windows中有HPEN、HBRUSH等GDI对象,MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类。    一般先创建画笔(刷),然后调用CDC::SelectObject函数将画笔(刷)选入设备环境最为当前绘图工具,绘图完毕恢复设备环境以前的画笔(刷)对象,最后调用CGdiObject::DeleteObject函数删除画笔(刷)对象。    这里需要注意的是,CGdiObject::DeleteObject函数彻底删除底层GDI对象(CPen和CBrush类的基类)。在MFC中,当对象销毁时会调用对象的析构函数自动删除对象,一般不必调用CGdiObject::DeleteObject删除GDI对象,因为如果设备环境还在使用一个GDI对象时,将引起应用程序崩溃或出现难以理解的运行错误。    (1)创建画笔 BOOL CPen::CreatePen( int nPenStyle, int nWidth, COLORREF cfColor ); nPenStyle  指定画笔的风格。其可能取值的列表,请参见CPen构造函数中的nPenStyle参数。 nWidth   指定画笔的宽度。如果这个值为0,则不管是什么映射模式,以设备单位表示的宽度总是一个像素。 crColor 包含画笔的一个RGB颜色,为COLORREF结构。  此外,可通过CDC::SelectStockObject函数来调用系统预定义的库存笔对应的CGdiObject对象。 pOldPen = (Cpen*)pDC->SelectStockObject(BLACK_PEN); (2)创建画刷 BOOL CBrush::CreateSolidBrush ( COLORREF crColor ); BOOL CBrush::CreateHatchBrush( int nIndex, COLORREF crColor ); 参数: nIndex 指定......

阅读全文(9522) | 评论:1

MFC中的GDI绘图(3)(2008-12-21 19:59:00)

摘要:2、设置坐标映射    (1)Windows坐标系统 Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言, GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。 <1>逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。 <2>设备坐标系是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。设备坐标系的原点位置(0, 0)不限定在设备显示区域的左上角。 设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系三种相互独立的坐标系。 l       屏幕坐标系以屏幕左上角为原点,一些与整个屏幕有关的函数均采用屏幕坐标,如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。弹出式菜单使用的也是屏幕坐标。 l       窗口坐标系以窗口左上角为坐标原点,它包括窗口标题栏、菜单栏和工具栏等范围。 l       客户区坐标系以窗口客户区左上角为原点,主要用于客户区的绘图输出和窗口消息的处理。鼠标消息的坐标参数使用客户区坐标,CDC类绘图成员函数使用与客户区坐标对应的逻辑坐标。 (2)坐标之间的相互转换 l       编程时,有时需要根据当前的具体情况进行三种设备坐标之间或与逻辑坐标的相互转换。 l       MFC提供了两个函数CDC::DPtoLP()和CDC:: LPtoDP()用于设备坐标与逻辑坐标之间的相互转换。 l       MFC提供了两个函数CWnd::ScreenToClient()和CWnd::ClientToScreen()用于屏幕坐标与客户区坐标的相互转......

阅读全文(5560) | 评论:0

MFC中的GDI绘图(2)(2008-12-21 18:01:00)

摘要:二.MFC中GDI绘图     GDI绘图包括以下步骤:获取设备环境,设置坐标映射,创建绘图工具,调用DC绘图函数绘图。 1、获取设备环境 (1)在SDK编程中,获取设备环境的方法有两种: <1>通过API函数BeginPaint。应用程序响应WM_PAINT消息进行图形刷新时主要通过BeginPaint函数获取设备环境,在消息处理函数返回前调用API函数EndPaint释放设备环境。 函数原型为:WINUSERAPI HDC WINAPI BeginPaint( HWND hWnd,LPPAINTSTRUCT lpPaint);     //以下为Win API示例::BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);      case WM_PAINT://窗口客户区需要重绘       {           char szText[]="Hello World";           PAINTSTRUCT ps;           HDC hdc=::BeginPaint(hWnd,&ps);           ::TextOut(hdc,10,10,szText,strlen(szText));           ::EndPaint(hWnd,&ps);           return 0; } MFC对BeginPaint进行了封装: CWnd::BeginPai......

阅读全文(5950) | 评论:1

MFC中的GDI绘图(1)(2008-12-21 15:07:00)

摘要:一.关于GDI的基本概念 什么是GDI          Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。     在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面功能。在Visual C++6.0中的头文件C:\Program Files\Microsoft Visual Studio\VC98\Include\wingdi.h和Visual Studio 2005中的头文件C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\WinGDI.h是访问gdi32.dll库文件的钥匙。下面我们大致浏览一下wingdi.h(included in Windows.h)头文件: /* Bitmap Header Definition */定义了BITMAP位图结构 /* Mapping Modes */定义了DC中的坐标映射方式,包括以下常用函数: SetMapMode、SetViewportExtEx、SetViewportOrgEx、 SetWindowExtEx 、SetWindowOrgEx。 /* Stock Logical Objects */系统预定义的堆(STOCK)对象,包括BRUSH、PEN和FONT对象 /* Brush Styles */定义了画刷格式,包括SOLID、HOLLOW、HATCHED等格式 /* Hatch Styles */定义了画刷阴影格式,包括: HS_VERTICAL    /* ||||| */ HS_FDIAGONAL  /* \\\\\ */ HS_BDIAGONAL  /* ///// */ HS_CROSS       /* ++......

阅读全文(7217) | 评论:0

SQL Server 2000数据库概述(2008-12-13 19:07:00)

摘要: 一、SQL Server 2000系统数据库         SQL Server 2000安装成功后,系统会自动创建6个系统数据库,它们分别是Master、Model、Msdb、Tempdb、Pubs和Northwind。                                                    n  Master数据库:这是SQL Server系统最重要的数据库。它记录了SQL Server系统的所有系统信息。 n  Model数据库:这是所有用户数据库和Tempdb数据库的模板数据库。 n  Msdb数据库:这是代理服务数据库。它为报警、任务调度和记录操作员的操作提供存储空间。 n  Tempdb数据库:这是一个临时数据库。它为所有的临时表、临时存储过程及其他临时操作提供存储空间。 n  Pubs和Northwind数据库:它们是SQL Server自带的两个实例数据库,它们可以作为SQL Server的学习工具。 二、创建数据库     创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和文件存放位置的过程。     在SQL Server 2000中创建数据库的方法有以下三种:使用向导创建数据库、使用企业管理器创建数据库和使用Transact-SQL语言创建数据库。 1、使用向导创建数据库 n  (1)在企业管理器中,首先选中欲创建数据库的服务器节点,然后从“工具”菜单中选择“向导”(红色)选项,或从......

阅读全文(6179) | 评论:0

命名规范(2008-12-09 11:24:00)

摘要:一.术语定义 Pascal 大小写 将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例如: MessageBox Camel 大小写 标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:hInstance 二.命名概述 名称应该说明“什么”而不是“如何”。通过避免使用公开基础实现(它们会发生改变)的名称,可以保留简化复杂性的抽象层。 例如,可以使用 GetNextStudent(),而不是 GetNextArrayElement()。 三.命名原则 选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读;因此,提供人们可以理解的名称是有意义的。不过,请确保选择的名称符合适用语言的规则和标准。 四.命名方法 1、  变量的名字应该是非形式的、简单的、易记忆的。变量的作用越大,它的名字要携带的信息就越,全局变量应该受到更多的注意。 2、  即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。可能的情况下,尽量不要使用原义数字或原义字符串,如For i = 1 To 7,应该使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。 3、  只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。 4、  在变量名中使用互补对,如 min/max、begin/end 和 open/close。 5、  布尔变量名应该包含 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound。 6、  在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (此项只供参考) 7、  变量名并不是越长越好,在力求描述性的同时还要兼顾简洁清晰性。一般一次性临时变量(例如短循环索引)可以被取名为i、j、k、m 和n,它......

阅读全文(2332) | 评论:0

由MessageBox透视Win API的调用(2008-12-07 21:56:00)

摘要:   下面我们来看看Windows平台下应用程序是怎么调用Windows提供的底层API服务运行的。 我们编写Win32SDK程序时,需要弹出对话框以作出友好的选择,MessageBox这个API函数就可以实现该功能。在开头要添加<windows.h>,因为其包含了众多的API函数声明头文件。为了探究这个小小的MessageBox是怎么弹出来的,我们右击MessageBox,选择“Go to definition of MessageBox(转到定义) ”将打开<winuser.h>中的#define MessageBox  MessageBoxW定义行,我们继续对MessageBoxW右击“Go to definition of MessageBox(转到定义) ”将转到MessageBoxW的函数原型声明处: int WINAPI MessageBoxW(     __in_opt HWND hWnd,     __in_opt LPCWSTR lpText,     __in_opt LPCWSTR lpCaption, __in UINT uType); 我们在使用Windows窗口操作系统时,经常会蹦出大大小小的窗口, MessageBox只是Windows作为提示的对话框窗口单元。那么,MessageBoxW这个API函数到底在哪里实现的呢?应用程序是如何调用系统接口函数的呢? 动态链接库(.dll) 实际上Windows API函数是定义在一些DLL中的, DLL 实现了代码封装,从这个角度来看DLL才是真正意义上的API函数包,它是非开源Windows操作系统提供给我们的底层接口。DLL的编制与具体的编程语言及编译器无关。 动态链接库dll文件(Linux中与之对应的是的.so)存放在C:\WINDOWS\system目录和C:\WINDOWS\system32目录下,它在被应用程序调用时才同程序相链接。 其中最重要的DLL是User32.dll、Gdi32.dll和Kernel32.dll这三个库文件。这三个库文件中的API函数都在Windows.h头文件中进行了声明。......

阅读全文(5374) | 评论:1