现在的位置: 首页 > 综合 > 正文

2011年6月17日新知识

2014年09月05日 ⁄ 综合 ⁄ 共 2768字 ⁄ 字号 评论关闭

 1.摄像机镜头

       长焦、中焦、短焦(广角)都是针对标准镜头而言的。

  对于135相机而言,50MM镜头算是标准镜头,比较符合人们普通习惯的视角。

  小于50mm的镜头就是短焦(广角)。50mm-135mm之间的镜头是中焦,大于135mm的镜头是长焦。

  

  

长焦

       长焦就是镜头可以伸至比较远的距离,如10倍就是把35毫米的镜头伸至350毫米,便于捕捉远处的景物;短焦一般就是指近焦,或者微距,就是离镜头很近的景物可以拍到,一般拍摄书中的文字用的着;调焦就是对焦,使景物在镜头或显示屏上变得清晰。

2.通用对话框属性

        CFileDialog 中的dwFlags 中放入的是对话框的风格和特性值。

        OFN_FILEMUSTEXIST和 OFN_PATHMUSTEXIST要求用户在打开对话框的编辑控件中输入的文件名或路径名必须存在。
        OFN_LONGNAMES 告诉对话框显示长文件名。
        OFN_EXPLORER 告诉WINDOWS对话框的外观必须类似资源管理器。
        OFN_HIDEREADONLY 指定不要显示只读文件(既使它的扩展名符合过滤模式)。

3.GetWindowRect和GetClientRect

   这里是转帖,原文:http://blog.chinaunix.net/u/25372/showart_304363.html
           GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。

    GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  

    ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标.

    ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.     我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。   

    对GetWindowRect取得的矩阵ScreenToClient后,矩阵的大小没有变小,(-3,-29)是窗口的左上角的坐标,相对窗口客户区左上角。   

    对GetClientRect取得的矩阵ClientToScreen后,矩阵也没有变大,新得到的矩阵是窗口客户区在屏幕坐标系上的RECT。

4.光标

   HCURSOR是光标句柄。

SetCursor

     概述

  rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。

详述rand()

  (1)使用该函数首先应在开头包含头文件stdlib.h   #include<stdlib.h>   (2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。   (3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:   printf("Random numbers are: %i %i/n",rand(),rand());   (4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。   (5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

6.非MFC工程使用MFC库时的问题及解决办法
     这段文章转载自小鱼fish/云傲霆yunaoting的博客文章:

 

      非MFC工程创建时是不支持MFC特性的,也就是说在这些工程中不能使用MFC库中的类,如CString,CArray等等;然而我们在处理实际问题时却常常会有使用这些类的希望,因为很多时候它们可以使事情更加简单化,例如,要从指定的目录中搜索满足条件的文件,用CFileFind类将会非常方便。可能有人会说,为何不在一开始就创建MFC工程呢?问题在于MFC工程会产生很多向导生成代码,如基于单文档的工程会有View,Doc等类,很多时候我们只需要一个空工程就可以了;而且,我们可能经常会在已有的工程上直接进行修改、再加工。

MFC工程使用MFC库时最常见的问题就是windows.h重复包含错误,具体如下:

fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #i nclude <windows.h>

 

  1)工程à设置中,将MFC的使用由原来的“no using MFC(不使用MFC)”改为“Use MFC in a shared dll(在共享DLL中使用MFC)

  2)头文件包含

  不同的MFC类需包含的头文件是不一样的。常用的类,如CString, CEdit 等,包含afxwin.h就可以了,CFileFind需要包含afx.h,即#i nclude <afx.h>

   如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement.

  3)include 语句一定要写在首行

   这一点很重要,通常出现前面讲到的windows.h重复包含错误,都是因为#i nclude 语句没有写在首行。另外还要注意的是,如果#i nclude语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:

=============

test.h文件的内容如下:

include <afxwin.h> //保证该语句在首行

include …

 

test.cpp的文件内容如下:

#i nclude “test.h” //同样也要保证该语句在首行

include …

=============

 

【上篇】
【下篇】

抱歉!评论已关闭.