找回密码
 加入
搜索
查看: 2014|回复: 9

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

[复制链接]
发表于 2020-8-6 01:11:31 | 显示全部楼层 |阅读模式
本帖最后由 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




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2020-8-6 11:10:42 | 显示全部楼层
不能解决。子窗体创建后,焦点更改到其上,父窗体失去焦点,会自动重绘。
发表于 2020-8-6 14:20:48 | 显示全部楼层
自绘GUI???颜色随意定???
发表于 2020-8-6 14:42:27 | 显示全部楼层
程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即可,具体查阅windows消息
p.s, LZ所有帖子解决了都不结贴,非常不好,提醒多次了。
 楼主| 发表于 2020-8-6 15:54:00 | 显示全部楼层
afan 发表于 2020-8-6 14:42
程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即 ...

改進  晚上修正相關 標題.......
发表于 2020-8-6 16:08:44 | 显示全部楼层
afan 发表于 2020-8-6 14:42
程序做到全程不激活且正常运行都没问题,别说中途切换焦点了…
注册窗口Activate相关消息,阻断消息传送即 ...

这个有示例吗,不懂怎么写...
 楼主| 发表于 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

這樣就解決了
发表于 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 这句什么意思?

 楼主| 发表于 2020-8-6 22:50:49 | 显示全部楼层
itsky2 发表于 2020-8-6 20:36
谢谢,学习了
If Not $wParam Then Return 1 这句什么意思?

1 焦點
0 失去焦點
发表于 2020-8-7 13:06:22 | 显示全部楼层
kk_lee69 发表于 2020-8-6 22:50
1 焦點
0 失去焦點

好的,我研究研究
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 10:40 , Processed in 0.099118 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表