CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

今天去面试,面试官放了句很牛的话,“去CSDN问吧,没人能说清楚设备句柄(HDC)是什么”

楼主jyg8888(鸟哥)2005-12-08 14:14:16 在 VC/MFC / 基础类 提问

我当场被这个问题问傻掉了  
  我说我经常来这里,他就说了   去CSDN问吧,没人能说清楚设备句柄(HDC)是什么  
  不管怎么样     我想来问问   顺便也张长知识 问题点数:0、回复次数:58Top

1 楼cici2006(以不变应万变)回复于 2005-12-08 16:22:12 得分 0

座先Top

2 楼jyg8888(鸟哥)回复于 2005-12-08 16:25:47 得分 0

哎   请高手指点迷津呀  
  Top

3 楼milkzhang()回复于 2005-12-08 16:32:07 得分 0

跟问一个不会煮饭的人怎么煮饭一样的道理Top

4 楼firmbird(firmbird)回复于 2005-12-08 16:32:40 得分 0

拐翻,“1”是什么,全世界没有人能说清楚。Top

5 楼jyg8888(鸟哥)回复于 2005-12-08 16:55:44 得分 0

(HDC)设备句柄  
  请参考SDK知识  
  Top

6 楼jyg8888(鸟哥)回复于 2005-12-08 16:57:08 得分 0

switch     (uMsg)  
  {  
     
  case   WM_PAINT:  
                    //   hdc   =   BeginPaint   (hwnd,   &ps)   ;  
                    //   GetClientRect   (hwnd,   &rect)   ;  
                    //   DrawText   (hdc,   TEXT   ("Hello,   Windows   98!"),   -1,   &rect,DT_SINGLELINE   |   DT_CENTER   |   DT_VCENTER)   ;  
    //   EndPaint   (hwnd,   &ps)   ;  
                      return   0   ;  
          case   WM_DESTROY:  
    PostQuitMessage   (0)   ;  
                    return   0   ;  
  }  
  ==========================================  
  Top

7 楼jyg8888(鸟哥)回复于 2005-12-08 17:01:29 得分 0

读者可能还记得,句柄只不过是一个数值,Windows以它在内部使用对象。程序写作者从Windows取得句柄,然后在其它函数中使用该句柄。设备内容句柄是GDI函数的窗口「通行证」,有了这种设备内容句柄,程序写作者就能自如地在显示区域上绘图,使图形如自己所愿地变得好看或者难看。  
   
  设备内容(简称为「DC」)实际上是GDI内部保存的数据结构。设备内容与特定的显示设备(如视讯显示器或打印机)相关。对于视讯显示器,设备内容总是与显示器上的特定窗口相关。  
   
  设备内容中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。例如,对于TextOut,设备内容的属性确定了文字的颜色、文字的背景色、x坐标和y坐标映像到窗口的显示区域的方式,以及显示文字时Windows使用的字体。  
   
  当程序需要绘图时,它必须先取得设备内容句柄。在取得了该句柄后,Windows用内定的属性值填入内部设备内容结构。在后面的章节中您会看到,可以通过呼叫不同的GDI函数改变这些默认值。利用其它的GDI函数可以取得这些属性的目前值。当然,还有其它的GDI函数能够在窗口的显示区域真正地绘图。  
   
  当程序在显示区域绘图完毕后,它必须释放设备内容句柄。句柄被程序释放后就不再有效,且不能再被使用。程序必须在处理单个消息处理期间取得和释放句柄。除了呼叫CreateDC(函数,在本章暂不讲述)建立的设备内容之外,程序不能在两个消息之间保存其它设备内容句柄。  
   
  Windows应用程序一般使用两种方法来取得设备内容句柄,以备在屏幕上绘图。  
   
   
  ======================摘自WINDOWS程序设计=================  
  问题是我看的不太理解  
  能通俗的概括一下吗    
   
   
   
   
   
  Top

8 楼mqmelon(晓风)回复于 2005-12-08 17:28:08 得分 0

我的理解:设备是一种资源,为了能使用为每种设备为其分配了一个标识,即设备句柄,就象指针指向一个结构或类一样,这样也能方便实现设备无关性。Top

9 楼fhqiplj(霏霏鱼)回复于 2005-12-08 17:38:15 得分 0

可以认为是一个内核资源,句柄就是这个资源的一个"指针",让你可以方便的调用Top

