kk_lee69 发表于 2020-8-6 01:11:31

当产生含$WS_POPUP子窗口 如何让主窗口不要变颜色??[已解决]

本帖最后由 kk_lee69 于 2020-8-6 19:51 编辑

这个我是应用在LISTVIEW 原地编辑上 ,用这个原理 产生编辑框,再利用 上下左右 控制 可以 像 EXCEL 这样 左右移动编辑,但是 客户反应,由于 前一个编辑框消失 会变回比较黑的颜色,下一个编辑框产生,又会变成白色,这样闪烁不舒服,有办法让他不要闪烁,但是控件的产生原理不变,或者干脆自己自绘 第一个 主FROM 吗??
有無比較好的方式處理呢??










#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiImageList.au3>
#include <EditConstants.au3>
#include <FontConstants.au3>    Local $listview, $button, $item1, $item2, $item3, $msg
    $hFrom=GUICreate("列表視圖項目", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)    $button = GUICtrlCreateButton(" 產生INPUT 控件 ", 10, 170, 200, 20)   GUISetState()    Do
      $msg = GUIGetMsg()
      Select
            Case $msg = $button
             ;GUICtrlCreateInput("", 20, 200, 150)
   $hEditForm = GUICreate("",150, 20 , 120, 250, $WS_POPUP, -1, $hFrom);創建一個子視窗用於裝載input控製項
   GUISetFont(10)
   $iEdit = GUICtrlCreateInput(" 輸入框", 0, 0, 150, 20 , BitOR($WS_CHILD, $WS_VISIBLE,$ES_LEFT,$ES_AUTOHSCROLL,$ES_READONLY)); $ES_AUTOHSCROLL 可以向後滾動 沒有則不行 ,$ES_RIGHT 右對齊
   GUICtrlSetFont($iEdit, 10)
   GUISetState(@SW_SHOW, $hEditForm)
      EndSelect
    Until $msg = $GUI_EVENT_CLOSE



itsky2 发表于 2020-8-6 11:10:42

不能解决。子窗体创建后,焦点更改到其上,父窗体失去焦点,会自动重绘。

yuantian 发表于 2020-8-6 14:20:48

自绘GUI???颜色随意定???
:face (14):

afan 发表于 2020-8-6 14:42:27

程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即可,具体查阅windows消息
p.s, LZ所有帖子解决了都不结贴,非常不好,提醒多次了。

kk_lee69 发表于 2020-8-6 15:54:00

afan 发表于 2020-8-6 14:42
程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即 ...

改進晚上修正相關 標題.......

itsky2 发表于 2020-8-6 16:08:44

afan 发表于 2020-8-6 14:42
程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即 ...

这个有示例吗,不懂怎么写...

kk_lee69 发表于 2020-8-6 19:53:13

itsky2 发表于 2020-8-6 16:08
这个有示例吗,不懂怎么写...

找到解決辦法了.......註冊

GUIRegisterMsg( $WM_NCACTIVATE, "_WM_NCACTIVATE")

然後

Func _WM_NCACTIVATE( $hWnd, $iMsg, $wParam, $lParam)
If $hWnd = $WinMain Then
    If Not $wParam Then Return 1
EndIf
Return $GUI_RUNDEFMSG
EndFunc

這樣就解決了

itsky2 发表于 2020-8-6 20:36:50

本帖最后由 itsky2 于 2020-8-6 20:38 编辑

kk_lee69 发表于 2020-8-6 19:53
找到解決辦法了.......註冊

GUIRegisterMsg( $WM_NCACTIVATE, "_WM_NCACTIVATE")

谢谢,学习了
If Not $wParam Then Return 1 这句什么意思?

kk_lee69 发表于 2020-8-6 22:50:49

itsky2 发表于 2020-8-6 20:36
谢谢,学习了
If Not $wParam Then Return 1 这句什么意思?

1 焦點
0 失去焦點

itsky2 发表于 2020-8-7 13:06:22

kk_lee69 发表于 2020-8-6 22:50
1 焦點
0 失去焦點

好的,我研究研究
页: [1]
查看完整版本: 当产生含$WS_POPUP子窗口 如何让主窗口不要变颜色??[已解决]