为什么每次都要找到设备环境句柄才能绘图,写字,句柄是一个指针吗/

解决方案 »

  1.   

    句柄和指针的区别在于句柄只能调用系统提供的服务.
    每个进程有一个句柄表,是一个数组,数组元素是一结构体,有两个成员,1、句柄 2、该句柄对应内存地址,很多API函数接到你的句柄,根据这个数组,就能找到对应的内核对象首地址。
      

  2.   

    句柄是系统给你创建的。
    以下来自网上:
    什么是“句柄”(handle),handle的本意是把柄,把手的意思。是你与操作系统打交道的
    东东。举个通俗的例子,比如你考上了大学,入学后,学校(操作系统)会给你一个学生
    证号。注意,这个号码是学校指定的,你无法自选。有了这个号码(学生证,假设一证多用)
    享受学校提供的服务:如你就可以去图书馆借书,去食堂吃饭,去教室上课等等。但你不能
    到食堂里买啤酒,因为学校不允许这种服务。而在计算机中系统提供的服务就是API调用,
    你有了HANDLE,就可以理直气壮地向系统提出调用API的服务。
    而指针的权力就大多了,有了指针你可以到处去喝酒,打架,学校(操作系统)管不着,所以
    句柄和指针的区别在于句柄只能调用系统提供的服务。而句柄虽然是一个能相互区别的号码,
    但与我们普通的ID号又有区别,普通的ID号是可以由程序员自己定义的,而句柄不行,它是
    对象生成时系统指定的,是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的
      

  3.   

    DC,Device Context,中文叫法:设备环境或者设备上下文。
    它是个很庞大复杂的东西,一般是和某个显示或者输出环境相关的如窗体,打印机等,它的信息包括显示区域,剪裁区域,PEN,BRUSH,WindowRGN,FONT,坐标系等等等等,它是由Windows来维护的,我们不需要关心它的具体实现,只需要一个指向它的HDC句柄并通过GDI函数来使用它就成。真的想要仔细研究它,那我建议你去买GDI编程方面的书籍看看。