如何解决拖动表单出现得activex控件的乱动问题?
表单的风格是自己画的,为了能够拖动加了如下代码:
*********************************************************
local liHWnd, ;
liHDC, ;
liPixelsPerInchX, ;
liPixelsPerInchY
* 定义一些常数。
#define cnLOG_PIXELS_X 88
* 来自 WINGDI.H
#define cnLOG_PIXELS_Y 90
* 来自From WINGDI.H
#define cnTWIPS_PER_INCH 1440
* 每英寸1440 缇
* 定义一些 Windows API 函数
declare integer GetActiveWindow in WIN32API
declare integer GetDC in WIN32API ;
integer iHDC
declare integer GetDeviceCaps in WIN32API ;
integer iHDC, integer iIndex
* 为 VFP 取得图形设备(device context)。
liHWnd = GetActiveWindow()
liHDC = GetDC(liHWnd)
* 取得每英寸象素值。
liPixelsPerInchX = GetDeviceCaps(liHDC, cnLOG_PIXELS_X)
liPixelsPerInchY = GetDeviceCaps(liHDC, cnLOG_PIXELS_Y)
* 取得每象素缇并保存到表单属性中。
with This
.nTreeFactorX = cnTWIPS_PER_INCH/liPixelsPerInchX
.nTreeFactorY = cnTWIPS_PER_INCH/liPixelsPerInchY
ENDWITH
************************************************************
但是添加了activex控件后,表单一拖动,activex就不断的在新位置重画,叠加,表单混乱。但如果让常规控件获得焦点,比如:text控件获得焦点,可以解决问题,但反应迟钝一点,大家有更好的办法吗?请指点一下
[解决办法]
看不出这段代码跟拖动表单有什么关系,只是一段计算 pixel 与 twips 之间转换比例的代码
另外,就上面这段代码,违反了程序设计的基本原则:资源使用过后要释放
因为只看到 GetDC,没看到有调用 ReleaseDC 的代码