10 楼kenskens(☆☆☆☆☆☆)回复于 2005-12-08 18:01:38 得分 0

想研究OS源码很久了,这位考官的话更坚定了偶的决心,Windows下好多东西都只能人云亦云,似是而非,矇矇胧胧。。。  
   
  感觉跟着MS走,就只能像人家说的那样吃青春饭,可是不跟着它走,搞不好连青春饭都没得吃。。。   反正偶是不打算再跟MS屁股后面追了  
   
  梁肇新先生说。Net和Java就像别人挖好的一座金碧辉煌的大坑,引诱程序员往里跳......Top

11 楼Featured(我握着爱情的门票静静排队……)回复于 2005-12-08 18:30:39 得分 0

马甲?Top

12 楼lxb365(to be loved)回复于 2005-12-08 19:47:36 得分 0

我也想知道Top

13 楼hell_wolf(浪花)回复于 2005-12-08 20:16:52 得分 0

upTop

14 楼hell_wolf(浪花)回复于 2005-12-08 20:18:46 得分 0

哪个公司的牛人这么瞧不起csdn上的人Top

15 楼Pigwen(Pigwen)回复于 2005-12-08 20:45:09 得分 0

为什么要说清楚?Top

16 楼wxshzf(oldriver)回复于 2005-12-08 20:46:43 得分 0

帮顶接分Top

17 楼billjoy(虫虫头低低)回复于 2005-12-08 20:51:26 得分 0

?_?Top

18 楼huangjianmin(撒旦使者)回复于 2005-12-08 21:34:19 得分 0

人家明明说清楚了,听的人硬是要说人家没说清楚.  
  刀把抓在听的人手里,他爱怎么说怎么说吧.反正俺就当它一个"设备标识"Top

19 楼pomelowu(羽战士)回复于 2005-12-08 21:37:48 得分 0

那个面试官肯定不知道CSDN有个ID叫FengYuanTop

20 楼jinghao666666(努力工作!!!)回复于 2005-12-08 21:44:21 得分 0

楼主太阴了。连HDC都不知道还去面试?明明是自己正学习搞不懂非要说什么面试。其实你要是真心请教的话csdn肯定有不少人帮你的。这样把高手都吓跑了。靠。没人性。Top

21 楼boyzhang(张郎)(爱你爱到Windows没BUG的那天)回复于 2005-12-08 21:45:14 得分 0

什么是设备呀?     /:)Top

22 楼nlstone(天外流星)回复于 2005-12-08 21:48:11 得分 0

我来给个标准参考答案:)  
  Usually,   the   main   information   of   a   handle   is   an   integer   index   into   an   internal   table.   But   this   is   not   always   true.   GDI   handles   have   extra   information   like   object   type   and   a   re-use   count.   Some   handles   are   actually   pointers.  
   
  There   are   three   major   groups   of   handles:    
   
  1)   kernel   handles,   exposed   by   KERNEL32.DLL.   Files,   thread,   process,   ..  
  2)   user   handles,   exposed   by   USER32.DLL.   Icons,   menus,   windows,   cursors,   ...  
  3)   GDI   handles,   exposed   by   GDI32.DLL.   DC,   font,   region,   DDB,   DIB   section,   pen,   brush.  
  Top

23 楼nlstone(天外流星)回复于 2005-12-08 21:54:30 得分 0

鉴于这里小菜同志为数不少,补充一下,windows内部有好几张大表,用来记录内核的各类数据,如进程/文件/显示资源什么的,用户要使用这些核心资源,就要能直接或间接知道这些资源在表中的位置,HDC大多数时候就是作为一个整数索引来标记该资源在表中的位置,这就是上面提到的:  
  Usually,   the   main   information   of   a   handle   is   an   integer   index   into   an   internal   tableTop

24 楼mabaocheng(做好.NET的学习者)回复于 2005-12-09 08:28:27 得分 0

我水平是水,抛开问题本身不说,主考官这么说CSDN上的兄弟们,感觉这样的主考官在公司很不懂得为人!Top

25 楼yooono(Di调)回复于 2005-12-09 09:06:59 得分 0

他得罪我了  
  但是我又能拿他怎么办呀!Top

26 楼lonely001(独行客)回复于 2005-12-09 09:35:47 得分 0

这个问题如果楼主去看过《Windows图形编程》应该就会有答案了。  
  好象这本书的作者在CSDN也有个ID,五星的:)Top

