create_window 方法是创建窗口,里面调用了RegisterClass,CreateWindowEx,ShowWindow,UpdateWindow。熟悉win32的童鞋一看便知。
def create_window instance, cmd_show
@ico_handle = LoadImageA(instance,"ruby.ico",IMAGE_ICON,16,16,LR_DEFAULTCOLOR|LR_LOADFROMFILE)
@bk_bmp_handle = LoadImageA(instance,"ruby.bmp",IMAGE_BITMAP,299,299,LR_LOADFROMFILE)
wc = WNDCLASSA.new
wc.style = 0
wc.lpfnWndProc = @window_proc.address
wc.cbClsExtra = 0
wc.cbWndExtra = 0
wc.hInstance = instance
wc.hIcon = @ico_handle
wc.hCursor = 0
wc.hbrBackground = (COLOR_WINDOW+1)
wc.lpszMenuName = 0
wc.lpszClassName = alloc_ansi_string_buffer 'MyWindowClass',256
atom = RegisterClassA(wc.data)
atom &=0x0000ffff
return if atom == 0
windows_style = WS_OVERLAPPEDWINDOW
hwnd = CreateWindowEx(0,atom,"Pure Ruby Window", windows_style, 100, 100, 360,360, 0, 0, instance, 0)
ShowWindow(hwnd, cmd_show)
UpdateWindow(hwnd)
end
一个Win32 GUI程序当然少不了窗口过程函数,window_proc即是。就和用C写为Win32 GUI程序一样,只处理相关消息就可。本文示例处理了WM_PAINT消息,主要工作就是显示图片啦。
@window_proc = API::Callback.new('LLLL','I')do |hwnd, msg,wparam,lparam|
ret = 0
case msg
when WM_PAINT
ps = PAINTSTRUCT.new
hdc = BeginPaint(hwnd, ps.data)
mem_dc = CreateCompatibleDC(0)
SelectObject(mem_dc,@bk_bmp_handle)
BitBlt(hdc,20,20,299,299,mem_dc,0,0,SRCCOPY)
EndPaint(hwnd, ps.data)
DeleteDC(mem_dc)
when WM_DESTROY
PostQuitMessage 0
else
ret = DefWindowProc(hwnd,msg,wparam,lparam);
end
ret
end
相关推荐
Win32OLE extension library provides an interface to OLE Automation from Ruby. Here is a sample script: require 'win32ole' application = WIN32OLE.new('Excel.Application') application.visible = TRUE...
ruby devkit,解压到ruby安装目录,修改D:\Ruby19\devkit\msys\1.0.11\etc\fstab
flash窗口测试代码实例,支持ruby+webdriver相关测试。
Cassandra Driver - Apache Cassandra的一个纯Ruby驱动 ,具有异步IO和可配置的负载平衡,重新连接并重试策略
ruby最新2.3.1版本32位安装包。
CombinePDF - 一个合并PDF文件的纯ruby库
Whois一个智能纯Ruby实现的WHOIS客户端与解析器
Http-2 - HTTP/2协议的纯Ruby实现
ruby-macho, 解析Mach文件的纯 ruby 库 ruby 用于检查和修改mach文件的ruby 库。什么是mach文件?文件格式由 OS X 和 iOS ( 它的他人) 用于目标文件。可执行文件。动态库等的通用二进制格式。文档完整的文档可以在 ...
Chronic一个纯Ruby编写的自然语言日期/时间解析器
ruby命令集合(一些有用的命令) 1.1 创建一个Rails应用程序
CuckooFilter是Cuckoo Filter的纯Ruby实现
使用纯 Ruby 测量图像大小。格式:apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm. 更多详情、使用方法,请下载后阅读README.md文件
ruby32位真彩 源码
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
包含 ruby1.8.7,DevKit32位,guard和guard-livereload,可用于Web开发中监听文件
sqlite3-ruby-mswin32.gem
Maruku - 一个纯ruby的Markdown-superset解释器