终于试成功了。总结一下:
一.在*.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资源分配D2D数据信道代码,包括通信模型建立,资源池确定,资源分配,干扰避免策略,sinr及吞吐量计算等内容
Directx9 2d游戏源码. 考虑到大小,所以图片没有一起打包. 里面包括了(资源打包,地图编辑器,游戏主界面). 项目写了一点点就中途弃坑了. 我也是菜鸟,代码不是很美观且很乱. 仅仅适合新手.
动手学深度学习 d2l文件
D2D网络中联合资源分配和功率控制的干扰协调,孙彦赞,王哲,基于蜂窝网络的Underlay D2D(Device-to-Device Communication)通信模式下,D2D用户通过复用蜂窝用户频谱资源通信可有效提高系统频谱资源利用率,�
D2D用户资源分配,并考虑用户的移动性。每次,UE以速度5Km/h移动,故每次都要重新确定c,d用户的位置。
为了进一步提升第5代移动通信网络(5th Generation,5G)的系统性能以及用户的服务 质量(Quality of Service,QoS),就蜂窝通信网络中终端直通(Device to Device,D2D)通信的资源 分配问题,提出一种距离受限的...
每轮资源分配中,D2D用户根据所在RB资源上的动态干扰环境,自治地竞争RB资源,基站则根据吞吐率增益选举最优的D2D用户分配,避免多对一的RB竞争冲突。仿真实验表明,二分图算法在降低算法复杂度的同时,拥有较优的...
设备到设备(Device-to-device D2D)通信是一种很有前途的提高...在本文中,我们研究了联合上行链路和下行资源分配问题的总和最大化在保证服务质量的同时保证系统的数据速率(QoS)蜂窝用户设备(CUEs)和D2D用户设备(费)。
D2D通信通过复用蜂窝系统频谱资源实现一定范围内终端设备点到点的直接通信,频谱资源的复用缓解了资源匮乏的问题,但必然会产生同频干扰而影响蜂窝系统的性能。为了提高资源利用率且降低干扰,通过运用ISAP算法来...
d2jsp 脱壳文件 1.2.0 1.2.0为Aspack的壳,此文件为脱壳后的文件
D2D信道分配仿真,算法有启发式算法,最优算法等,仿真介入D2D对随干扰门限的变化等。
基于MATLAB的d2d功率控制仿真,简单的解决了资源分配的问题,现在假设有3个可用信道,一个蜂窝用户只允许一个d2d对用户复用资源(复用方式是复用距离最远的蜂窝用户信道,暂时没有考虑干扰问题),那么这3个信道最多...
将全双工技术运用到D2D (Device-to-Device)通信中,可以增大D2D用户的吞吐量进而提高系统吞吐量,但全双工通信带来的自干扰也不可避免。考虑多个D2D用户对可共享相同的蜂窝用户资源,此时D2D用户对之间将产生同频...
D2D通信中基于二部图的比例公平资源分配,使用matlab实现的
基于并行CNN的RIS辅助D2D保密通信系统资源分配算法.docx
D2XX驱动,包括DLL,H,lib文件
深度学习教程实现代码,供初学者使用,使用mxnet
diablo 2 bot D2nt 1.3
此外,资源文件中还包含了实用的代码示例和仿真工具,帮助你更好地理解和掌握D2D通信的实际实现。通过运行这些代码示例,你可以模拟不同场景下的D2D通信,观察和分析其性能特点,如传输速率、功耗、信道容量等。 ...