- 浏览: 326375 次
最新评论
-
riki:
D 语言学习交流群 264617728, 欢迎加入
D语言真相 The Case for D(1-5) -
exploder:
请教,如果使用D2进行wxD编译呢?
编译WxD0.16 -
blue_halo:
那如何解决呢????????
不能每次都用别的打开存成utf- ...
pyDev 中输入中文问题 -
funxue:
请教楼主
Error: undefined identifie ...
D语言版本的华容道 -
litsen:
在配置ms sqlserver的过程中遇到些问题,从Googl ...
安全第一,在sql server和client之间配置ssl连接
1.框架的意义,一个简单windows程序的要素:
封装了windows窗口,控件,简化windows开发.
声明winProc回调函数;定义窗口属性,绑定回调函数,注册窗口类;创建windows窗口;进入消息处理循环,直到结束.
一个简单的win32程序,D的例子:winsamp
2.DFL的做法
使用面向对象语言的方法,使用继承抽象了窗口组件的层次,封装了消息循环,简化了处理过程.待续...
封装了windows窗口,控件,简化windows开发.
声明winProc回调函数;定义窗口属性,绑定回调函数,注册窗口类;创建windows窗口;进入消息处理循环,直到结束.
一个简单的win32程序,D的例子:winsamp
// Compile with: dmd winsamp gdi32.lib winsamp.def import std.c.windows.windows; import std.c.stdio; const int IDC_BTNCLICK = 101; const int IDC_BTNDONTCLICK = 102; extern(Windows) int WindowProc(HWND hWnd, uint uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_BTNCLICK: if (HIWORD(wParam) == BN_CLICKED) MessageBoxA(hWnd, "Hello, world!", "Greeting", MB_OK | MB_ICONINFORMATION); break; case IDC_BTNDONTCLICK: if (HIWORD(wParam) == BN_CLICKED) { MessageBoxA(hWnd, "You've been warned...", "Prepare to GP fault", MB_OK | MB_ICONEXCLAMATION); *(cast(int*) null) = 666; } break; } break; } case WM_PAINT: { static char[] text = "D Does Windows"; PAINTSTRUCT ps; HDC dc = BeginPaint(hWnd, &ps); RECT r; GetClientRect(hWnd, &r); HFONT font = CreateFontA(80, 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); HGDIOBJ old = SelectObject(dc, cast(HGDIOBJ) font); SetTextAlign(dc, TA_CENTER | TA_BASELINE); TextOutA(dc, r.right / 2, r.bottom / 2, text, text.length); SelectObject(dc, old); EndPaint(hWnd, &ps); break; } case WM_DESTROY: PostQuitMessage(0); break; default: break; } return DefWindowProcA(hWnd, uMsg, wParam, lParam); // allow windows process other message } int doit() { HINSTANCE hInst = GetModuleHandleA(null); WNDCLASS wc; wc.lpszClassName = "DWndClass"; wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = &WindowProc; //set winProc wc.hInstance = hInst; wc.hIcon = LoadIconA(cast(HINSTANCE) null, IDI_APPLICATION); wc.hCursor = LoadCursorA(cast(HINSTANCE) null, IDC_CROSS); wc.hbrBackground = cast(HBRUSH) (COLOR_WINDOW + 1); wc.lpszMenuName = null; wc.cbClsExtra = wc.cbWndExtra = 0; RegisterClassA(&wc); HWND hWnd, btnClick, btnDontClick; hWnd = CreateWindowA("DWndClass", "Just a window", WS_THICKFRAME | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, HWND_DESKTOP, cast(HMENU) null, hInst, null); assert(hWnd); btnClick = CreateWindowA("BUTTON", "Click Me", WS_CHILD | WS_VISIBLE, 0, 0, 100, 25, hWnd, cast(HMENU) IDC_BTNCLICK, hInst, null); btnDontClick = CreateWindowA("BUTTON", "DON'T CLICK!", WS_CHILD | WS_VISIBLE, 110, 0, 100, 25, hWnd, cast(HMENU) IDC_BTNDONTCLICK, hInst, null); MSG msg; while (GetMessageA(&msg, cast(HWND) null, 0, 0)) { TranslateMessage(&msg); DispatchMessageA(&msg); } return 1; } extern (C) void gc_init(); extern (C) void gc_term(); extern (C) void _minit(); extern (C) void _moduleCtor(); extern (C) void _moduleUnitTests(); extern (Windows) int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { int result; gc_init(); // initialize garbage collector _minit(); // initialize module constructor table try { _moduleCtor(); // call module constructors _moduleUnitTests(); // run unit tests (optional) result = doit(); // insert user code here } catch (Object o) // catch any uncaught exceptions { MessageBoxA(null, cast(char *)o.toString(), "Error", MB_OK | MB_ICONEXCLAMATION); result = 0; // failed } gc_term(); // run finalizers; terminate garbage collector return result; }
2.DFL的做法
使用面向对象语言的方法,使用继承抽象了窗口组件的层次,封装了消息循环,简化了处理过程.待续...
发表评论
-
最近抽空翻译了D语言实用入门教程
2018-04-20 10:42 883最近抽空翻译了D语言实用入门教程 地址在Github,供初 ... -
编译WxD0.16
2011-09-27 18:09 1717wx我在Python环境下用了 ... -
简单看了下DGui
2011-09-26 10:39 2259很久没有写代码了。。。。 怀念往日不如今天行动。生疏了 ... -
支持中文录入的harmonia
2010-08-16 22:40 1040harmonia界面很方便,发现不能录入中文.Patch一下. ... -
控制台得到密码不回显
2009-09-18 22:37 1266看到坛子有人问“在D或C下如何实现输入单个字符不回显?可能的应 ... -
D资源文件调用
2009-08-09 01:36 1053终于成功了。 资源文件太可爱,竟然可以如此。按名称进行 ... -
The Case for D中英文版PDF下载
2009-06-19 10:27 1404The Case for D 在网站上浏览不方便的,有了PD ... -
D语言真相 The Case for D(1-5)
2009-06-17 09:52 4901D语言真相 Andrei Alexandre ... -
The Case for D
2009-06-16 22:50 2310The Case for D Andrei Alexan ... -
Python嵌入D
2009-06-12 11:37 1967所有的嵌入都研究了一个遍。发现嵌入Python挺好,试试。 ... -
实用的DFL注册表
2009-05-27 09:09 1018应用中要用到注册表.DFL里面有. 参照了文档,写了一 ... -
DFL 2.027,1.041,2,3编译
2009-04-07 17:59 1599注:DFL已经更新,http://www.dprogrammi ... -
D2.0的字符串
2009-04-07 08:28 1380D2.0的字符串增加了常量,不变量和变量.在很大程度上增加了语 ... -
D语言编译器DMD开源了!
2009-03-05 19:56 3481自从1999年12月,Walter设计开发D语言以来,D语 ... -
D语言现状From2007
2009-03-02 15:32 1069I'm sure this was brought up in ... -
D语言GUI库简单比较
2009-02-20 15:25 3230通过对一些D语言可以使用的GUI进行比较,对初学者有个借 ... -
D语言脚本引擎简单比较
2009-02-19 14:38 1820经过长期的测试,使用,扩展代码编写,比较了D中可以使用的几种脚 ... -
D语言编译器开始支持Mac OSX
2009-02-15 18:25 1157D语言编译器开始支持Mac OSX。 D语言历经10年的发 ... -
触发DFL中的ComboBox控件的键盘事件
2009-02-06 12:04 1197class ComboxKeyDownFilter:IMess ... -
DFL分析(四)伟大的结构
2008-12-25 00:08 1426每个程序都有很多的代码编织而成.为了获得最大的兼容性,你要从容 ...
相关推荐
DFL-ST II工具是一款由磁动电子科技自主开发的专业ST硬盘固件修复工具,与深受大家喜爱和赞誉的DFL-WD为兄弟产品。 DFL-ST II工具主要针对市面上的7200.7-7200.10系列及11、12代的F3系列的ST硬盘而设计。DFL-ST II...
同时,DFL也考虑到了工具链的完整性,可能包含构建系统、测试框架等,使得开发流程更为顺畅。 压缩包中的"dfl"文件可能包含了DFL库的所有源码,这为开发者提供了深入学习和定制的机会。通过阅读和研究源码,我们...
DFL210配置示例 DFL系列防火墙配置
DFL-DE是专业的数据恢复软硬件USB2.0设备,该组件能够对ATA,SATA所有硬盘进行数据恢复,该设备也能够对连接于DFL-WD的SATA端口使用48位寻址方式的硬盘工作,同也也可以对任何操作系统识别的存储装置进行数据恢复。...
综合以上分析,我们可以推测“DFL-WD II”可能是一个专为西部数据硬盘设计的数据恢复或维护工具,具有高级的性能和稳定性,其最新版本为V2.3.5。然而,关于“XISHU”标签和“1590不降溶Pinnacle”的确切含义,需要更...
《DFL员工福利商业保险项目信息管理系统》毕业论文主要探讨了一种基于B/S架构的保险信息系统设计与实现。本文将详细解析B/S结构的核心特点、系统功能以及在保险业务中的应用,尤其是理赔归档信息、归档信息查询及...
DFL系列防火牆簡易安裝手冊 DFL-210,260,800,860,1600,2500 適用。
人脸识别是一种生物特征识别技术,它通过分析和比较人脸图像的特征信息来确认或验证个体身份。在实际应用中,人脸识别通常包括人脸检测、特征提取和匹配三个步骤。人脸检测定位出图像中的人脸区域,特征提取则从检测...
标签“Python库”揭示了DFL168A是一个专门为Python设计的软件模块或框架,旨在提供特定功能或服务,如数据处理、网络通信、机器学习等。Python库可以极大地扩展Python的功能,简化开发过程,提高代码的可重用性。 ...
DFL系列防火牆如果阻檔URL DFL-210,260,800,860,1600,2500 適用
DFL2调色插件 DFL2调色插件 DFL2调色插件
”可能指的是一个打印相关的项目或者软件,而描述中的“20080303,DMD1.027,xp,dfl0.97”提供了这个项目的更新日期(2008年3月3日)以及使用的编译器版本(DMD1.027)和可能的框架或库版本(dfl0.97)。这个项目似乎...
**DFL干膜润滑剂**是由ELECTROLUBE公司生产的一种特殊白色干膜润滑剂。该产品具有极高的纯净度,适用于不能使用矿物油或硅酮材料的场景。DFL干膜润滑剂能够形成不会污染、迁移或吸附灰尘及杂质的薄膜。 #### 二、...
国际著名网络设备和解决方案提供商D-Link推出区域联防机制,并将其应用在新一代的安全产品--DFL-800/1600高性能 整合式防火墙中,不仅通过在网络安全设备之间建立互动机制,实现对网络安全设备的有效整合,将传统...
【标题】"dfl_0802:dfl0802纯" 暗示着这可能是一个关于数据处理或者数据分析的项目,其中“dfl”可能是“Data Flow”或“DataFrame Library”的缩写,而“0802”可能是日期、版本号或者是项目的特定标识。...
6. 硬件驱动层:硬件驱动层负责与硬件设备通信,包含了一系列驱动程序,如I2C、ADC、UART、SPI、GPIO、I2C、DMA、ADC、DAC、Timer、PWM、PWC、SPI、DFL、Low Power、RTC、NVM、CAN等。该层确保软件能有效地控制硬件...
TOSHIBA-TC55257DFL.pdf