终于试成功了。总结一下:
一.在*.RC里包含windows头文件,因为不用系统预定义常量的机会不多
#include <windows.h>
二.直接在*.RC里定义自定义常量
#define IDD_MAIN
#define IDC_TEXT1 102
等等
三.用Walter的 rcc.exe编译*rc
rcc.exe -32 myresource.rc
生成myresource.res
四.在D源文件里还要定义一次资源中的常量:
const int IDD_MAIN=101;
const int IDC_TEXT1=102;
等等
五.编译D:
bud -O -release -gui -clean testd.d testd.res
生成testd.exe
以下是测试程序
testd.rc:
#include <windows.h>
#define IDD_MAIN 101
#define IDC_TEXT1 102
IDD_MAIN DIALOG 129, 26, 180, 70
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Show Info"
FONT 8, "MS Sans Serif"
BEGIN
EDITTEXT IDC_TEXT1, 19, 15, 147, 12, ES_AUTOHSCROLL
PUSHBUTTON "&Quit", IDCANCEL, 107, 42, 40, 14
PUSHBUTTON "&OK", IDOK, 28, 43, 40, 14
END
D源文件:testd.d:
module testd;
//import std.c.windows.windows;
import win32.windows;
import std.string;
import std.conv;
import std.stdio;
import core.runtime;
import core.stdc.stdlib;
import core.stdc.stdio;
const int IDD_MAIN=101;
const int IDC_TEXT1=102;
extern(Windows)
int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
int retval;
Runtime.initialize;
runModuleUnitTests;
WNDCLASSEX wc;
wc.cbSize=wc.sizeof;
wc.lpfnWndProc=&DefDlgProc;
wc.cbWndExtra=DLGWINDOWEXTRA;
wc.hInstance=hInstance;
wc.hCursor=LoadCursor(null,IDC_ARROW);
wc.hbrBackground=cast(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName=toStringz("dialog");
if(!RegisterClassEx(&wc))
{
MessageBox(null,toStringz("Register class failed"),toStringz("failed"),MB_OK|MB_ICONERROR);
return -1;
}
retval= DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), null, &DialogFunc);
// run finalizers; terminate garbage collector
Runtime.terminate;
return retval;
}
extern(Windows)
int DialogFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
{
SetFocus(GetDlgItem(hwnd,IDC_TEXT1));
EnableWindow(GetDlgItem(hwnd,IDOK),0);
}
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_TEXT1:
{
switch(HIWORD(wParam))
{
case EN_CHANGE:
{
int nLength=GetWindowTextLength(GetDlgItem(hwnd,IDC_TEXT1));
EnableWindow(GetDlgItem(hwnd,IDOK),nLength>0);
}
break;
default:
break;
}
}
break;
case IDOK:
{
char[1024] prompt;
GetDlgItemText(hwnd,IDC_TEXT1,cast(char*)prompt,cast(char*)prompt.sizeof);
MessageBox(null,cast(char*)prompt,"text in textbox is",0);
}
return 1;
case IDCANCEL:
{
int retval=MessageBox(null,"Are you sure to close the dialog?",
"Confirm on close",MB_YESNO|MB_ICONQUESTION);
if(retval==IDYES)
EndDialog(hwnd,0);
}
return 1;
default:
break;
}
break;
case WM_CLOSE:
EndDialog(hwnd,0);
return 1;
default:
break;
//assert(0);
}
return 0;
}
附程序执行时屏幕截图。
- 大小: 8.8 KB
- 大小: 24.5 KB
- 大小: 22.2 KB
分享到:
相关推荐
在"D2D-communication-master_d2dcommunication_d2d_通信资源分配"项目中,重点探讨了D2D通信中的资源分配策略以及干扰管理,以提高通信效率和网络性能。** 首先,**通信模型建立**是D2D通信的基础。在D2D通信模型...
描述中的"main1MAX.m"文件可能是一个MATLAB脚本,用于模拟和分析D2D资源分配的过程。在这个场景中,用户以5公里/小时的速度移动,这意味着他们的位置会随时间变化,这对资源分配策略提出了挑战。移动性管理是必要的...
【标签】"d2pt kolbot KPBOT kolbot拾取文件 d2ptcom" 这些标签进一步明确了主题,"kolbot拾取文件"特别指出该工具具有自动拾取游戏内物品的功能,这对于长时间游戏或刷装备的玩家来说非常有用。而标签中的"kolbot...
在"**D2D3**"这个文件中,可能包含了实现上述功能的MATLAB代码,包括定义系统模型、实施资源分配算法、计算性能指标和绘制结果图表等部分。通过深入分析和理解这些代码,我们可以进一步了解D2D通信中的资源分配策略...
1. **DLL文件**:动态链接库(Dynamic Link Library),如`ftd2xx.dll`,是Windows操作系统中的一个重要组成部分,它包含了运行某些应用程序所需的函数和资源。在本例中,`ftd2xx.dll`提供了与FTDI设备交互的API,...
动手学深度学习 d2l文件
6. **img** 和 **data**:这两个文件夹分别存储了教程中用到的图像资源和数据集。数据集是实践深度学习项目的关键,而图像可以帮助解释抽象的概念。 7. **chapter_computational-performance**:这一部分将探讨如何...
Windows Vista 和 Windows 7: 使用 Direct2D (D2D) 实现,对应的单元文件为 FMX.Canvas.D2D.pas。 Windows XP: 使用 GDI+ 实现,对应的单元文件为 FMX.Canvas.GDIP.pas。 Mac 系列: 使用 Core Graphics 实现,对应的...
在"bipartited2d-master_shownqyg_D2D资源分配_D2D资源分配_D2D资源_resourceallocation_源码.zip"文件中,包含了实现bipartited2d算法的源代码。通过对这些代码的阅读和分析,我们可以深入了解算法的具体实现细节,...
【标题】"D2NT_d2nt1.13c_ntbot_d2nt_d2ntbot_d2NT私服" 指的是一个基于《暗黑破坏神2》(Diablo II)的游戏服务器软件,通常用于建立私人游戏服务器,即"D2NT私服"。这个版本是1.13c,这是《暗黑破坏神2》的一个经典...
在“D2RQ 下载 win和linux都有”这个资源中,包含的是D2RQ的0.81版本,这是截止描述时的最新版本。D2RQ的这个版本提供对两种主流操作系统的支持,即Windows和Linux,这使得无论是在个人电脑还是服务器环境下,都能...
Direct2D,简称D2D,是微软推出的一种高...通过研究和理解这个示例,你将能够更好地掌握在MFC中使用D2D显示图片的技术和技巧。记住,实践是掌握新知识的关键,所以尝试自己动手实现这些功能,以加深理解和应用能力。
根据提供的文件信息,本文将对ITE_WinECU_D2EC使用手册中的关键知识点进行详细的解读与总结。本文档版本为1.0,主要涵盖了工具的基本功能介绍、寄存器监控器的使用方法、模拟键盘的功能及配置以及日志记录等功能。 ...
《网络游戏在D2D无线缓存网络中的文件内容分配策略》 随着移动互联网的快速发展,网络游戏已经成为人们休闲娱乐的重要方式之一。然而,大量的游戏数据传输对网络带宽资源提出了巨大挑战,尤其是在分布式设备到设备...
压缩包内的"D2NT 1.13 patch"文件很可能是补丁的安装程序,玩家需要将其解压并按照指示安装到暗黑破坏神2的游戏目录中,以启用D2NTbot的功能。在安装和使用前,确保阅读相关文档,了解如何配置和运行D2NTbot,以避免...
在源代码的【d2hackmap113c】文件中,可能包含以下结构: 1. 主程序源文件:通常命名为`main.cpp`,这是整个项目的入口点,负责程序的初始化和控制流程。 2. 类定义:用于实现各种功能的类,如地图编辑器类、内存...
为了进一步提升第5代移动通信网络(5th Generation,5G)的系统性能以及用户的服务 质量(Quality of Service,QoS),就蜂窝通信网络中终端直通(Device to Device,D2D)通信的资源 分配问题,提出一种距离受限的...