对话框程序是窗口程序的子集。窗口程序大部分的工作由对话框程序执行。
对话框的相关设置在工程的.dlg文件里,使用资源编辑器可进行对话框设置。
设置对话框控件及其属性。一般常设置控件的Name和Caption属性。Name是对话框控件的标识,在C-Free里它的宏定义在rsrc.inc文件里,其有一定的命名规则。
对话框菜单设置好后,在对话框Menu属性中添加菜单。
Image控件注意Type和Image属性。
EditText控件注意xStyle属性。
资源最好保存在工程下。
对话框设置好后,需要在main.cpp中写处理函数。
注意要#include “rsrc.inc”。
按钮的点击在Main_OnCommand中。
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
int iDrivesNum = 0;
TCHAR cStr[10] = “IHGFEDCBA”;
switch(id)
{
case IDC_BTNGO:
TCHAR cR[256];
GetDlgItemText(hwnd, IDC_EDTR, cR, sizeof(cR)/sizeof(TCHAR));
float fR = atof(cR);
fR = 3.1415926*fR*fR;
gcvt(fR, 8, cR);
SetDlgItemText(hwnd, IDC_EDTRESULT, cR);
break;
case IDC_BTNINFO:
DWORD dInfo = GetLogicalDrives();
TCHAR cInfo[256];
TCHAR cResult[256];
itoa(dInfo, cInfo, 2);
for(int i = lstrlen(cInfo)-1; i >= 0; i–)
{
if(cInfo[i] == ‘1’)
{
cResult[iDrivesNum] = cStr[i];
iDrivesNum++;
//TCHAR cTemp = cStr[i];
//lstrcat(cResult, &cTemp);
//为什么会出现特殊字符?
}
}
cResult[iDrivesNum+1] = ‘\0’;
SetDlgItemText(hwnd, IDC_EDTINFO, cResult);
break;
default:break;
}
}
问题部分是因为lstrcat是连接字符串(字符指针)的,不能用来直接连接char。
参考资料:
lstrcat http://baike.baidu.com/view/1906745.htm
strcat http://baike.baidu.com/view/1028534.htm
strncat http://baike.baidu.com/view/1028544.htm
问题部分改为
if(cInfo[i] == ‘1’)
{
iDrivesNum++;
TCHAR* cTemp = &cStr[i];
strncat(cResult, cTemp, 1);
//为什么只在第一个位置出现特殊字符?
}
ZeroMemory(cResult, sizeof(cResult));