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
相关推荐
在Ruby编程中,利用`Win32OLE`库可以创建一个与Outlook的连接,执行诸如读取、编写和发送邮件,管理联系人,甚至控制Outlook窗口等任务。 文件列表中的几个`.mht`文件很可能包含了使用Ruby论坛中讨论的关于这些主题...
特点: FXRuby 支持 FOX 的一切,这在 Ruby 中很有用: MDI/SDI 应用程序窗口布局、浮动工具栏丰富的控件集(表格、图像列表、菜单、画布等) 灵活的布局管理多种格式的图像读/写支持通过 gem 嵌入 OpenGL 图形线程...
Memcached-win32是一款专为Windows系统设计的内存对象缓存系统,它是Memcached的Windows移植版本。Memcached是一款高性能、分布式内存缓存系统,广泛应用于Web应用中以减轻数据库负载,提高数据访问速度。本安装包...
它基于Tcl/Tk库,允许开发者使用Ruby语法创建各种窗口、按钮、文本框等交互元素,为应用程序添加可视化功能。在Ruby 1.9版本中,安装这个gem可能会遇到一些特定的挑战,因此我们将详细讨论如何在Ruby 1.9环境下正确...
- 安装完成后,在命令提示符窗口中输入`ruby -v`验证安装情况,如果输出类似`ruby 1.8.5`的信息,则表示安装成功。 - 检查环境变量PATH中是否包含Ruby的bin目录路径,如`D:\ruby\bin`。 #### 三、安装Rails ...
在Windows操作系统中,我们可以使用Win32 API函数来打开系统关于对话框。`ShellExecute()`函数是其中一个方法,可以用来执行这个操作。例如,在C++中,你可以这样写: ```cpp ShellExecute(NULL, "runas", "run...
在Windows上安装GTK,通常需要下载对应版本的GTK for Windows发行版,例如GTK4Win32。这个发行版包含了运行GTK应用所需的动态链接库、头文件和开发工具。安装过程相对简单,只需按照安装向导的指示操作即可。安装...
【压缩包子文件的文件名称列表】中的"chromedriver-win64" 文件表示这个压缩包解压后包含的是适用于64位Windows系统的ChromeDriver可执行文件。通常,解压后,这个文件可以直接放在系统路径下,或者在运行Selenium...
3),在打开的记事本窗口中,于末尾添加新的一行- C:\Ruby200-x64,保存文件并退出。 4),回到命令行窗口内,审查(非必须)并安装。 ruby dk.rb review ruby dk.rb install 具体来说,步骤如下 1.下载证书。有...
标题中的"chromedriver-win64_127.0.6510.4.zip"表明这是一个用于Windows 64位系统的Chrome浏览器自动化测试工具——ChromeDriver的版本127.0.6510.4的压缩包文件。ChromeDriver是Google Chrome浏览器的一个配套程序...
2. 处理窗口和弹出框:最大化窗口,切换窗口或框架。 3. 控制浏览器导航:前进、后退、刷新页面,跳转到特定 URL。 4. 处理 cookies 和本地存储:添加、删除、读取 cookies。 5. JavaScript 执行:执行自定义的 ...
3. **编程语言集成**:Selenium WebDriver 支持多种编程语言,包括 Java、Python、C#、Ruby 和 JavaScript 等。你需要根据你的项目需求选择合适的语言,并引入相应的 WebDriver 库。 4. **启动 ChromeDriver**:在...
2. **自动化测试**:在Selenium测试脚本中,通过创建`RemoteWebDriver`实例,并指定ChromeDriver的URL,可以启动一个新的Chrome浏览器实例。然后,你可以使用Selenium的API来操纵这个浏览器,比如`driver.get(url)`...
Selenium WebDriver 是一种接口,允许编程方式控制浏览器进行自动化测试,适用于多种编程语言,包括 Java、Python、C# 和 Ruby 等。ChromeDriver 与 Chrome 浏览器交互,执行诸如点击按钮、填写表单、导航网页等操作...
5. **自动化测试脚本**:使用 ChromeDriver 进行自动化测试,首先需要创建一个 WebDriver 实例,然后设置浏览器选项,比如禁用弹出窗口、设置用户代理等。接着,通过 WebDriver 的方法来导航到网页、执行 JavaScript...
4. 捕获网页快照:可以截取当前浏览器窗口的屏幕截图。 5. 支持多种编程语言:Java、Python、C#、Ruby 等。 三、ChromeDriver 安装与配置 1. 下载:访问 ChromeDriver 的官方网站 ...