27 楼rainliuyu(今天不下雨)回复于 2005-12-09 09:58:06 得分 0

能告诉我身份证号码是干吗的吗?Top

28 楼guosx(玄远)回复于 2005-12-09 10:41:22 得分 0

markTop

29 楼snakebite2008(3DFX)回复于 2005-12-09 10:46:10 得分 0

参考UNIX操作系统教程,里面关于设备的描述  
  其实我觉得Windows是从UNIX系列变异(或着仿造)出来的一个"怪胎",有些地方还残留着些许痕迹Top

30 楼lzzqqq(Jonersen)回复于 2005-12-09 10:55:06 得分 0

句柄就是一个指针,指向一个东西,他想让你说清楚什么?搞什么破飞机?Top

31 楼lzzqqq(Jonersen)回复于 2005-12-09 11:00:51 得分 0

之所以叫"句柄"而不叫指针,其实就是个指针,只是操作系统为了安全或别的不可告人的原因,不想告诉你他指向的具体数据结构.其实就是个指针啊.这个鸟考官到底懂不懂啊?Top

32 楼vc_asm(哥俩好)回复于 2005-12-09 11:03:32 得分 0

路过,填碗水  
   
  Top

33 楼lqm1003(江南倦客)回复于 2005-12-09 11:23:46 得分 0

自己想问问题就直说吧,  
  不过看样子楼主的激将法不是很管用Top

34 楼pinel()回复于 2005-12-09 11:42:22 得分 0

就是一个数据结构的指针Top

35 楼longx()回复于 2005-12-09 11:51:40 得分 0

本质上句柄就是指针,   Windows   为什么引入句柄?   主要是因为   Windows内存管理决定的,由于程序可能从内存保存到磁盘文件,以后又装入内存,   每次装入的内存区域可能各不相同,   如果直接使用指针,问题就出现了,   引入句柄作为内核对象(常住内存)从而间接指向应用程序数据,Windows   内存管理程序负责应用程序从磁盘装入时,负责修改句柄所指向的地址。Top

36 楼iicup(双杯献酒)回复于 2005-12-09 11:54:06 得分 0

好像是  
  #define   HDC   UINTTop

37 楼wjyasd(金子鱼)回复于 2005-12-09 12:33:29 得分 0

0xXXXXXXXXTop

38 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2005-12-09 12:52:50 得分 0

如果你想开门的话,那么找门把手;  
   
  如果你想颠大勺的话,那么找勺把;  
   
  如果你想在QQ上找到我的话,可以在查找里填入我的QQ号;  
   
  你想知道这篇回复是谁写的,记住JYK就可以了;  
   
   
  你想找到一个窗口的话,找到窗口的句柄就行了。  
   
  Top

39 楼xnlcx(J2EE.Net)回复于 2005-12-09 12:57:44 得分 0

 
  梁肇新先生说   .Net和Java就像别人挖好的一座金碧辉煌的大坑,引诱程序员往里跳......  
   
  DTop

40 楼firmbird(firmbird)回复于 2005-12-09 13:11:45 得分 0

=>typedef   HANDLE   HDC  
  =>typedef   PVOID   HANDLE  
  正如楼上有人说的就是一个指针嘛,真想问问哪个鸟考官他想问什么?他自己能不能说清楚HDC是什么。微软定义的数据结构,又没公开,谁知道是什么样子的呢Top

41 楼woanon(嗳老虎游)回复于 2005-12-09 13:34:40 得分 0

晕呼呼Top

42 楼codewarrior(会思考的草)回复于 2005-12-09 13:46:12 得分 0

呵呵,欢迎袁老大去bs此人。Top

43 楼wjjdnajj(色空)回复于 2005-12-09 14:02:40 得分 0

指针Top

44 楼aa3000(杀手K)回复于 2005-12-09 14:50:06 得分 0

.Net   和   JAVA   是大坑?我还没跳呢。Top

45 楼WuOu(天堂*蓝珀湖*仰音*诚彦)回复于 2005-12-09 15:28:52 得分 0

Mark.Top

46 楼rizzk_sun(我是小把戏)回复于 2005-12-09 16:09:43 得分 0

我来学习,顺便BS那面试官Top

47 楼eslbs(书林跋涉)回复于 2005-12-09 16:54:04 得分 0

