RPP 1.86 gamma 开源发布
2014-09-27 21:16
197 查看
更新如下:
1.增加JIT打包模式,打包生成EXE可以脱离RPP环境运行。
2.增加windows窗体模式(即WinMain),可开发windows窗口程序。
3.数组初始化更方便。
4.调用外部API更方便,如 stdcall["MessageBoxA",0,"abc","123",0] 可简写为 @MessageBoxA(0,"abc","123",0)
下载地址:
http://pan.baidu.com/s/1pJI5IPl
![](https://img-blog.csdn.net/20140927211248062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm91bmRzaGVlcA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1.增加JIT打包模式,打包生成EXE可以脱离RPP环境运行。
2.增加windows窗体模式(即WinMain),可开发windows窗口程序。
3.数组初始化更方便。
4.调用外部API更方便,如 stdcall["MessageBoxA",0,"abc","123",0] 可简写为 @MessageBoxA(0,"abc","123",0)
下载地址:
http://pan.baidu.com/s/1pJI5IPl
/* 该程序只能用win_jit模式运行(Ctrl+F5) 代码来自《windows程序设计》第三章 */ mac c_text "HelloWin" void main() { WNDCLASSA wndclass wndclass.style=OR(CS_HREDRAW,CS_VREDRAW) wndclass.lpfnWndProc=&proc_r wndclass.cbClsExtra=0 wndclass.cbWndExtra=0 wndclass.hInstance=rf.get_hins wndclass.hIcon=@LoadIconA(null,IDI_APPLICATION) wndclass.hCursor=@LoadCursorA(null,IDC_ARROW) wndclass.hbrBackground=@GetStockObject(WHITE_BRUSH) wndclass.lpszMenuName=null wndclass.lpszClassName=c_text @RegisterClassA(&wndclass) void* hwnd=@CreateWindowExA(0,c_text,c_text,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, null,null,rf.get_hins,null) @ShowWindow(hwnd,SW_SHOW) @UpdateWindow(hwnd) MSG msg while @GetMessageA(&msg,null,0,0) @TranslateMessage(&msg) @DispatchMessageA(&msg) } int proc(void* hwnd,int message,int wParam,int lParam) { switch message case WM_CREATE return 0 case WM_PAINT PAINTSTRUCT ps void* hdc=@BeginPaint(hwnd,&ps) RECT rect @GetClientRect(hwnd,&rect) @DrawTextA(hdc,c_text,-1,&rect,OR(OR( DT_SINGLELINE,DT_CENTER),DT_VCENTER)) @EndPaint(hwnd,&ps) return 0 case WM_DESTROY @PostQuitMessage(0) return 0 return @DefWindowProcA(hwnd,message,wParam,lParam) } //C++回调RPP时需要保护寄存器,其实这段代码可用元编程自动生成 int proc_r(void* hwnd,int message,int wParam,int lParam) { push ebx push esi push edi int ret=proc(hwnd,message,wParam,lParam) pop edi pop esi pop ebx mov eax,ret } struct PAINTSTRUCT { void* hdc bool fErase RECT rcPaint bool fRestore bool fIncUpdate uchar rgbReserved[32] } struct MSG { void* hwnd int message int wParam int lParam uint time POINT pt uint lPrivate } struct POINT { int x int y } struct RECT { int left int top int right int bottom } struct WNDCLASSA { uint style void* lpfnWndProc int cbClsExtra int cbWndExtra void* hInstance void* hIcon void* hCursor void* hbrBackground char* lpszMenuName char* lpszClassName } #define CS_VREDRAW 0x0001 #define CS_HREDRAW 0x0002 #define IDI_APPLICATION 32512 #define IDC_ARROW 32512 #define WHITE_BRUSH 0 #define WS_OVERLAPPEDWINDOW 13565952 #define CW_USEDEFAULT 0x80000000 #define SW_SHOW 5 #define WM_CREATE 0x0001 #define WM_DESTROY 0x0002 #define WM_PAINT 0x000F #define DT_CENTER 0x00000001 #define DT_RIGHT 0x00000002 #define DT_VCENTER 0x00000004 #define DT_BOTTOM 0x00000008 #define DT_WORDBREAK 0x00000010 #define DT_SINGLELINE 0x00000020
相关文章推荐
- 好消息!国产编程语言RPP 1.86 开源发布!
- 欢天喜地迎国庆,国产开源编程语言 RPP 1.87 发布!
- EasyJF开源Blog系统测试版发布
- 圣诞节前发布的开源项目小结-欢迎补充
- Java 开源博客 —— Solo 0.6.8 正式版发布了!
- 写自己的开源库,发布到 JitPack.io
- 开源 3D CAD 软件 - gCAD3D 1.9.1 发布
- 开源免费的HTML5游戏引擎——青瓷引擎(QICI Engine) 1.0正式版发布了!
- Linux 基金会发布了新的企业开源指南
- Android Studio 发布开源项目到Jcenter重要步骤记录
- 欧盟即将发布“政策文件”采购开源软件
- 微软发布Oxite开源CMS博客平台
- 开源可视化 Python 性能调优工具 VPT 发布
- 【技术分享】发布本人所属 Java 与 C++ 开源项目
- Google发布开源博客搬家软件
- RancherOS正式版发布:最轻量的开源容器Linux操作系统
- CYQ.Data V4.5.5 版本发布[顺带开源Emit编写的快速反射转实体类FastToT类]
- 开源数独游戏软件KLSudoku发布第一个Release版本
- asp.net forums2 本地化版本0831发布(开源)
- 如何将自己写的开源库发布到 JitPack.io