`
betty_betty2008
  • 浏览: 24702 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
最近访客 更多访客>>
社区版块
存档分类
最新评论

D2 中使用VC的Windows资源文件

    博客分类:
  • D
阅读更多
终于试成功了。总结一下:

一.在*.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-communication-master_d2dcommunication_d2d_通信资源分配"项目中,重点探讨了D2D通信中的资源分配策略以及干扰管理,以提高通信效率和网络性能。** 首先,**通信模型建立**是D2D通信的基础。在D2D通信模型...

    D2D_allocation.zip_D2D 资源分配_D2D资源分配_D2D间用户资源分配_d2d resource_资源分配

    描述中的"main1MAX.m"文件可能是一个MATLAB脚本,用于模拟和分析D2D资源分配的过程。在这个场景中,用户以5公里/小时的速度移动,这意味着他们的位置会随时间变化,这对资源分配策略提出了挑战。移动性管理是必要的...

    d2bot-with-kolbot-cn-test_d2pt_kolbot_KPBOT_kolbot拾取文件_d2ptcom_源

    【标签】"d2pt kolbot KPBOT kolbot拾取文件 d2ptcom" 这些标签进一步明确了主题,"kolbot拾取文件"特别指出该工具具有自动拾取游戏内物品的功能,这对于长时间游戏或刷装备的玩家来说非常有用。而标签中的"kolbot...

    D2D资源分配仿真 MATLAB

    在"**D2D3**"这个文件中,可能包含了实现上述功能的MATLAB代码,包括定义系统模型、实施资源分配算法、计算性能指标和绘制结果图表等部分。通过深入分析和理解这些代码,我们可以进一步了解D2D通信中的资源分配策略...

    D2XX驱动文件

    1. **DLL文件**:动态链接库(Dynamic Link Library),如`ftd2xx.dll`,是Windows操作系统中的一个重要组成部分,它包含了运行某些应用程序所需的函数和资源。在本例中,`ftd2xx.dll`提供了与FTDI设备交互的API,...

    动手学深度学习 d2l文件

    动手学深度学习 d2l文件

    d2l-zh-1.0.zip_D2L 文件_d2lzh安装_deeplearning_mxnet_pig17v

    6. **img** 和 **data**:这两个文件夹分别存储了教程中用到的图像资源和数据集。数据集是实践深度学习项目的关键,而图像可以帮助解释抽象的概念。 7. **chapter_computational-performance**:这一部分将探讨如何...

    Delphi XE10.3 FMX 画图程序资源文件介绍

    Windows Vista 和 Windows 7: 使用 Direct2D (D2D) 实现,对应的单元文件为 FMX.Canvas.D2D.pas。 Windows XP: 使用 GDI+ 实现,对应的单元文件为 FMX.Canvas.GDIP.pas。 Mac 系列: 使用 Core Graphics 实现,对应的...

    D2NT_d2nt1.13c_ntbot_d2nt_d2ntbot_d2NT私服_

    【标题】"D2NT_d2nt1.13c_ntbot_d2nt_d2ntbot_d2NT私服" 指的是一个基于《暗黑破坏神2》(Diablo II)的游戏服务器软件,通常用于建立私人游戏服务器,即"D2NT私服"。这个版本是1.13c,这是《暗黑破坏神2》的一个经典...

    bipartited2d-master_shownqyg_D2D资源分配_D2D资源分配_D2D资源_resourcealloc

    在"bipartited2d-master_shownqyg_D2D资源分配_D2D资源分配_D2D资源_resourceallocation_源码.zip"文件中,包含了实现bipartited2d算法的源代码。通过对这些代码的阅读和分析,我们可以深入了解算法的具体实现细节,...

    D2RQ 下载 win和linux都有

    在“D2RQ 下载 win和linux都有”这个资源中,包含的是D2RQ的0.81版本,这是截止描述时的最新版本。D2RQ的这个版本提供对两种主流操作系统的支持,即Windows和Linux,这使得无论是在个人电脑还是服务器环境下,都能...

    D2D显示图片(MFC)

    Direct2D,简称D2D,是微软推出的一种高...通过研究和理解这个示例,你将能够更好地掌握在MFC中使用D2D显示图片的技术和技巧。记住,实践是掌握新知识的关键,所以尝试自己动手实现这些功能,以加深理解和应用能力。

    网络游戏-D2D无线缓存网络中的文件内容分配方法及装置.zip

    《网络游戏在D2D无线缓存网络中的文件内容分配策略》 随着移动互联网的快速发展,网络游戏已经成为人们休闲娱乐的重要方式之一。然而,大量的游戏数据传输对网络带宽资源提出了巨大挑战,尤其是在分布式设备到设备...

    D2NT 1.13 patch_D2NTbot_d2nt_d2nt3.1_d2暗黑D2NTbot_diablo21.13kpbo

    压缩包内的"D2NT 1.13 patch"文件很可能是补丁的安装程序,玩家需要将其解压并按照指示安装到暗黑破坏神2的游戏目录中,以启用D2NTbot的功能。在安装和使用前,确保阅读相关文档,了解如何配置和运行D2NTbot,以避免...

    ITE_WinECU_D2EC使用手册

    根据提供的文件信息,本文将对ITE_WinECU_D2EC使用手册中的关键知识点进行详细的解读与总结。本文档版本为1.0,主要涵盖了工具的基本功能介绍、寄存器监控器的使用方法、模拟键盘的功能及配置以及日志记录等功能。 ...

    距离受限的蜂窝网络D2D通信资源分配算法

    为了进一步提升第5代移动通信网络(5th Generation,5G)的系统性能以及用户的服务 质量(Quality of Service,QoS),就蜂窝通信网络中终端直通(Device to Device,D2D)通信的资源 分配问题,提出一种距离受限的...

Global site tag (gtag.js) - Google Analytics