1.就像引入图片一样,先点插入。Mean。若选子菜单的分支 可选择(弹出)。。。 分划线 可选择(分隔符) 。。。前面加& 就是快捷键 按Alt加字母。。。
TCHAR name[256]; 注意:char 在windows里 char 都用 TCHAR 代替。
GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name));
MessageBox(hwnd,name,name,MB_OK);
}
TCHAR name[256];
GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name)); 注意此语句的各量特点。
TCHAR msg[256]; 重新定义一个字符串。作为sprintf打印的字符串。
wsprintf(msg,"%s你好",name); 注意此语句的各量特点。
MessageBox(hwnd,msg,name,MB_OK);
}
case IDC_OK:
{
SetDlgItemText(hwnd,IDC_EDITNAME,"hello, world!");
}
break;
default:
break;
}
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
2. 注意== 和 {} 的应用。
c语言中开发windows时。常用wsprintf 代替 sprintf。解决中文等问题。 但二者用法几乎一模一样。
比较两个字符串是否相等用lstrcmp,即前面加了个l。
3.改应用程序图标:选择引入。。。选择ico 图片文件。。。选择从属性改ID为1.。。。保存。。。重新生成一下。。。
4.
取编辑框中输入的文本
用函数 GetDlgItemText(hwnd,IDC_EDITNAME,str,sizeof(str))
解释GetDlgItemText:Get 取得。Dlg dialog对话,对话框的简写。 Item 项。Text 文字。
如:case IDC_OK:
{
TCHAR name[256]; 注意:char 在windows里 char 都用 TCHAR 代替。
GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name));
MessageBox(hwnd,name,name,MB_OK);
}
c语言中开发windows时。常用TCHAR 代替 char。解决中文等问题。但二者用法几乎一模一样。
得到输入的名字:
5.上面只是简单的打印出名字, 而不是打出如:
***你好 。
则用到sprintf了。
比较:printf 是打印到屏幕上。 而sprintf 是打印到字符串中。
case IDC_OK:
{
TCHAR name[256];
GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name)); 注意此语句的各量特点。
TCHAR msg[256]; 重新定义一个字符串。作为sprintf打印的字符串。
wsprintf(msg,"%s你好",name); 注意此语句的各量特点。
MessageBox(hwnd,msg,name,MB_OK);
}
c语言中开发windows时。常用wsprintf 代替 sprintf。解决中文等问题。 但二者用法几乎一模一样。
得到:
6.
当点某个按钮时 给编辑框中自动输入某些字。
对比GetDlgItemText:Get 取得。Dlg dialog对话,对话框的简写。 Item 项。Text 文字。
用到函数SetDlgItemText(hwnd,IDC_EDITNAME,“贾占伟”)
如:switch(id)
{
case IDC_OK:
{
SetDlgItemText(hwnd,IDC_EDITNAME,"hello, world!");
}
break;
default:
break;
}
7.
简单的加法计算器:
switch(id)
{
case IDC_OK:
{
TCHAR str1[256],str2[256];
//不能用int,因为文本框中也可以输入不是数的东西。
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
//两个字符串不能相加,需先转换成int型。
//用c语言中的标准库函数 : atoi a:ASCII i:int。
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 + i2;
TCHAR str3[256];
wsprintf(str3,"%i",i);
{
case IDC_OK:
{
TCHAR str1[256],str2[256];
//不能用int,因为文本框中也可以输入不是数的东西。
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
//两个字符串不能相加,需先转换成int型。
//用c语言中的标准库函数 : atoi a:ASCII i:int。
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 + i2;
TCHAR str3[256];
wsprintf(str3,"%i",i);
//也可以用函数: itoa(i,str3,10);后面的是进制。因为a 是ASCII。
//可以试一下 2进制。 8进制。 16进制。
//%i用于输入一个整数,可以是十进制,前有0或0x时,可以是八或十六进制。
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
default:
break;
}
//%i用于输入一个整数,可以是十进制,前有0或0x时,可以是八或十六进制。
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
default:
break;
}
8.
简单的圆面积计算器:
switch(id)
{
case IDC_OK:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
int R = atoi(str);
int s = 3.1415*R*R;
{
case IDC_OK:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
int R = atoi(str);
int s = 3.1415*R*R;
//注意不知道怎么转换成小数形式的 结果不精确。
TCHAR str1[256];
wsprintf(str1,"%i",s);
TCHAR str1[256];
wsprintf(str1,"%i",s);
//注意三个参数的顺序是什么。。。
SetDlgItemText(hwnd,IDC_EDIT2,str1);
}
break;
default:
break;
}
SetDlgItemText(hwnd,IDC_EDIT2,str1);
}
break;
default:
break;
}
9.
十进制转换为二进制:
switch(id)
{
case IDC_OK:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
int i = atoi(str);
TCHAR str1[256];
itoa(i,str1,2);
SetDlgItemText(hwnd,IDC_EDIT2,str1);
}
break;
default:
break;
}
{
case IDC_OK:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
int i = atoi(str);
TCHAR str1[256];
itoa(i,str1,2);
SetDlgItemText(hwnd,IDC_EDIT2,str1);
}
break;
default:
break;
}
10.
简单的减法运算:
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
11
.报错的方法,即使当输的不是数字时进行报错。
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
//把转换的整型转换成字符型,再与原来的字符串比较,看是否相等。
TCHAR str11[256];
TCHAR str22[256];
sprintf(str11,"%i",i1);
sprintf(str22,"%i",i2);
TCHAR str11[256];
TCHAR str22[256];
sprintf(str11,"%i",i1);
sprintf(str22,"%i",i2);
//相等则说明是有效数字。
if(strcmp(str11,str1) != 0)
{
MessageBox(hwnd,TEXT("输入的第一个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
if(strcmp(str22,str2) != 0)
{
MessageBox(hwnd,TEXT("输入的第二个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
if(strcmp(str11,str1) != 0)
{
MessageBox(hwnd,TEXT("输入的第一个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
if(strcmp(str22,str2) != 0)
{
MessageBox(hwnd,TEXT("输入的第二个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
简化过程,既是定义函数。
BOOL ISInt(TCHAR *str)
//定义一个判断是否为有效数的函数。BOOL函数 ,
返回值是 FALSE 或者TRUE。
{
int i = atoi(str);
TCHAR str1[256];
sprintf(str1,"%i",i);
if(strcmp(str1,str) != 0)
{
return FALSE;
}
else
{
return TRUE;
}
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
if(ISInt(str1) == FALSE)
{
MessageBox(hwnd,TEXT("输入的第一个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
if(ISInt(str2) == FALSE)
{
MessageBox(hwnd,TEXT("输入的第二个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
}
{
int i = atoi(str);
TCHAR str1[256];
sprintf(str1,"%i",i);
if(strcmp(str1,str) != 0)
{
return FALSE;
}
else
{
return TRUE;
}
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
if(ISInt(str1) == FALSE)
{
MessageBox(hwnd,TEXT("输入的第一个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
if(ISInt(str2) == FALSE)
{
MessageBox(hwnd,TEXT("输入的第二个数不合法"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
int i1 = atoi(str1);
int i2 = atoi(str2);
int i = i1 - i2;
char str[256];
itoa(i,str,10);
SetDlgItemText(hwnd,IDC_EDIT3,str);
}
break;
default:
break;
}
}
12.把
样式中的下移改为下拉列表就能阻止在组合框中写入信息,既是只能选择某一项。
13.
C
omboBox的常见的宏的应用,也可当做函数用。也可类比到
listbox中。
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
//放在此位置可以在对话框初始化时就加入选项。
HWND hwndcombo1 = GetDlgItem(hwnd,IDC_COMBO1);//取得控件的句柄,”对话框句柄加ID“ 。
ComboBox_AddString(hwndcombo1,TEXT("北京市"));//添加选项。
ComboBox_AddString(hwndcombo1,TEXT("天津市"));
ComboBox_AddString(hwndcombo1,TEXT("上海市"));
ComboBox_AddString(hwndcombo1,TEXT("沈丘县"));
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
HWND hwndcombo1 = GetDlgItem(hwnd,IDC_COMBO1);//取得控件的句柄。
/*int curSel = ComboBox_GetCurSel(hwndcombo1); //确定目前选项的索引。
if(0 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是北京市!"),TEXT("提示"),MB_OK);
}
if(1 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是上海市!"),TEXT("提示"),MB_OK);
}
if(2 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是沈丘县!"),TEXT("提示"),MB_OK);
}
if(3 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是天津市!"),TEXT("提示"),MB_OK);
}*/
ComboBox_DeleteString(hwndcombo1,3);//删除某一项索引。
//int N = ComboBox_GetCount(hwndcombo1);//是对话框中索引的个数。
// ComboBox_SetCurSel(hwndcombo1,2);//默认选中对话框中的第三项。是int型。将数字定为-1则是取消所有选择。
//TCHAR str[256];
//ComboBox_GetLBText(hwndcombo1,2,str);//是得到对话框中的第几项的内容,并存到字符串中。可以用MessageBox显示出来。
}
break;
default:
break;
}
}
{
//放在此位置可以在对话框初始化时就加入选项。
HWND hwndcombo1 = GetDlgItem(hwnd,IDC_COMBO1);//取得控件的句柄,”对话框句柄加ID“ 。
ComboBox_AddString(hwndcombo1,TEXT("北京市"));//添加选项。
ComboBox_AddString(hwndcombo1,TEXT("天津市"));
ComboBox_AddString(hwndcombo1,TEXT("上海市"));
ComboBox_AddString(hwndcombo1,TEXT("沈丘县"));
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
HWND hwndcombo1 = GetDlgItem(hwnd,IDC_COMBO1);//取得控件的句柄。
/*int curSel = ComboBox_GetCurSel(hwndcombo1); //确定目前选项的索引。
if(0 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是北京市!"),TEXT("提示"),MB_OK);
}
if(1 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是上海市!"),TEXT("提示"),MB_OK);
}
if(2 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是沈丘县!"),TEXT("提示"),MB_OK);
}
if(3 == curSel)
{
MessageBox(hwnd,TEXT("你选择的是天津市!"),TEXT("提示"),MB_OK);
}*/
ComboBox_DeleteString(hwndcombo1,3);//删除某一项索引。
//int N = ComboBox_GetCount(hwndcombo1);//是对话框中索引的个数。
// ComboBox_SetCurSel(hwndcombo1,2);//默认选中对话框中的第三项。是int型。将数字定为-1则是取消所有选择。
//TCHAR str[256];
//ComboBox_GetLBText(hwndcombo1,2,str);//是得到对话框中的第几项的内容,并存到字符串中。可以用MessageBox显示出来。
}
break;
default:
break;
}
}
14。
计算器2.0
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_AddString(hwndCombo1,TEXT("+"));
ComboBox_AddString(hwndCombo1,TEXT("-"));
ComboBox_AddString(hwndCombo1,TEXT("*"));
ComboBox_AddString(hwndCombo1,TEXT("/"));//此法,产生的算法顺序乱。可对比下面补充。。。用ComboBox_InsertString(hwndCombo1, -1,TEXT("+"));函数。。。
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
int i3;
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int n = ComboBox_GetCurSel(hwndCombo1);
//可以用switch语句来写,更简单。
if(0 == n)
{
i3 = i1 - i2;
}
if(1 == n)
{
i3 = i1 * i2;
}
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_AddString(hwndCombo1,TEXT("+"));
ComboBox_AddString(hwndCombo1,TEXT("-"));
ComboBox_AddString(hwndCombo1,TEXT("*"));
ComboBox_AddString(hwndCombo1,TEXT("/"));//此法,产生的算法顺序乱。可对比下面补充。。。用ComboBox_InsertString(hwndCombo1, -1,TEXT("+"));函数。。。
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
int i1 = atoi(str1);
int i2 = atoi(str2);
int i3;
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int n = ComboBox_GetCurSel(hwndCombo1);
//可以用switch语句来写,更简单。
if(0 == n)
{
i3 = i1 - i2;
}
if(1 == n)
{
i3 = i1 * i2;
}
f(2 == n)
{
i3 = i1 / i2;
}
{
i3 = i1 / i2;
}
if(3 == n)
{
i3 = i1 + i2;
}
TCHAR str3[256];
itoa(i3,str3,10);
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
default:
break;
}
}
{
i3 = i1 + i2;
}
TCHAR str3[256];
itoa(i3,str3,10);
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
default:
break;
}
}
补充:
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_InsertString(hwndCombo1,-1,TEXT("+"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("-"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("*"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("/"));
return TRUE;
}
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_InsertString(hwndCombo1,-1,TEXT("+"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("-"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("*"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("/"));
return TRUE;
}
15.
学生管理系统
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_ADD:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_AddString(hwndCombo1,str);
//清空加入选项后,编辑框中的内容。
SetDlgItemText(hwnd,IDC_EDIT1,TEXT(" "));
}
break;
case IDC_RES:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT2,str,sizeof(str));
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int N = ComboBox_GetCount(hwndCombo1);
int i;
BOOL iFound = FALSE;
for(i = 0;i < N ;i++)
{
TCHAR s[256];
ComboBox_GetLBText(hwndCombo1,i,s);
if(0 == lstrcmp(s,str))
{
iFound = TRUE;
ComboBox_SetCurSel(hwndCombo1,i);
}
}
if(!iFound)
{
MessageBox(hwnd,TEXT("对不起,没有找到!"),TEXT("提示"),MB_OK|MB_ICONWARNING);
break;
}
}
break;
case IDC_DEL:
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int i = ComboBox_GetCurSel(hwndCombo1);
//当没有选择项时返回值是 CB_ERR 。
if(CB_ERR == i)
{
MessageBox(hwnd,TEXT("删除完毕,无可选择项!"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
//删完后,还存有最后一次的选项在编辑框中,这牵涉到空键刷新。先不在乎。
ComboBox_DeleteString(hwndCombo1,i);
}
break;
case IDC_EXIT:
{
exit(1);
}
break;
default:
break;
}
}
{
switch(id)
{
case IDC_ADD:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_AddString(hwndCombo1,str);
//清空加入选项后,编辑框中的内容。
SetDlgItemText(hwnd,IDC_EDIT1,TEXT(" "));
}
break;
case IDC_RES:
{
TCHAR str[256];
GetDlgItemText(hwnd,IDC_EDIT2,str,sizeof(str));
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int N = ComboBox_GetCount(hwndCombo1);
int i;
BOOL iFound = FALSE;
for(i = 0;i < N ;i++)
{
TCHAR s[256];
ComboBox_GetLBText(hwndCombo1,i,s);
if(0 == lstrcmp(s,str))
{
iFound = TRUE;
ComboBox_SetCurSel(hwndCombo1,i);
}
}
if(!iFound)
{
MessageBox(hwnd,TEXT("对不起,没有找到!"),TEXT("提示"),MB_OK|MB_ICONWARNING);
break;
}
}
break;
case IDC_DEL:
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
int i = ComboBox_GetCurSel(hwndCombo1);
//当没有选择项时返回值是 CB_ERR 。
if(CB_ERR == i)
{
MessageBox(hwnd,TEXT("删除完毕,无可选择项!"),TEXT("提示"),MB_OK|MB_ICONERROR);
return;
}
//删完后,还存有最后一次的选项在编辑框中,这牵涉到空键刷新。先不在乎。
ComboBox_DeleteString(hwndCombo1,i);
}
break;
case IDC_EXIT:
{
exit(1);
}
break;
default:
break;
}
}
16.
取系统时间的方法:
void CALLBACK MyTimerProj(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
{
SYSTEMTIME stLocal; //定义一个SYSTEMTIME类型的时间结构体
TCHAR str[256];
GetLocalTime(&stLocal); //获取当前时间的函数GetLocalTime 其参数是一个时间结构体指针。函数将当前时间保存到结构体&stLocal中,
wsprintf(str,"%i年%i月%i日 %i:%i:%i",stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond);
{
SYSTEMTIME stLocal; //定义一个SYSTEMTIME类型的时间结构体
TCHAR str[256];
GetLocalTime(&stLocal); //获取当前时间的函数GetLocalTime 其参数是一个时间结构体指针。函数将当前时间保存到结构体&stLocal中,
wsprintf(str,"%i年%i月%i日 %i:%i:%i",stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond);
//将时间结构体中的数据打印到 字符串str中。。。
SetDlgItemText(hwnd,IDC_EDIT1,str); //写到编辑框中。。。
// MessageBox(hwnd,TEXT("我以为\n只要很认真的爱\n就能打动一个人\n却原来\n打动的只是我自己\n.... "),TEXT("...爱情..."),MB_OK);
SetDlgItemText(hwnd,IDC_EDIT1,str); //写到编辑框中。。。
// MessageBox(hwnd,TEXT("我以为\n只要很认真的爱\n就能打动一个人\n却原来\n打动的只是我自己\n.... "),TEXT("...爱情..."),MB_OK);
SendMessage(hwnd,WM_SYSCOMMAND,SC_MONITORPOWER,2);
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SetTimer(hwnd,0,1000,MyTimerProj);
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SetTimer(hwnd,0,1000,MyTimerProj);
//注意各参数的意义。。。其中1000是执行的时间间隔是1000毫秒,既是1秒。。。
//记住这个函数的参量 void CALLBACK MyTimerProj(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
//记住这个函数的参量 void CALLBACK MyTimerProj(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
return TRUE;
}
}
17.
复选按钮是否选中
switch(id)
{
case IDC_OK:
{
HWND hwndCheck1 = GetDlgItem(hwnd,IDC_CHECK1);
int checkState = Button_GetCheck(hwndCheck1);
{
case IDC_OK:
{
HWND hwndCheck1 = GetDlgItem(hwnd,IDC_CHECK1);
int checkState = Button_GetCheck(hwndCheck1);
//checkState有三种情况,但常用的有
BST_CHECKED和BST_UNCHECKED两种,所以不能用else。
if(BST_CHECKED == checkState)
{
MessageBox(hwnd,TEXT("选中"),TEXT(""),MB_OK);
}
if(BST_UNCHECKED == checkState)
{
MessageBox(hwnd,TEXT("没选中"),TEXT(""),MB_OK);
}
}
break;
case IDC_BUTTON1:
{
HWND hwndCheck1 = GetDlgItem(hwnd,IDC_CHECK1);
int checkState = Button_GetCheck(hwndCheck1);
if(BST_CHECKED == checkState)
{
Button_SetCheck(hwndCheck1,BST_UNCHECKED);//设置选择的函数:Button_SetCheck(句柄,是否选中)。。。
}
if(BST_UNCHECKED == checkState)
{
Button_SetCheck(hwndCheck1,BST_CHECKED);
}
}
break;
default:
break;
}
if(BST_CHECKED == checkState)
{
MessageBox(hwnd,TEXT("选中"),TEXT(""),MB_OK);
}
if(BST_UNCHECKED == checkState)
{
MessageBox(hwnd,TEXT("没选中"),TEXT(""),MB_OK);
}
}
break;
case IDC_BUTTON1:
{
HWND hwndCheck1 = GetDlgItem(hwnd,IDC_CHECK1);
int checkState = Button_GetCheck(hwndCheck1);
if(BST_CHECKED == checkState)
{
Button_SetCheck(hwndCheck1,BST_UNCHECKED);//设置选择的函数:Button_SetCheck(句柄,是否选中)。。。
}
if(BST_UNCHECKED == checkState)
{
Button_SetCheck(hwndCheck1,BST_CHECKED);
}
}
break;
default:
break;
}
18.
记事本。。。
case ID_MENUITEMOPEN:
{
FILE *fp = fopen("c:/1.txt","r"); //打开文件
char str[256];
fgets(str,sizeof(str),fp); //读取文件并存放到字符串str中
fclose(fp); // 关闭文件。
SetDlgItemText(hwnd,IDC_RICHEDIT1,str);
}
break;
{
FILE *fp = fopen("c:/1.txt","r"); //打开文件
char str[256];
fgets(str,sizeof(str),fp); //读取文件并存放到字符串str中
fclose(fp); // 关闭文件。
SetDlgItemText(hwnd,IDC_RICHEDIT1,str);
}
break;
richedit的使用要在Main.cpp中加上一句:LoadLibrary(“riched32.dll”)红线处;需放在DialogBox之前,因为它被调用对话框就已经显示出来了。
具体如图:
19.
打开文件选择框。。。
记得前面加#include<commdlg.h>的头文件。
case IDC_OK:
{
//是一个结构体
OPENFILENAME ofn;
//这定义的是一个文件名
char szFile[MAX_PATH];
//ZeroMemory就是memset的宏定义确切的说是特殊情况(可以右键看它的定义)是给结构体清零的,属于c语言知识。
//memset是给某段内存置为某一个值不一定是0.但是zeromemory是置为0.
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
//ofn.lpstrFile 使结构体的文件指向szFile。
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
//ofn.lpstrFilter为文件编辑器设置过滤器,就是文件格式选择那个小框框。
// \0 是字符串结束符 。 *.* 是文件名.后缀 意思是“所有文件”。
ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0c++\0*.cpp\0");
//默认选择过滤器的序号为 1 。
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
//为什么后来加上这句就阻止继续操作前一个窗口了啊。是不是前面的都是指针 句。
ofn.hwndOwner = hwnd;
//在ofn.Flags中加一句‘ |OFN_ALLOWMULTISELECT ’可以使一次选择多个文件。
ofn.Flags = OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
{
//是一个结构体
OPENFILENAME ofn;
//这定义的是一个文件名
char szFile[MAX_PATH];
//ZeroMemory就是memset的宏定义确切的说是特殊情况(可以右键看它的定义)是给结构体清零的,属于c语言知识。
//memset是给某段内存置为某一个值不一定是0.但是zeromemory是置为0.
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
//ofn.lpstrFile 使结构体的文件指向szFile。
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
//ofn.lpstrFilter为文件编辑器设置过滤器,就是文件格式选择那个小框框。
// \0 是字符串结束符 。 *.* 是文件名.后缀 意思是“所有文件”。
ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0c++\0*.cpp\0");
//默认选择过滤器的序号为 1 。
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
//为什么后来加上这句就阻止继续操作前一个窗口了啊。是不是前面的都是指针 句。
ofn.hwndOwner = hwnd;
//在ofn.Flags中加一句‘ |OFN_ALLOWMULTISELECT ’可以使一次选择多个文件。
ofn.Flags = OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
//把文件路径在编辑框中显现出来;
SetDlgItemText(hDlg,IDC_EDIT,szFile);
//读取文件内容
if(GetOpenFileName(&ofn))
{
//MessageBox(NULL,szFile,"",MB_OK);
FILE *fp = fopen(szFile,"r");
char str[256];
if(fgets)
fgets(str,sizeof(str),fp);
fclose(fp);
SetDlgItemText(hwnd,IDC_EDIT1,str);
}
}
break;
default:
break;
if(GetOpenFileName(&ofn))
{
//MessageBox(NULL,szFile,"",MB_OK);
FILE *fp = fopen(szFile,"r");
char str[256];
if(fgets)
fgets(str,sizeof(str),fp);
fclose(fp);
SetDlgItemText(hwnd,IDC_EDIT1,str);
}
}
break;
default:
break;
补充:1.学习怎么使用GetSaveFileName这个函数。 2.怎么读取全文件内容 。 3。怎么读取多文件内容。