| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 202 人关注过本帖
标题:请问如何正确选择记事本中的指定行?
只看楼主 加入收藏
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:316
专家分:448
注 册:2019-10-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
请问如何正确选择记事本中的指定行?
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

如果没有双字节字符,执行结果是正确
PUBLIC oform1
oform1=NEWOBJECT("form1")
oform1.Show
RETURN

DEFINE CLASS form1 AS form
    Height = 110
    Width = 193
    ShowWindow = 2
    DoCreate = .T.
    AutoCenter = .T.
    Caption = "Form1"
    AlwaysOnTop = .T.
    Name = "Form1"

    ADD OBJECT command1 AS commandbutton WITH ;
        Top = 60, ;
        Left = 48, ;
        Height = 25, ;
        Width = 60, ;
        Caption = "执行", ;
        Name = "Command1"

    ADD OBJECT text1 AS textbox WITH ;
        Alignment = 3, ;
        Value = 1, ;
        Height = 25, ;
        InputMask = "999", ;
        Left = 72, ;
        Top = 24, ;
        Width = 40, ;
        Name = "Text1"

    ADD OBJECT label1 AS label WITH ;
        Caption = "选择第:", ;
        Height = 16, ;
        Left = 24, ;
        Top = 29, ;
        Width = 46, ;
        Name = "Label1"

    ADD OBJECT label2 AS label WITH ;
        Caption = "行", ;
        Height = 16, ;
        Left = 116, ;
        Top = 29, ;
        Width = 46, ;
        Name = "Label2"

    PROCEDURE command1.Click
        #Define EM_SETSEL 0xb1
        #Define EM_LINEINDEX 0xbb
TEXT TO prgprg noshow
2343432435
34454t4365t43
ddffergter
rwew阿德顺丰到付归属感
谁丰东股份23424递四方速递
23424535
水电费45235
3424
endtext
        DECLARE Long FindWindowEx IN WIN32API Long, Long, String, String
        Declare Integer SendMessage In WIN32API as SendMessages Integer,Integer,Integer,String
        Declare Integer SendMessage In WIN32API as SendMessagen Integer,Integer,Integer,Integer
        Declare Integer WinExec in kernel32 string, integer
        winexec("NOTEPAD.EXE",1)
        hWnd = FindWindowEx( 0, 0, "Notepad", NULL )
        SendMessages(m.Hwnd,274,61488,null)
        lnSendHwnd=FindWindowEx(m.hwnd,0,"Edit",Null)
        SendMessages(lnSendHwnd,12,LEN(prgprg)+1,prgprg)
        i=thisform.text1.value
        SendMessagen(lnSendHwnd,EM_SETSEL,SendMessagen(lnSendHwnd,EM_LINEINDEX,i-1,0),SendMessagen(lnSendHwnd,EM_LINEINDEX,i,0))
    ENDPROC

ENDDEFINE


[此贴子已经被作者于2024-11-10 14:42编辑过]

搜索更多相关主题的帖子: Name Integer Caption 选择 Top 
5 天前 14:41
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1722
专家分:3324
注 册:2012-2-29
收藏
得分:0 
回复 楼主 sych
在我的机子上运行,出现相同问题,但暂时看不出原因。
5 天前 19:39
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:371
专家分:1157
注 册:2015-10-2
收藏
得分:0 
我用的是模拟 '手工数行数',没有用API.用的是一般的VFP语句。因为用户经常将一些网上的资料考入到 EDIT,里面有很多看不见的符号,打印时经常造成各行文字与原考文件行数不符,只能一行一行再自动整理一次。

[此贴子已经被作者于2024-11-10 23:46编辑过]

5 天前 23:39
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:707
专家分:2833
注 册:2018-3-13
收藏
得分:0 
改为按宽字符处理试试

[此贴子已经被作者于2024-11-11 09:41编辑过]


这家伙很懒,啥也没留下
4 天前 09:37
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:707
专家分:2833
注 册:2018-3-13
收藏
得分:20 
大概这样:
        .... 省略前面代码
        winexec("NOTEPAD.EXE",1)
        hWnd = FindWindowEx( 0, 0, "Notepad", NULL )
        SendMessages(m.Hwnd,274,61488,null)
        lnSendHwnd=FindWindowEx(m.hwnd,0,"Edit",Null)
#IF .F.
    SendMessages(lnSendHwnd,  WM_SETTEXT, LEN(prgprg)+1, prgprg)
    SendMessages(lnSendHwnd,12,LEN(prgprg)+1,prgprg)
    i=thisform.text1.value
    SendMessagen(lnSendHwnd,EM_SETSEL,SendMessagen(lnSendHwnd,EM_LINEINDEX,i-1,0),SendMessagen(lnSendHwnd,EM_LINEINDEX,i,0))
#ELSE
    Declare Integer SendMessageW In WIN32API as SendMsgWc Integer,Integer,Integer,String
    Declare Integer SendMessageW In WIN32API as SendMsgWn Integer,Integer,Integer,Integer
    prgprg = Strconv(prgprg, 5)    && DBCS > UNICODE
    #define WM_SETTEXT    0x000C
    SendMsgWc(lnSendHwnd, WM_SETTEXT, 0, prgprg)
    i=thisform.text1.value
    SendMsgWn(lnSendHwnd, EM_SETSEL ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i-1,0) ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i,0) )

#ENDIF
ENDDEFINE


这家伙很懒,啥也没留下
4 天前 09:44
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:316
专家分:448
注 册:2019-10-11
收藏
得分:0 
完美解决
4 天前 09:59
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:316
专家分:448
注 册:2019-10-11
收藏
得分:0 
你建议改为按宽字符处理试试,我是一点头绪也没有,看到你的代码才豁然开朗,谢谢。
4 天前 10:11
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:316
专家分:448
注 册:2019-10-11
收藏
得分:0 
我又测试了一下,发现只变动这一句也可以
    SendMsgWn(lnSendHwnd, EM_SETSEL ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i-1,0) ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i,0) )
收到的鲜花
  • kangss4 天前 20:22 送鲜花  1朵   附言:确实不错
4 天前 10:22
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:444
专家分:582
注 册:2013-5-14
收藏
得分:0 
思路就是把Edit的超过ASCII字符全部去掉!以及不可见字符代码替换掉,手工处理何时才是头。。。。

[此贴子已经被作者于2024-11-13 23:15编辑过]

前天 23:13
快速回复:请问如何正确选择记事本中的指定行?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032681 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved