第一个Wayland程序
来源:互联网 发布:淘宝激活店铺激活不了 编辑:程序博客网 时间:2024/05/02 04:46
这是楼主的第一个Wayland程序:
效果图:
程序源代码:
void PaintProc(HSURFACE hSurface){PAINTSTRUCTURE ps;memset(&ps, 0, sizeof(ps));wlBeginPaint(hSurface, &ps);memset(ps.lpBuffer->lpPixelBuffer, 0xff, ps.lpBuffer->length);SIZE sz = wlGetSurfaceSize(hSurface);//paint_pixels(ps.lpBuffer->lpPixelBuffer, 20, sz.width, sz.height, ps.uTime);HCAIROSURFACE hCairoSurface = ps.lpBuffer->hCairoSurface; // 类似与 HWNDHCAIRO hdc = cairo_create(hCairoSurface); // 类似于 HDC cairo_set_source_rgb(hdc,0, 0.4, 0.8); cairo_set_line_width(hdc, 50); cairo_move_to(hdc, 0, 0); cairo_line_to(hdc, sz.width, 0); cairo_stroke(hdc); cairo_set_source_rgb(hdc, 0 , 0, 0); cairo_move_to(hdc, 10, 20); cairo_set_font_size(hdc, 18); cairo_show_text(hdc, "这是标题栏"); cairo_stroke(hdc);int btnCloseHeight = 20;int btnCloseWidth = 20;int btnCloseLineWidth = 2;cairo_set_source_rgb(hdc, 1, 0, 0);cairo_set_line_width(hdc, 2);cairo_move_to(hdc, sz.width-btnCloseWidth, btnCloseLineWidth/2); cairo_line_to(hdc, sz.width, btnCloseLineWidth/2);cairo_move_to(hdc, sz.width-btnCloseWidth, 0); cairo_line_to(hdc, sz.width-btnCloseWidth, btnCloseHeight);cairo_move_to(hdc, sz.width, 0); cairo_line_to(hdc, sz.width, btnCloseHeight);cairo_move_to(hdc, sz.width-btnCloseWidth, btnCloseHeight); cairo_line_to(hdc, sz.width, btnCloseHeight);cairo_move_to(hdc, sz.width-btnCloseWidth, btnCloseLineWidth/2); cairo_line_to(hdc, sz.width, btnCloseHeight);cairo_move_to(hdc, sz.width, btnCloseLineWidth/2); cairo_line_to(hdc, sz.width-btnCloseWidth, btnCloseHeight);cairo_stroke(hdc);cairo_set_source_rgb(hdc, 0 , 0, 0);cairo_move_to(hdc, 10, sz.height/2);cairo_set_font_size(hdc, 30);cairo_show_text(hdc, "你好, 中国!");cairo_stroke(hdc);cairo_set_source_rgb(hdc, 0 , 0, 0);cairo_move_to(hdc, 10, sz.height/2+30);cairo_set_font_size(hdc, 18);cairo_show_text(hdc, "--第三界主");cairo_stroke(hdc);cairo_destroy(hdc);wlRequestPaintDone(hSurface);wlEndPaint(hSurface, &ps);}void PaintDone(HSURFACE hSurface){printf("PaintDone\n");//wlRequestPaintDone(hSurface);}void PointerProc(HSURFACE hSurface, uint32_t button, uint32_t state, uint32_t serial){LPSURFACEPRIVATE lpSurfacePrivate = wlGetSurfacePrivate(hSurface);/* 鼠标左键按下了,移动窗口 */if (BTN_LEFT == button && state == WL_POINTER_BUTTON_STATE_PRESSED){HSHELLSURFACE hShellSurface = lpSurfacePrivate->hShellSurface;wl_shell_surface_move(hShellSurface, wlGetRegistry()->s_seat, serial);return;}}int main(int argc, char **argv){wlInit();int width = 400, height = 300;HSURFACE surface = wlCreateSurface("wayland-hello", width, height);wlSetPaintProc(surface, PaintProc);wlSetPaintDone(surface, PaintDone);wlSetPointerProc(surface, PointerProc);wlShowSurface(surface);int ret = 0;while (ret != -1){ret = wlDispatch();}return 0;}
0 0
- 第一个Wayland程序
- 第一个吃 Wayland 螃蟹的 Fedora 25
- 第一个C++程序
- 第一个MIDP程序
- 第一个Swing程序
- 第一个Ruby程序
- 第一个Python程序
- 第一个RoR程序
- 第一个RMI程序!
- VBA 第一个程序
- 第一个C程序
- 第一个VHDL程序
- 第一个MIX程序
- 第一个Windows程序.
- 第一个对话框程序
- 第一个wxWidgets程序
- 第一个struts程序
- 第一个cpp程序
- WCF学习笔记——契约不能少了set
- WinCE平台NKDbgPrintfW等支持的格式符及浮点数打印方法
- Spring 入门
- 回家爸妈宝贝们,等你?
- 分手理由大全
- 第一个Wayland程序
- 关于手写数字识别的一些调研
- cxf介绍study
- 黑马程序员学习笔记_OC之第1、2、3、4个OC程序
- 要在页面加载完成后才可以改变浏览器的url
- Android开发贴士集合(1)
- jQuery插件之Ajax自动完成
- IOS_UI_day2_UIButton
- 增加windows最大TCP连接随机端口数,避免10048