1、MB_ICONEXCLAMATION 出现感叹号表示警告MB_ICONASTERISK 出现信息提示的感叹号重要:将函数代码换成(加一条竖线)MessageBox(NULL,TEXT(“正文”),TEXT(“标题”),MB_YESNO|MB_ICONQUESTION)就可以既显示图标,有显示yes/no,其他效果类同。效果如下:“|”是位运算中的“或”运算MessageBox的返回值为int,通过MessageBox来判断用户是点了YES还是NO的按钮具体代码如下:int ret=MessageBox (NULL,TEXT(你是傻逼吗?),TEXT(提问), MB_YESNO|MB_ICONQ
2、UESTION) ; if(ret=IDYES) MessageBox(NULL,TEXT(我是傻逼!回复),MB_OK); else MessageBox(NULL,TEXT(滚!你才是傻逼! 不同按钮对应的返回值宏定义如下:IDYES、IDNOIDOK、IDCANCELIDABORT、IDRETRY、IDIGNORE第二课程序debug版本和release版本的区别:Debug版本是用来调试用的,在别人的电脑上若他没装c-free或者vc+,则有可能程序无法运行,此外debug版本的程序运行效率较低最好给别人release版本的程序2.如何生成release版本的exe程序?答:在工程文件
3、上右键-工程设置-选择release-点击应用即可-点击运行就有了这边会有所显示的1、如何开发对话框的程序新建工程,选择对话框程序工具-对话框编辑器(可以操作控件,也就是自己设计对话框)选中控件,在这里修改名称(标题属性)、颜色等属性(在vc+中是双击即可)Cfree中编辑对话框功能有限,可以安装resed资源编辑器进行补充,文件保存在(.rc)格式的文件中解决办法如下:下载完成后将压缩包中的解压到C-Free的安装目录下,如果你没有修改C-Free的安装路径的话,一般是“C:/Program Files/C-Free 4”。解压完毕启动C-Free,点击主菜单的【工具】【工具配置】,在“工具
4、”列表中选中“对话框编辑器”,将“工具”修改为“资源编辑器”,将“程序”修改为“$(CFRoot)/”,将“参数”修改为“$(FileName)”。这表示当通过主菜单启动ResEd以后自动打开当前C-Free中正在编辑的资源文件。修改完成后如下图:点击【确定】按钮。以后就可以通过主菜单的【工具】【资源编辑器】来启动ResEd了,而且如果当前C-Free中有rc、dlg等资源文件被打开的话ResEd还会自动打开此资源文件。2.配置ResEd启动ResEd,点击主菜单【工具】【详细设置】,将“名称输出格式”选择为“C-Defines”,并且选中“保存时自动输出”。然后点击【确定】按钮,这样每次修改
5、资源文件并保存的时候就会自动生成资源ID的定义文件了。注意:要在文件窗口打开resed资源编辑器2、如何在对话框中插入图片(似乎只支持bmp格式的图片)选中图片控件要点击边缘、三、在resed中插入菜单(和操作十分接近)工程-添加菜单首先添加文件菜单,如图进行设置。菜单编辑器中做箭头表示将菜单升级,右箭头表示将菜单降级,属于下一级菜单,右键点击一次表示菜单向下降一级,所以二级菜单只需要点一次,上箭头和下箭头用于移动菜单项的位置。建立三级菜单只要如下图所示:得到下图的效果选中这个对话框,其他什么都不选然后右侧选择menu,就会出现上图的效果另外,在“文件”后面加上“&F”就会出现右图的效果3.不
6、同操作最好都取一个名字在菜单之间设置分隔符(这操作.我也是醉了)在resed中操作时,中文的字体最好别去修改,容易出现乱码(尤其是反复操作时),尽量选择neutral字体第三节一、修改程序图标可以下载使用restorater(资源修改器)来修改图标,用ico格式的图片(回去再看视频)2.在以前编写控制台程序(即黑屏白字程序)的时候,一切代码有先后顺序。但在windows编程中不可以这样。为了解决这个问题,windows引入了消息机制,即把用户的操作抽象成一个个的事件,编写的程序只要响应这些事件就可以了。就是说告诉windows,当事件A发生时,调用我写的相应的代码。类似于“程序中断”的概念,当
7、发生某件事的时候告诉我。3.在工程的文件中,Main_OnCommand函数被Main_Proc函数中的HANDLE_MSG函数调用:HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);这里HANDLE_MSG的意思就是告诉windows当发生WM_COMMAND消息时,请通知Main_OnCommand函数void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); 那么这个id到底指的是什么呢?打开文件就可以看到不同控件的id宏定义。也可以在文件下打开资源编辑器,在里面修改
8、(注意Name和Caption的区别)不同的控件要有一个Name唯一的id,我们只需要知道控件的Name就好。ID值等于多少cfree会自动定义。Windows中控件的名字一般默认以IDC_开头。二、下面来看一段Main_OnCommand函数的代码void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) switch(id) case IDC_OK: MessageBox(hwnd,TEXT(你选择了 OK!111 EndDialog(hwnd, id); break; case IDC_CANCEL:Mess
9、ageBox(hwnd,TEXT(你选择了 Cancel! default:break;当参数是hwnd时,后面的窗口是不能运行的,当参数是NULL时,后面窗口是可以拖动的这是什么意思呢?就是说MessageBox第一个参数意味着要阻止哪个对话框窗口运行,当为NULL时,不阻止任何一个。hwnd表示当前的按钮所在的窗口的句柄(windows传过来的),句柄就是把柄,操作一个东西要先抓住把柄。通过句柄就可以操作这个对象。第一个参数为hwnd就表示挡住当前按钮所在的窗口。三、自己编写计算器程序版本(1)得到控件中用户输入的文本用GetDlgItemText函数来完成:GetDlgItemText(
10、hwnd,IDC_EDITNAME,str,sizeof(str);在资源编辑器中编好窗口之后,要把ID的宏定义全部放到文件中,不要放在文件中。例如编写一个输入名字后点击确定按钮跳出“名字+你好”的窗口的程序: char name256; GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name); /*思考为什么不用strlen,而是用sizeof? */ MessageBox(hwnd,name,name,MB_OK); , a1,a2,a3.);*/*C语言开发windows程序时用wsprintf代替sprintf,解决中文等问题,用法和spr
11、intf没多大区别 wsprintf(msg,%s你好,name); MessageBox(hwnd,msg,name,MB_OK); count_point+=1; else if(!(stri=0&stri9) count_num+=1; if(count_num=0&count_point=1) return TRUE; else return FALSE; TCHAR str1256,str2256,str3256; GetDlgItemText(hwnd,IDC_EDT1,str1,sizeof(str1); GetDlgItemText(hwnd,IDC_EDT2,str2,siz
12、eof(str2); if(str_is_num(str1)=FALSE)这个return使得函数立即返回,不再执行下面的if判断 MessageBox(hwnd,TEXT(第一个输入有问题警告),MB_OK|MB_ICONWARNING); return; if(str_is_num(str2)=FALSE)第二个输入有问题 double a1,a2,a3; a1=atof(str1); a2=atof(str2); HWND hwnd_combo=GetDlgItem(hwnd,IDC_CBO1); int cursel=ComboBox_GetCurSel(hwnd_combo); switch(cursel) case 0:a3=a1+a2; case 1:a3=a1-a2; case 2:a3=a1*a2; case 3: if(a2= MessageBox(hwnd,TEXT(分母不能为0 return; else a3=a1/a2; break;请选择一项运算 return; sprintf(str3,%lf,a3); SetDlgItemText(hwnd,IDC_EDT3,str3); /EndDialog(hwnd, id);You clicked Cancel!lalala(1) 做一个学生管理系统,实现增、删、查(双击)、搜 第五节
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1