From: Emmanuel Touzery Date: 2004-01-19T17:03:36+09:00 Subject: ruby/dl or win32API win32 help? --------------030306060009080407030406 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, I'm trying to make a FXRuby "always on top" on win32 using ruby/dl. i use ruby/dl only because it seems easier to use than win32API, but if someone has a solution using win32API, i'd be delighted to get it, too :O) Anyway, for now it's a no-go. I connected also SetForegroundWindow() to see if it works and this one seems to work. If i call SetForegroundWindow with the wrong window Id, i loose the focus. if i give the right window id, i keep the focus. Seems good. But SetWindowPos(), that should set it always on top, doesn't seem to work. Based on http://www.ruby-talk.org/cgi-bin/vframe.rb/ruby/ruby-talk/82992?82958-83286+split-mode-vertical and other documents, it seems SetWindowPos is the win32 API to call to get "always on top" windows. I attach the ruby script.. you can replace eg User32.setForegroundWindow(xid) by User32.setForegroundWindow(id) and you'll see that the window looses the focus as you type (id means nothing to windows), which seems to prove it's at least a bit working :O) emmanuel --------------030306060009080407030406 Content-Type: text/plain; name="top.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="top.rb" IyEgL3Vzci9iaW4vZW52IHJ1YnkNCg0KcmVxdWlyZSAiZm94Ig0KaW5jbHVkZSBGb3gNCg0K SFdORF9UT1BNT1NUID0gLTENCkhXTkRfTk9UT1BNT1NUID0gLTINClNXUF9OT1NJWkUgPSAx DQpTV1BfTk9NT1ZFID0gMg0KcmVxdWlyZSAnZGwnDQpyZXF1aXJlICdkbC9pbXBvcnQnDQoN CiMgaW5zcGlyZWQgYnkgaHR0cDovL3d3dy5ydWJ5LXRhbGsub3JnL2NnaS1iaW4vdmZyYW1l LnJiL3J1YnkvcnVieS10YWxrLzgyOTkyPzgyOTU4LTgzMjg2K3NwbGl0LW1vZGUtdmVydGlj YWwNCm1vZHVsZSBVc2VyMzINCiAgZXh0ZW5kIERMOjpJbXBvcnRhYmxlDQogIGRsbG9hZCAi dXNlcjMyIg0KICB0eXBlYWxpYXMgIkhXTkQiLCAidW5zaWduZWQgY2hhciINCiAgZXh0ZXJu ICJCT09MIFNldFdpbmRvd1BvcyhIV05ELCBIV05ELCBpbnQsIGludCwgaW50LCBpbnQsIFVJ TlQpIg0KICBleHRlcm4gIkJPT0wgU2V0Rm9yZWdyb3VuZFdpbmRvdyhIV05EKSINCmVuZA0K aW5jbHVkZSBVc2VyMzINCg0KY2xhc3MgRlhUZXN0TWFpbldpbmRvdyA8IEZYTWFpbldpbmRv dw0KICANCiAgZGVmIGluaXRpYWxpemUoYXBwKQ0KICAgIHN1cGVyKGFwcCwgIlRlc3QiLCBu aWwsIG5pbCwgREVDT1JfQUxMLCAwLCAwLCAzNTAsIDI4MCApDQogICAgQHRleHQgPSBGWFRl eHQubmV3KHNlbGYsIG5pbCwgMCwgTEFZT1VUX0ZJTExfWHxMQVlPVVRfRklMTF9ZfFRFWFRf V09SRFdSQVApDQogICAgQHRleHQuY29ubmVjdChTRUxfS0VZUFJFU1MpIHsgfHNlbmRlciwg c2VsLCBkYXRhfA0KICAgICAgVXNlcjMyLnNldEZvcmVncm91bmRXaW5kb3coeGlkKQ0KICAg ICAgVXNlcjMyLnNldFdpbmRvd1Bvcyh4aWQsIEhXTkRfVE9QTU9TVCwgMCwgMCwgMCwgMCwg U1dQX05PU0laRXxTV1BfTk9NT1ZFKQ0KICAgIH0NCiAgZW5kDQoNCmVuZA0KDQojIFN0YW5k IGFsb25lIHJ1bg0KaWYgX19GSUxFX18gPT0gJDANCiAgYXBwbGljYXRpb24gPSBGWEFwcC5u ZXcoIlRlc3QiLCAicnVieSIpDQogIGFwcGxpY2F0aW9uLmluaXQoQVJHVikNCiAgd2luZG93 ID0gRlhUZXN0TWFpbldpbmRvdy5uZXcoYXBwbGljYXRpb24pDQoNCiAgYXBwbGljYXRpb24u Y3JlYXRlDQogIHdpbmRvdy5zaG93KFBMQUNFTUVOVF9TQ1JFRU4pDQogIGFwcGxpY2F0aW9u LnJ1bg0KZW5kDQo= --------------030306060009080407030406--