我用line在窗体上画图,根据屏幕的分辨率来算坐标而画的。
然后我再窗体上加上按钮来切换分辨率。
现在的问题是:
切换分辨率后,原来画的图大小变了,本来是全屏的,现在变小了。重新画也不会变全屏。
请问这是怎么回事,该如何解决?

解决方案 »

  1.   

    当分辨率改变时
    Windows会向所有顶层窗口发送WM_DEVMODECHANGE消息
    但Vb没有将其映射成事件
    需要自己用子类(SubClass)拦截处理
      

  2.   

    你的ScaleMode设为多少
    应该是3-vbPixels
      

  3.   

    原来的贴子是这个吧请问在VB中如何画这样的图? 
    http://community.csdn.net/Expert/topic/3302/3302134.xml?temp=.9671595我觉得所有技术问题已经解决的
    就剩下你编码了
      

  4.   

    你好,谢谢你的解答!
    我初学VB,不是很懂,请问你说的“需要自己用子类(SubClass)拦截处理”应该怎么做呢?
      

  5.   

    子类代码可以参考“http://community.csdn.net/Expert/topic/3210/3210020.xml?temp=.5429651”中“rainstormmaster(暴风雨 v2.0)”的代码子类的实现原理
    将原窗口的窗口函数地址设为自己的窗口函数地址
    拦截处理掉某些消息,并将其他消息转发给原窗口函数
    这相当于面向对象编程的子类继承关系,所以命名为子类你最好买一本关于API的书系统的学一学
    Steven Roman著,陈志远译,《Visual Basic Win32 API编程》(原名《Win32 API Programming with Visual Basic》)。中国电力出版社,2001.4,¥65.00
    系统讲解Win32 API体系,并讲了一些底层内容(虚拟内存、进程注入、PE文件格式等),有部分内容收录进了MSDN
    我的评价:★★★★★刘炳文、李凤华著,《Visual Basic 6.0 Win32API程序设计》。清华大学出版社,2001.1,¥58.00
    分类且较系统讲解Win32 API,写的比较全,比较适合入门
    我的评价:★★★★☆Steve Brown著,李凤华等译,《Visual Basic开发指南》(原名《Visual Basic Developer's Guide to the Win32 API》)。电子工业出版社,2000.7,¥32.00
    分类且较系统讲解Win32 API,没有《Visual Basic 6.0 Win32API程序设计》写的那么深,但是某些专用方面稍微题了一下,可以与《Visual Basic 6.0 Win32API程序设计》对照学习
    我的评价:★★★★☆王强、周明、李定国等编著,《Windows API for 2000/XP实例精解》。电子工业出版社,2002.8,¥54.00
    讲了一些新增API集,只不过是C语言描述的
    我的评价:★★★★☆朱友芹等等编著,《新编WindowsAPI参考大全》。电子工业出版社,2000.3,¥98.00
    单个单个的API参考,只不过是C语言描述的
    我的评价:★★★★☆魏江江、林少景著,《Visual Basic API编程百例通》。科学出版社,2001.10,¥39.00
    通过实例学API的,是API的应用,将的比较浅
    我的评价:★★★☆☆现在热买的陈锐老大(TechnoFantasy)翻译的《Delphi核心API参考》(好像是这个名字),我没买,初步评价是★★★★☆
      

  6.   

    使用GetDeviceCaps得到DC信息
    使用HORZRES、VERTRES常量----------------------------------------------------------------
    原贴内容:
    你好!还是这个问题,想麻烦你:http://community.csdn.net/Expert/topic/3309/3309682.xml?temp=.1957971
    我不太懂子类,现在学也来不及,以后我会学API的。
    现在我只想知道,当分辨变化了,怎么样得到当前分辨呢?
    显然screen.width这样是不准了。
    谢谢解答,非常感谢!
      

  7.   

    GetDeviceCaps VB声明 
    Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long 
    说明 
    根据指定设备场景代表的设备的功能返回信息 
    返回值 
    Long,参见GetDeviceCaps索引表 
    参数表 
    参数 类型及说明 
    hdc Long,要查询其设备的信息的设备场景 
    nIndex Long,根据GetDeviceCaps索引表所示常数确定返回信息的类型 
    GetDeviceCaps索引表 常数 返回信息 
    DRIVERVERSION 设备驱动程序版本 
    TECHNOLOGY 下列常数之一:
    DT_PLOTTER:绘图仪。DT_RASDISPLAY:光栅显示器。DT_RASPRINTER:光栅打印机。DT_RASCAMERA:光栅照相机。DT_CHARSTREAM:字符流。DT_METAFILE:图元文件。DT_DISPFILE:显示文件 
    HORZSIZE 以毫米为单位的显示宽度 
    VERTSIZE 以毫米为单位的显示高度 
    HORZRES 以像素为单位的显示宽度 
    VERTRES 以像素为单位的显示高度 
    LOGPIXELSX 像素/逻辑英寸(水平) 
    LOGPIXELSY 像素/逻辑英寸(垂直) 
    BITSPIXEL 位/像素(每个调色板) 
    PLANES 调色板个数 
    NUMBRUSHES 设备内建刷子个数 
    NUMPENS 设备内建画笔个数 
    NUMMARKERS 设备内建标记数 
    NUMFONTS 设备内建字体数 
    NUMCOLORS 设备颜色表入口 
    ASPECTX 设备像素宽度(见ASPECTXY) 
    ASPECTY 设备像素高度(见ASPECTXY) 
    ASPECTXY 设备像素对角尺寸。这些值是互相对应的,比如((ASPECTX^2)+(ASPECTY^2))^.5 = ASPECTXY 
    PDEVICESIZE PDEVICE内部结构的大小 
    CLIPCAPS 下列常数之一:
    CP_NONE:设备没有内建剪切
    CP_RECTANGLE:设备可剪切矩形
    CP_REGION:设备可剪切区域 
    SIZEPALETTE 系统调色板入口(见RASTERCAPS RC_PALETTE标志) 
    NUMRESERVED 系统调色板保留入口 
    BLTALIGNMENT 有的显示设备在图象对齐本常数值指定的地址范围时可更快的完成图象运算。若没有区别则为0 
    COLORRES 颜色分辨率(以位/像素位单位,见RASTERCAPS RC_PALETTE标志) 
    DESKTOPHORIZRES 桌面水平和垂直分辨率(仅适用于NT)。某些设备支持虚拟桌面可比物理显示尺寸大 
    DESKTOPVERTRES 
    PHYSICALOFFSETX 打印机的可打印区的水平/垂直偏移 
    PHYSICALOFFSETY 
    PHYSICALHEIGHT 以设备单元表示的打印页面物理高/宽度 
    PHYSICALWIDTH 
    SCALINGFACTORX 打印机水平和垂直缩放系数 
    SCALINGFACTORY 
    VREFRESH 显示垂直刷新(只适用于NT) 
    RASTERCAPS 由下列值组成的标志:
    R_BANDING:设备支持频带。RC_BIGFONT:字体可大于64K。RC_BITBLT:支持BitBlt。RC_BITMAP64K:位图可大于64K。RC_DI_BITMAP:支持SetDIBits和GetDIBits函数。RC_DIBTODEV:支持SetDIBitsToDevice函数。RC_FLOODFILL:支持FloodFill API。RC_NONE:不支持光栅操作。RC_PALETTE:设备基于调色板。 RC_SAVEBITMAP:可存储位图。RC_SCALING:内建缩放。RC_STRETCHBLT:支持 StretchBlt 。RC_STRETCHDIB:支持StretchDIBits 
    CURVECAPS 描述内部曲线生成功能的标志。见api32。txt文件中关于CC_xxx的完整列表 
    LINECAPS 描述内部直线生成功能的标志。见api32。txt文件中关于LC_xxx的完整列表 
    POLYGONCAPS 描述内部多边形生成功能的标志。见api32。txt文件中关于PC_xxx的完整列表 
    TEXTCAPS 由下列值组成的标志:
    TC_OP_CHARACTER:字体可被放在任意位置。TC_OP_STROKE:设备可删除内部字体任意笔画。 TC_CP_STROKE:内部字体可据任意像素剪切。TC_CR_90:字体可被旋转90度 。TC_CR_ANY:支持字符旋转 。TC_SF_X_YINDEP:支持字符X和Y方向独立缩放。TC_SA_DOUBLE:内部字体尺寸可被放大一倍。TC_SA_INTEGER:内部字体可以整数倍缩放。TC_SA_CONTIN:内部字体可被连续缩放。TC_EA_DOUBLE: 设备可创建粗体字。TC_IA_ABLE:设备可创建斜体字。TC_UA_ABLE: 设备可建带下划线字。TC_SO_ABLE: 设备可创建加框字。TC_RA_ABLE:支持光栅字体。TC_SCROLLBLT:支持光栅字体。TC_VA_ABLE: 支持矢量字体 
      

  8.   

    谢谢zyl910(910:分儿,我又来了!) ,先结贴,我慢慢研究一下.