[plt-scheme] Interacting with win32 Event Loops
I'm writing a couple extensions in C to get to some lower level platform
features using mzc, and I'm having trouble figuring out good ways to achieve
my goals.
I want to be able to interact with some win32 features including console
lock notifications and hotkey notifications.
The problem is the notifications come in through the window message loop,
and I don't know a good way to get that information back into the scheme
environment.
I've got it working for the console locks using the following method:
the scheme_initialize() function starts a thread that creates a hidden
dialog box with an event handler that toggles a global variable when the
console gets locked or unlocked. The scheme_initialize() functions also
installs a function just checks the value of this global variable and
returns scheme_false or scheme_true. Then inside the scheme environment I
basically poll on that function.
I would like to add some global hotkeys which I would also get notifications
of in the same event loop as the console lock notifications.
My current thinking is to create an input port in the C code that blocks
until a hot key message is processed in the event loop, and from the scheme
environment launch a thread that loops while reading in from that port.
There might be a better way to do this, and I'm not sure how to trigger the
input port when a message does get processed if I do go with this route.
My other thought is that this is inside a MrEd frame based program. If
there were a way to extend the message loop of the MrEd frame itself, it
would also be possible to just register the hotkey with the MrEd frame's
HWND from (send frame get-handle).
Can anybody offer any advice?
This is for my media playback program I am working on
http://www.bazquux.com/wiki/Schemep3. I want to be able to pause playback
while the computer is locked, and to be able to have global hotkeys for
controlling playback.
Thanks for any help.
--
Christopher W. Bowron <chris at bowron.us>
[ Nothing is exciting if you know what the outcome will be ]
- Joseph Campbell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20080626/82d08117/attachment.html>