1.如何理解逻辑坐标和设备坐标?
2.什么是volatile变量,他有什么用?
3.我用CLASS WIZARD创建了一类,可是这个类由于某种原因我不想用了,我应该如何删除它??
   我将它所在的文件删除了,虽然这个类在ClassView中看不见了,但在class wizard里面这个类仍然存在,应该怎么办??

解决方案 »

  1.   

    怎么也不给点分——打这些字我手都酸了^_^1.设备坐标    设备坐标不会改变。不论使用何种映射模式,逻辑单位都相同。如果要绘制一个边长为100个单位的正方形,在RECT结构中设置该值,并确定正方形的方位和尺寸,然后调用Rectangle(hdc, &RECT)绘制。该过程与10英寸屏幕还是12英寸没有关系。
        当往GDI函数中送入值时,给出的是逻辑尺寸或方位。Windows将它转换为输出设备的尺寸或方位。设备环境决定的GDI调用结果的实际尺寸或方位。当调用Ellipse(100, 100, 300, 300)绘制一个圆时,就是在告诉GDI,以横坐标300,纵坐标300为圆心,绘制一个半径为100个单位的圆。碰巧,默认模式下MM_TEXT下,1个单位被转换为一个象素。对于输出设备不一定如此。因为它的水平和垂直分辨率不一定是相同的。逻辑坐标    并非所有所有设备都是同样生产出来的。例如,显示器屏幕可以包含1024×768个或更多的象素,但是屏幕实际宽度是不大相同的。在1024*768的分辨率下,12英寸宽的屏幕水平方向上大约有85个象素,而8英寸的屏幕每英寸大约有102个象素。而对于屏幕以外的其他输出设备,如打印机、标绘器、传真机等,情况更加复杂。
        如果程序在屏幕上显示了一个表格,并允许发送到打印机或传真机上,可能就要将其他设备环境的映射模式改为非文本,而将屏幕设备环境保持为MM_TEXT模式。接着就靠设备驱动程序将逻辑单位转换为打印机的可用单位。2.volatile    volatile关键字是const关键字的反义词。后者告诉编译器:标识符的值是不变得。而volatile修饰符告诉编译器:其值可能会在任何时候改变,甚至可能会在外界的影响下改变。
        当使用了volatile修饰符之后,编译器不会去试图对该变量进行优化。通常,当一个变量为未数条语句出现之后,编译器会将其放入寄存器或内部缓冲区。当用到它时,在将它取出。如果变量的值突然发生了变化(例如变量存放的是计算机系统时钟当前时间的值),变量就不再有效了,但是运行时代码无法得知可能的变化。
        另外,如果程序改变了一个volatile变量的值,即使程序中的下一条语句会再一次修改它,它也会立即被写回内存。
        在当今运用的编程技术——ActiveX、COM——当中,这样的事件完全是有可能的。在分布式COM中,程序的一部分可能在其他计算机上运行,因而数值得包含有可能来源于其他计算机。
        即使抛开先进技术不谈,在多线程的程序当中也有可能由一个线程修改另一个线程的变量。在大多数的单线程的应用中,可能会觉得volatile没有用,但是将来会发现,越来越多的地方可以用到它。3.关闭工程,在工程目录下,找到.CLW文件,删除,然后再重新打开工程,打开ClassWizard就可以了。