MFC中CreateCompatibleBitmap的边界

在MFC的单文档框架下,视图是CSroolView类,在视图类的ondraw函数中利用创建的内存设备上下文来绘制图形,

memDC.CreateCompatibleDC(NULL);

bitmap.CreateCompatibleBitmap(pDC,width,height);

在这里这个width和height有没有限制大小,这两个变量是int型受类型的限制,当然这不是要讨论的,

我的编程环境是win10、vs2015。

这时的pDC是CSroolView的dc。

当我在width=1000000时,bitmap返回是null,于是我通过调整heigth的大小实验,最终在height=536的时候,bitmap不是null,这是个临界值。再在这基础上调整width的值,width的临界值是1001624。

width = 1001624

heigth = 536

得到这个结论后,又想到可能是在CSroolView的构造函数中SetScrollSizes()的参数sizeTotal设置滚动条有关,但是改变大小并没有影响结果。

后来在查找资料CreateCompatibleBitmap使用的是系统内核的分页内存,可能是这个有限制的原因。

不过当pDC改成上文中的memDC时,width和height最大就会增大。width*heigth大概有1G

你可能感兴趣的:(c++)