today,i learn from reading,keep moving.

 

Unicode是全新的编码方式,其整合了包括以前的各种标准,而且扩展很平滑。但是这种双字节的编码方式使得原来适用于

单字节字符的几乎所有方法都出现不同程度的异常,为其推广增加了难题,现在解决这种问题的方法是利用宏。宏可以通

过特定条件判别来确定到底是哪个版本的字符或字符串处理方法,从而实现新旧标准的一致性。为了使我们的程序支持这

种兼容,一个很好的习惯是:将以前的char类型定义都习惯为TCHAR,将字符串赋值都用TEXT宏来限定,等等。
windows中包含的c标准库函数也提供了格式化的输出函数,sprintf,fprintf等等;
队列消息主要是那些由windows系统获取的,比如键盘键入消息,鼠标点击消息,屏幕移动消息等等,他们将存入消息队列

,等待应用程序的消息检索,检索到后会通过windows系统dispatch到窗口的窗口过程中去处理;
非队列消息往往是由于应用程序调用了系统的相关函数,入createwindows(),或点击菜单等,触发相关的消息会直接交

由窗口过程处理,而不进入消息队列。
WM_NCPAINT()方法的重载实现窗口的初始隐藏问题。
WM_PAINT第一次调用是在winmain()初始化时的updatewindow时触发的(窗口过程收到的第一条消息时WM_CREATE)。之后再窗口改变大小,覆盖和恢复时会自动触发

,或者调用InvalidateRect()和InvalidateRgn()来显示强制生成WM_PAINT.与WM_PAINT相关的概念:
无效区域或者更新区域:有这类区域时才会触发wm_paint消息。
窗口过程处理WM_PAINT消息时,在调用BeginPaint函数后,整个客户区就会变得有效。程序也可以调用validateRect函数

使客户区中任何矩形变得有效。

DC(设备环境)在视频显示设备上,与特定的显示窗口向关联,其结构内部的属性决定了当前绘制窗口的方式,比如字体

,颜色,背景色,坐标等。在进行设备绘图时,需要首先获取该设备环境的句柄,在绘图完毕后要释放这个设备句柄。
windows程序通常有两证方法获取句柄:
1 beginpaint():擦去无效区域的背景使其有效,以便绘图,填充PAINTSTRUCT结构。
endpaint函数()释放DC句柄。背景不擦除:invalidateRect()最后一个参数设置为FALSE。若想自己擦除背景,就要自

己响应WM_ERASEBKGUD消息。可以利用invalidateRect()来强制无效特定区域,从而实现WM_PAINT的作用范围改变。
2.GetDC()作用范围不是无效区域,而是整个客户区,它的调用也不会使无效的客户区有效化,需要自己调用函数ValitdateRect()来实现。此外GetWindowDC()方法可以获取到对应该窗口的DC,作用范围还有标题栏。 RealeaseDC()将释放DC资源。


TextOut(hdc,x,y,psText,ilength)不支持回车、换行、制表和退格等字符。且不以\0为结尾,而是利用指定的参数iLength来确定长度。x,y是逻辑坐标。

你可能感兴趣的:(c,windows,扩展)