找回密码
 加入
搜索
查看: 10244|回复: 16

[GUI管理] au3记事本模拟制作过程的问题,请大家帮忙看下。

  [复制链接]
发表于 2012-12-30 19:08:08 | 显示全部楼层 |阅读模式
1、在打开记事本的时候,无输入文字和输入文字鼠标不选中复制这些都是不能用的。怎么判断鼠标是否选中文字,
怎么把鼠标选中的文字弄到剪切板去

2、这个图片中格式的前面的选择(带勾的那个)怎么弄出来的、


希望懂得帮小弟一下,给些想法也可以。
   先谢过了。。

本帖子中包含更多资源

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

×
 楼主| 发表于 2012-12-30 19:15:08 | 显示全部楼层




两个没显示的图片、、

本帖子中包含更多资源

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

×
发表于 2012-12-30 19:21:07 | 显示全部楼层
lz是想用autoit开发一个记事本?
 楼主| 发表于 2012-12-30 19:27:06 | 显示全部楼层
回复 3# netegg


    嗯。看了入门的文档、想拿这个试试。
发表于 2012-12-30 19:30:08 | 显示全部楼层
本帖最后由 netegg 于 2012-12-30 19:34 编辑

回复 4# WLMSN
工程不小,鼓励下吧
大概说下,算不上指导,字符类的api几乎都要用上,剪贴板,同步,消息,至于界面元素就不多说了
 楼主| 发表于 2012-12-30 19:32:45 | 显示全部楼层
回复 5# netegg


    大哥,au3中有判断鼠标是否选中文本的函数没?
         还有有没有获取鼠标选中的文本的函数
      可以给些思路嘛、
发表于 2012-12-30 19:35:24 | 显示全部楼层
实时跟踪鼠标位置,改变场景颜色
 楼主| 发表于 2012-12-30 19:42:34 | 显示全部楼层
回复 7# netegg


    我试试,谢谢大哥。
发表于 2012-12-30 21:07:12 | 显示全部楼层
回复 1# WLMSN


楼主有志气啊,呵呵~~
就当灌水吧,回复个,长点积分也好~
1.判断鼠标是否选中文字,你可以直接使用UDF函数_GUICtrlEdit_GetSel(),它返回一个数组,第一个元素表示选择的起始位置,第二个当然就是结束啦,当没有选择文本时,两个元素数值相等,指示当前光标的所在的位置,所以你可以通过比较两个元素的值是否相等来确定有没有选中文本,从而设置相应的菜单是否可用;
至于将文字弄到剪贴板中,如果是在编辑框中,那个系统自己会处理的,不用管,如果是菜单中选择的话,你可以使用最笨的办法,就是直接发送CTRL+C,当然也可以使用发送消息的办法(具体翻看帮助文档及UDF中的源码吧)
2.那个菜单选中就打勾的话,直接设置控件状态为选中即可
guictrlsetstate($CTRL_ID,$GUI_CHECKED)
 楼主| 发表于 2012-12-30 21:36:54 | 显示全部楼层
回复 9# annybaby


    哇哦,我试下那个函数。这个思路太 好了、
     CTRL+C的方法。。。可以是可以,就是想他内部怎么弄的、
勾选也知道了、非常感谢、、
发表于 2012-12-30 21:47:08 | 显示全部楼层
回复 10# WLMSN

安装包里有好多_sendmessage相关的示例函数,UDF等都可以学习,消息常量也可以查看帮助文档附录部分,或者是相关的头文件或者网上找资源,好多的~~
发表于 2012-12-31 02:20:51 | 显示全部楼层
本帖最后由 风行者 于 2012-12-31 02:29 编辑

可以判断鼠标左键弹起时,有没有选择文本
发表于 2012-12-31 02:46:14 | 显示全部楼层
示例:

#include <WinApi.au3>
#include <Constants.au3>
#Include <GuiEdit.au3>

Global Const $WM_SYSCOMMAND = 0x0112
Global Const $WM_LBUTTONUP = 0x0202
$gui = GUICreate("测试", 700, 600)
 $edit = GUICtrlCreateEdit("你好这是一个测试哈哈",50,50,300,100)
 GUISetState() ;显示窗口
GUIRegisterMsg($WM_SYSCOMMAND,"WM_SYSCOMMAND")
$wProcOld = GUIRegisterMsgEx($edit, "_MyWindowProc") ;窗口子类化

While 1
        Sleep(100)
WEnd

Func WM_SYSCOMMAND($hWnd, $sMsg, $sWParam, $slParam)
        Switch $sWParam
                Case 61536  ;$SC_CLOSE
                        Exit
        EndSwitch
EndFunc 

Func GUIRegisterMsgEx($ctrID, $funcName) ;控件id,函数名
        Local $wProcNew = DllCallbackRegister($funcName, "ptr", "hwnd;uint;long;ptr")
        Local $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($ctrID), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew))
        Return $wProcOld
EndFunc   ;==>GUIRegisterMsgEx

Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam)
        Switch $uiMsg
                Case $WM_LBUTTONUP
                        $sel = _GUICtrlEdit_GetSel($edit)
                        MsgBox(0,"","你选择了:"&StringMid(GUICtrlRead($edit),$sel[0]+1,$sel[1]-$sel[0]))
        EndSwitch
        ;向默认窗口进程传递未处理过的消息
        Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam)
EndFunc   ;==>_MyWindowProc

本帖子中包含更多资源

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

×
 楼主| 发表于 2012-12-31 22:08:19 | 显示全部楼层
回复 11# annybaby


    _GUICtrlEdit_GetSel(),大哥这个函数好给力。根据你的描述,我试验了下,可以实现判断是否选中文本、前面那个勾选的也行。
       谢谢大哥。。。。
 楼主| 发表于 2012-12-31 22:10:59 | 显示全部楼层
回复 13# 风行者


    左键弹起。。意思没懂,好好参考大哥你的代码看看、
        谢谢大哥帮助。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 09:08 , Processed in 0.083509 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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