以下是引用cssnet在2025-7-18 21:59:44的发言:
一旦嵌入的 word 失去焦点(比如,点击表单以外的区域,甚至是点击 word 以外的表单内的其他控件或空白区域),word 文字工作区就会一片灰白;原来输入到 word 的文字,都变得不再可见……
针对此问题,DeepSeek 给出的方案,真的很有意思,哈哈哈哈!也算得上是脑洞大开!不知哪位天才想出来的!——
方法3:内存位图缓存(最稳定方案)
* -------------------------
* 声明API
DECLARE INTEGER CreateCompatibleDC IN gdi32 INTEGER hdc
DECLARE INTEGER CreateCompatibleBitmap IN gdi32 INTEGER hdc, INTEGER nWidth, INTEGER nHeight
DECLARE INTEGER BitBlt IN gdi32 ;
INTEGER hDestDC, INTEGER x, INTEGER y, INTEGER nWidth, INTEGER nHeight, ;
INTEGER hSrcDC, INTEGER xSrc, INTEGER ySrc, INTEGER dwRop
* 在失去焦点时截屏保存
PROCEDURE oleWord.LostFocus
LOCAL hDC, hBmp
hDC = CreateCompatibleDC(0)
hBmp = CreateCompatibleBitmap(hDC, THIS.Width, THIS.Height)
= BitBlt(THISFORM.picCache.hDC, 0, 0, THIS.Width, THIS.Height, ;
THIS.hDC, 0, 0, 0x00CC0020)
&& SRCCOPY
THISFORM.lNeedRedraw = .T.
ENDPROC
* 在Paint事件中恢复图像
PROCEDURE oleWord.Paint
IF THISFORM.lNeedRedraw
= BitBlt(THIS.hDC, 0, 0, THIS.Width, THIS.Height, ;
THISFORM.picCache.hDC, 0, 0, 0x00CC0020)
ENDIF
ENDPROC
* 专业级效果:实现类似Visual Studio代码编辑器的"僵尸视图"效果
* -------------------------
想想,还真 TM 有可能会奏效咧!