同意    
  看   《WINDOW图形编程》   可以对HDC有进一步的了解  
   
  汗   这本书是中国人用英语写的   然后由另一批中国人翻译成中文的书……    
  写的很深    
  能看懂的人就算很厉害的人了……  
   
  Top

48 楼lisiyong(小样)回复于 2005-12-09 16:56:40 得分 0

Mark.  
  Top

49 楼jimmyge(Do Re Mi)回复于 2005-12-09 17:04:35 得分 0

www.baidu.comTop

50 楼weiyongzhao(好人)回复于 2005-12-09 17:47:12 得分 0

能听到高手讨论,真是不枉我打开这个页面。Top

51 楼pomelowu(羽战士)回复于 2005-12-09 17:50:07 得分 0

看来还是很多人不知道FengYuan...   嘿嘿~Top

52 楼fisheryj(重新开始)回复于 2005-12-09 18:11:03 得分 0

大哥     你什么都不会就不要去面试了  
  免得又出什么新闻  
  大学毕业生月薪200  
  晕倒Top

53 楼cssin(Steven Liu)回复于 2005-12-09 21:25:50 得分 0

在WINDOWS下写东西,没必要把什么都搞清楚吧!  
  先学会怎么用再说,连用都用不好,怎么可能搞的清楚~~Top

54 楼JFlyer(一万年太久,只争朝夕)回复于 2005-12-09 21:37:40 得分 0

在我看来所有句柄都是void*   ,HWND与HDC在本质上都是相同的,都是指向一段内存空间的指针,但又有所不同,但这个不同是指给编译器看的,在SDK中没有类的概念,HWND可以看作在面向对象编程中指向wndclass窗口类的指针,HDC可以看作是指向DeviceCaps设备描述符类的指针。Top

55 楼zx_sanjin(www.chmbook.com - CHM电子书网)回复于 2005-12-11 10:25:38 得分 0

如果说大部分人说不清楚那倒是真的,如果说没人那就只能说面试官孤陋寡闻。这种借助贬低一个群体来抬高自己身价的人RP可能也不怎么样。  
   
  说CSDN没有高手,那是井底之蛙:  
   
  不知道袁老大是何许人的请看,他在CSDN的ID是FengYuan:  
   
  姓名   袁峰    
       
  网站   www.fengyuan.com    
  电邮   fyuan@fengyuan.com    
  博客   blog.joycode.com/fyuan    
  社区   CSDN    
       
  简历   1978   至   1982   上海工业大学   学士.   首次编程用   ALGOL,   国产   709   机,   纸带穿孔.   毕业用   CPM/86,   八寸软盘.    
    1982   至   1991   南京大学   硕士,   博士,   讲师.   项目有编译,   软件自动化,   知识工程,   电脑绣花软件.    
    1993   至   2001   新加坡惠普,   后美国惠普,   软件设计工程师.   产品有掌上机,   计算器,   喷墨打印机.   著   《Windows   图形编程》.      
    2001   至   今   微软,   软件设计工程师.   专攻   GDI,   GDI+,   Avalon,   打印系统.    
   
   
   
  -------------------------------------------------------  
  MyCSDN   -   CSDN离线数据浏览工具。(恒金软件出品)      
  可下载论坛文件、文档文章和全文搜索论坛数据以供离线浏览。支持签名回复。  
  下载地址:http://nj.onlinedown.net/soft/6591.htmTop

56 楼aspvbjava(注定走入地狱)回复于 2006-03-15 13:04:02 得分 0

句柄是映射到进程空间的虚拟内存地址吧?Top

57 楼echomo123(无语)回复于 2006-03-15 13:28:51 得分 0

什么公司那么鸟啊?Top

58 楼baodi_z(冷冷的太阳)回复于 2006-03-15 13:32:58 得分 0

去MS问吧,肯定有人知道Top

相关问题

  • 如何建立256色的绘图句柄(hdc)?
  • 句柄?
  • 句柄
  • 请问知道了对象的HDC,如何获得对象的句柄?
  • 程序运行两小时后OnCtlColor的pDC参数句柄m_hDC变为NULL?
  • 关于句柄?
  • 句柄问题?
  • equals 和句柄??
  • 找句柄.....
  • 关于句柄

关键词

  • .net
  • 指针
  • 函数
  • 内存
  • csdn
  • 内容
  • 属性
  • 图形
  • 数据结构
  • 区域

得分解答快速导航

  • 帖主:jyg8888

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo