- 浏览: 327247 次
最新评论
-
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 896最近抽空翻译了D语言实用入门教程 地址在Github,供初 ... -
编译WxD0.16
2011-09-27 18:09 1724wx我在Python环境下用了 ... -
简单看了下DGui
2011-09-26 10:39 2279很久没有写代码了。。。。 怀念往日不如今天行动。生疏了 ... -
支持中文录入的harmonia
2010-08-16 22:40 1045harmonia界面很方便,发现不能录入中文.Patch一下. ... -
控制台得到密码不回显
2009-09-18 22:37 1269看到坛子有人问“在D或C下如何实现输入单个字符不回显?可能的应 ... -
D资源文件调用
2009-08-09 01:36 1057终于成功了。 资源文件太可爱,竟然可以如此。按名称进行 ... -
The Case for D中英文版PDF下载
2009-06-19 10:27 1409The Case for D 在网站上浏览不方便的,有了PD ... -
D语言真相 The Case for D(1-5)
2009-06-17 09:52 4913D语言真相 Andrei Alexandre ... -
The Case for D
2009-06-16 22:50 2312The Case for D Andrei Alexan ... -
Python嵌入D
2009-06-12 11:37 1984所有的嵌入都研究了一个遍。发现嵌入Python挺好,试试。 ... -
实用的DFL注册表
2009-05-27 09:09 1027应用中要用到注册表.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 1388D2.0的字符串增加了常量,不变量和变量.在很大程度上增加了语 ... -
D语言编译器DMD开源了!
2009-03-05 19:56 3497自从1999年12月,Walter设计开发D语言以来,D语 ... -
D语言现状From2007
2009-03-02 15:32 1072I'm sure this was brought up in ... -
D语言GUI库简单比较
2009-02-20 15:25 3250通过对一些D语言可以使用的GUI进行比较,对初学者有个借 ... -
D语言脚本引擎简单比较
2009-02-19 14:38 1831经过长期的测试,使用,扩展代码编写,比较了D中可以使用的几种脚 ... -
D语言编译器开始支持Mac OSX
2009-02-15 18:25 1170D语言编译器开始支持Mac OSX。 D语言历经10年的发 ... -
触发DFL中的ComboBox控件的键盘事件
2009-02-06 12:04 1203class ComboxKeyDownFilter:IMess ... -
DFL分析(四)伟大的结构
2008-12-25 00:08 1429每个程序都有很多的代码编织而成.为了获得最大的兼容性,你要从容 ...
相关推荐
同时,DFL也考虑到了工具链的完整性,可能包含构建系统、测试框架等,使得开发流程更为顺畅。 压缩包中的"dfl"文件可能包含了DFL库的所有源码,这为开发者提供了深入学习和定制的机会。通过阅读和研究源码,我们...
【标题】"dfl_0802:dfl0802纯" 暗示着这可能是一个关于数据处理或者数据分析的项目,其中“dfl”可能是“Data Flow”或“DataFrame Library”的缩写,而“0802”可能是日期、版本号或者是项目的特定标识。...
通常,一个名为"dfl"的项目可能是数据处理、数据分析或是数据流相关的,而"v104"则表明它经过了多次迭代,可能是一个成熟且稳定的项目。 【标签】"Python"揭示了这个项目是用Python语言编写的。Python是一种高级、...
杠杆分析框架图10-1展示了如何将销售量变动的影响分解为经营政策(经营杠杆)和融资政策(财务杠杆)两个方面,这对于管理层制定战略和计划具有指导意义。通过理解这些杠杆效应,管理者可以更好地预测企业收益的波动...
在本文中,我们将深入探讨财务杠杆专题,为准备会计师考试的考生们提供一个全面的分析框架。 首先,要了解财务杠杆效应,我们先要明白其定义及如何产生。财务杠杆效应是指企业因为存在固定财务费用(如利息支出和...
本研究提出了一种新颖的基于去中心化联邦学习的时空模型(Decentralized Federated Learning-based Spatial-Temporal Model, DFL-ST),该模型能够通过多个参与者之间的协作训练来进行货运速度预测,而无需依赖于...
在深度学习中,模型训练往往需要优化大量参数,这一过程通常在Pytorch这样的深度学习框架中进行。在训练过程中,我们可能会遇到需要冻结模型中特定层(例如卷积层)的参数的情况,这样做的目的可能是为了保留之前...
动态模糊集理论中包含的DF格结构、DF模运算、DF表现定理等概念,构成了一个完整的理论框架,用以描述和分析动态模糊现象。 3. 动态模糊逻辑系统的构建 动态模糊逻辑系统(Dynamic Fuzzy Logic,简称DFL)是李凡长...
高斯过程是一种非参数概率模型,它为回归分析提供了一种灵活的框架。它使用高斯过程来建模数据,以概率分布的形式对函数进行建模。通过定义一个先验概率分布,然后用观测数据来更新这个先验分布,以得到后验分布。...
5. 调试技巧:学会使用USB分析器、kernel log、调试器等工具来诊断和解决问题。 对于"4th"这个文件,可能是源代码或者编译指南的一部分。在实际学习过程中,你需要阅读源代码,理解其结构和功能,熟悉如何配置、...