小编wme*_*yer的帖子

是否可以删除应用程序收到的触摸消息(WM_POINTERDOWN等)?

我已经成功地安装一个WH_GETMESSAGE带有钩SetWindowsHookEx,我可以看到的WM_POINTERDOWN,WM_POINTERUP等应用程序接收消息.(它是在Windows 8.1上运行的32位桌面应用程序.)

现在,我不仅希望看到这些消息,而且还想删除其中一些消息.

GetMsgProc的文档说:

GetMsgProc挂钩过程可以检查或修改消息.在钩子过程将控制权返回给系统之后,GetMessage或PeekMessage函数将消息以及任何修改返回给最初调用它的应用程序.

有了WM_KEYUP消息,这似乎工作正常.我可以将消息设置为WM_NULL挂钩,并且键事件将消失.

WM_POINTER...但是,对于消息,这似乎不起作用.应用程序仍然接收消息(在调试器中验证).

也许有其他方法来过滤/删除此类消息?

编辑:它必须使用未修改的第三方应用程序(因此使用钩子).

更新:我设法通过积极调用PeekMessage钩子来阻止点击事件(从长远来看可能不是一个好主意).但是,我仍然无法阻止通过触摸滚动.

c++ winapi touch setwindowshookex windows-8

11
推荐指数
1
解决办法
2454
查看次数

F#令人困惑的输出

我是F#初学者.我运行了这段代码:

let printMsg() =
    let msg = "Important"
    printfn "%s" msg
    let innerMsgChange() =
        let msg = "Very Important"
        printfn "%s" msg
    printfn "%s" msg
    innerMsgChange()
    printfn "%s" msg

printMsg()
Run Code Online (Sandbox Code Playgroud)

我期望文本输出将按以下顺序排列:

重要,非常重要,重要,重要

或这个

重要,非常重要,非常重要,重要

但我得到了这个

重要,重要,非常重要,重要

似乎这些函数不符合代码执行顺序.为什么,我错过了什么?

f#

4
推荐指数
1
解决办法
137
查看次数

F#中的蓄能器发电机

在我的追求,以了解更多F#,我试图执行一个"蓄电池发电机"由保罗·格雷厄姆描述这里.到目前为止,我最好的解决方案是完全动态输入:

open System

let acc (init:obj) : obj->obj=
  let state = ref init
  fun (x:obj) ->
    if (!state).GetType() = typeof<Int32>
       && x.GetType() = typeof<Int32> then
      state := (Convert.ToInt32(!state) + Convert.ToInt32(x)) :> obj
    else
      state := (Convert.ToDouble(!state) + Convert.ToDouble(x)) :> obj
    !state

do
  let x : obj -> obj = acc 1  // the type annotation is necessary here
  (x 5) |> ignore
  printfn "%A" (x 2)   // prints "8"
  printfn "%A" (x 2.3) // prints "10.3"
Run Code Online (Sandbox Code Playgroud)

我有三个问题:

  • 如果我删除了类型注释 …

f# paul-graham accumulator

3
推荐指数
2
解决办法
854
查看次数

F# - 破碎的"然后"

我正在尝试制作一个非常简单的应用程序,它会根据一天中的时间来迎接.我的代码是:

open System

let read() = Console.Read() 
let readLine() = Console.ReadLine()

let clockMsg min max todo = 
    if (DateTime.Now.Hour > min) && (DateTime.Now.Hour < max) then todo

let name = readLine()

clockMsg 0 8 <| printfn "Go to bed, %s!" name
clockMsg 8 12 <| printfn "Good morning, %s!" name
clockMsg 12 18 <| printfn "Good afternoon, %s!" name

read() |> ignore
Run Code Online (Sandbox Code Playgroud)

现在是我的问题,如何只有一个函数调用有效,但三个都无论如何,打印他们的消息?

f#

2
推荐指数
1
解决办法
162
查看次数

给定一个受成员约束约束的值,我可以作为一等函数访问该成员吗?

是否可以将受约束的成员作为第一类函数(给定对象)进行访问?如果是这样,使用的语法是什么?

  // Example: property getter as a first-class function
  type Test() =
     member x.Value = "42"

  let t = Test()
  let getter = t.get_Value // works as expected


  // now generically:
  let inline getGetter< ^a when ^a : (member get_Value : unit -> string)> item =
    // call getter
    let value = (^a : (member get_Value : unit -> string) item)
    // try to get getter as first-class function
    let getter = item.get_Value // doesn't compile: "Lookup on object of …
Run Code Online (Sandbox Code Playgroud)

f#

0
推荐指数
1
解决办法
136
查看次数