C++ MFC各控件代码练习例子
MFC应用程序编写实例—完整版(原创)

MFC应⽤程序编写实例—完整版(原创)前段时间,将近花了⼀周⾄两周上班和上班后的闲余时间,做了⼀个⽤于调试和测试⼯作项⽬的应⽤软件,下⾯将实现软件的重要步骤及主要功能讲解⼀遍,⽅便⽇后查阅。
程序开始后,提⽰登录框,输⼊⽤户名,密码后,登录进去主窗体,效果图如下:下⾯将主要实现的功能函数要点进⾏描述,具体实现如下:⼀、设置主窗体⼤⼩1、进⼊⼯程窗体初始化函数,OnInitDialog()中,在CDialog::OnInitDialog() 下⾯添加函数语句如下:SetWindowPos(NULL,0,0,600,400,SWP_NOMOVE); ////设置主窗体⼤⼩,长为600,⾼为400⼆、为主窗体添加背景图⽚:1、⾸先,在⼯程头⽂件中,声明画刷变量如:CBrush m_brBk;2、在⼯程OnInitDialog()中,添加如下代码:CBitmap bmp1;bmp1.LoadBitmap(IDB_BITMAP1);m_brBk.CreatePatternBrush(&bmp1);3、添加消息函数OnCtlColor,代码如下所⽰:HBRUSH CDebugDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// if (pWnd == this)//// {//// return m_brBk;//// }return(HBRUSH) m_brBk;}三、调⽤模态对话框和⾮模态对话框(以菜单⼊⼝为例)如菜单所属的主窗体类名为CDebugDlg,调⽤对话框的类名为CPing实现调⽤⾮模态对话框⽅法:选择调⽤菜单⼊⼝后,点击添加消息处理函数,在函数体内添中如下代码:CPing *dlg = new CPing();dlg->Create(IDD_DIALOG_PING); //创建⼀个⾮模态对话框dlg->ShowWindow(SW_SHOW); //显⽰⾮模态对话框 实现调⽤模态对话框⽅法:Cping dlg;dlg.DoModal();四、调⽤外部应⽤程序⽅法:1、调⽤外部应⽤程序可采⽤WinExec函数例如,调⽤⼀个Tcpview.exe外部程序,可在消息处理函数中添加如下代码:WinExec(".\\dll\\TCPview\\Tcpview.exe",SW_SHOW); // 其中.代表当前路径,此时需要⽤到\\来区分路径。
MFC编程示例参考

1、变更控件变量
设置编辑框内 容的长度
49
头文件中的生成代码
// Dialog Data //{{AFX_DATA(CStep1Dlg) enum { IDD = IDD_STEP1_DIALOG }; CString m_edit; //}}AFX_DATA
50
构造函数中的生成代码
CStep1Dlg::CStep1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CStep1Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CStep1Dlg) m_edit = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
}
43
运行
有文字,变灰
44
3、编辑框的控制
对话框数据交换机制 DDX(Dialog Data exchange),用于控 件初始化和获取用户输入的数据。 对话框数据验证DDV(Dialog data validation),用于对话框中输入数据的合 法性检验。
用户只关心编辑框的内容,不 关心编辑框的属性,可以使用内容 相关变量操作编辑框。
所有和控件映射的变 量均在此
41
数据交换函数中的生成代码
系统自动添加代码如下
void CStep1Dlg::DoDataExchange(CDataExchange* 映射变量 pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CStep1Dlg) DDX_Control(pDX, IDC_EDIT1, m_edit); 控件ID //}}AFX_DATA_MAP }
VC++MFC编程3

return (int)sqrt(dx*dx+dy*dy); } 第八步:编译运行程序员 函数原型: public: void DrawCircle(CDC* pDC, CPoint cenp, CPoint ardp); int ComputeRadius(CPoint cenp,CPoint ardp); 具体操作方法:用鼠标右键单击视图类, 选择“ 选择“Add Member Function…”,如下图所 Function…”,如下图所 示。分别添加上述两个成员函数,分别用 于画圆和计算圆的半径。
第一步:建立MouseSpring工程文件; 第一步:建立MouseSpring工程文件; 第二步:向视图类中添加自定义的成员变量 用鼠标右键单击视图类,选择“ 用鼠标右键单击视图类,选择“Add Member Variable…”, Variable…”,添加下面三个成员变量。 proctected : CPoint m_bO; // 圆心 CPoint m_bR; //圆上的点 //圆上的点 int m_ist; //圆心与圆周上点的区别,m_ist=0, //圆心与圆周上点的区别,m_ist=0, 表示鼠标左击点为圆心, //m_ist=1,表示鼠标左击点为圆周上的 //m_ist=1,表示鼠标左击点为圆周上的 点 操作方法如下图所示,分别添加上述三个成员变量。
第五步:在视图类的OnDraw()函数中加入下列代码,实 第五步:在视图类的OnDraw()函数中加入下列代码,实 现视图绘图。 void CMouseSpringView::OnDraw(CDC* pDC) { CMouseSpringDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDCpDC->SelectStockObject(NULL_BRUSH);//选择预定义对象 DrawCircle(pDC,m_bO,m_bR); //调用自定义的成员函数画圆 //调用自定义的成员函数画圆 }
mfc编程cstringlist实例

mfc编程cstringlist实例MFC编程中的CStringList实例在MFC(Microsoft Foundation Classes)编程中,CStringList是一个非常有用的类,用于管理字符串的链表。
它提供了许多方便的功能,使得操作字符串链表变得更加简单和高效。
在本文中,我们将逐步回答关于CStringList的问题,并给出一些实例代码来帮助读者更好地理解和使用这个类。
问题1:什么是CStringList?CStringList是MFC框架中的一个类,它是一个模板类,用于处理字符串的链表。
它使用的是C++的模板机制,可以在链表中存储任意类型的数据。
但在这里,我们主要关注它在处理字符串方面的应用。
问题2:如何创建一个CStringList对象?要创建一个CStringList对象,只需简单地声明一个新的实例即可:CStringList strList;这将创建一个名为strList的CStringList对象。
您可以根据需要创建多个实例,并在程序的任何地方使用它们。
问题3:如何向CStringList中添加字符串?要向CStringList中添加字符串,可以使用AddHead()或AddTail()成员函数。
AddHead()函数将字符串添加到链表的头部,而AddTail()函数则将字符串添加到链表的尾部。
下面是一些示例代码:CStringList strList;strList.AddHead("Hello");strList.AddTail("World");这将创建一个名为strList的CStringList对象,并向其头部添加字符串"Hello",在其尾部添加字符串"World"。
问题4:如何遍历并访问CStringList中的字符串?要遍历并访问CStringList中的字符串,可以使用CstringList的一个迭代器。
VC中MFC应用的若干个小例子2

int Str2Hex(CString str, UINT32* data)实现的功能是将str(16进制)->数字。
比如11转换成17。
21转换成33。
Visual C++通用范例开发金典\Visual C++通用范例开发金典ch011. IDC_STATIC1:void CCStatic2Dlg::OnStatic1(){// TODO: Add your control notification handler code hereCString str;GetDlgItem(IDC_STATIC1)->GetWindowText(str);if("Hello,World!"==str){GetDlgItem(IDC_STATIC1)->SetWindowText("Visual C++!");}if("Visual C++!"==str){GetDlgItem(IDC_STATIC1)->SetWindowText("I like C++");}if("I like C++"==str){GetDlgItem(IDC_STATIC1)->SetWindowText("Hello,World!");}}2.BOOL CRadio_Button1Dlg::OnInitDialog()中的代码:CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO1);3.BOOL CButton3Dlg::OnInitDialog()中的代码:CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO3);CButton *ptn=(CButton *)GetDlgItem(IDC_CHECK1);ptn->SetCheck(1);在void CButton3Dlg::OnOK(){// TODO: Add extra validation hereCString str,strCtrl;int i;str="您的年级:";UINT nID1=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);GetDlgItemText(nID1,strCtrl);str=str+strCtrl;str=str+"\n你最喜欢的课程:";UINT nID2[4]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4};CButton *ptn;for(i=0;i<4;i++){ptn=(CButton *)GetDlgItem(nID2[i]);if(1==ptn->GetCheck()){ptn->GetWindowText(strCtrl);str=str+strCtrl;str=str+" ";}}MessageBox(str);// CDialog::OnOK();}4.void CCstatic1Dlg::OnOK(){if (static1.m_hWnd){static1.DestroyWindow();}else{static1.Create("生成的新的静态文本框",WS_CHILD|WS_VISIBLE,CRect(0,0,200,30),this,11);}// CDialog::OnOK();}5.void CCShrinkView::OnShrink(){// TODO: Add your command handler code hereCShrink_Dlg* pt1=new CShrink_Dlg;pt1->DoModal();}void CShrink_Dlg::OnButton1(){// TODO: Add your control notification handler code hereCString str;GetDlgItemText(IDC_BUTTON1,str);if("收缩<<"==str)SetDlgItemText(IDC_BUTTON1,"扩展>>");elseSetDlgItemText(IDC_BUTTON1,"收缩<<");static CRect rectLarge;static CRect rectSmall;if(rectLarge.IsRectNull()){CRect temp;GetWindowRect(&rectLarge);GetDlgItem(IDC_SHRINK)->GetWindowRect(&temp);rectSmall.left=rectLarge.left;rectSmall.top=rectLarge.top;rectSmall.right=rectLarge.right;rectSmall.bottom=temp.top;}if(str=="收缩<<"){SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),SWP_NOMOVE|SWP_NO ZORDER);}else{SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE|SWP_NO ZORDER);}}6.BOOL CCEdit_6Dlg::OnInitDialog()中的:CTime time;time=CTime::GetCurrentTime();m_time=time.Format("%x--%X");UpdateData(FALSE);void CCEdit_6Dlg::OnTimer(UINT nIDEvent){CTime time;time=CTime::GetCurrentTime();m_time=time.Format("%Y-%m-%d %H:%M:%S");UpdateData(FALSE);CDialog::OnTimer(nIDEvent);}7.只有一个例子,其它的仿照void CCEdit4Dlg::OnGreenRadio3(){colour = RGB(0,255,0);m_edit.SetFocus();}8.class CColorEdit : public CEdit自己新创了一个类HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor){// TODO: Change any attributes of the DC hereCDC* dc = GetDC(); //获取画布对象CRect rect;GetClientRect(rect); //获取客户区域rect.InflateRect(3,3,3,3);//将客户区域增大3个像素CBrush brush (m_color);//创建画刷dc->FrameRect(rect,&brush);//绘制边框// TODO: Return a non-NULL brush if the parent's handler should not be called return NULL;}void CColorEdit::SetColorEdit(COLORREF color){m_color=color;}//m_color是CColorEdit的一个成员函数BOOL CCEdit_5Dlg::OnInitDialog()中的m_edit1.SetColorEdit(RGB(255,0,0));m_edit2.SetColorEdit(RGB(0,0,255));9.void CCEdit_1Dlg::OnButton1(){// TODO: Add your control notification handler code hereCString str;UpdateData(TRUE);if((strcmp(m_name,"张三")==0)&&(strcmp(m_password,"1113")==0)) str="密码正确,登陆成功!";else if((strcmp(m_name,"")==0)||(strcmp(m_password,"")==0)) str="请输入用户名或密码:";elsestr="用户名或密码错误:";MessageBox(str);}10.void CCEdit_2Dlg::OnChangeEdit1(){UpdateData(TRUE);// m_write="d\nyyy";m_read=m_write;UpdateData(FALSE);}11.CSpinButtonCtrl m_spinage;BOOL CSpinButtonDlg::OnInitDialog()中的:m_spinage.SetRange(1,100);m_spinage.SetBase( 0 );void CSpinButtonDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) {NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;// TODO: Add your control notification handler code hereUpdateData(TRUE);m_age=m_age+(float)pNMUpDown->iDelta;if(m_age<0) m_age=0;if(m_age>10) m_age=10;UpdateData(FALSE);*pResult = 0;}void CSpinButtonDlg::OnOK(){// TODO: Add extra validation hereUpdateData(TRUE);CString str;char *temp=new char;itoa(m_age,temp,10);str="结果显示:\n姓名:";str+=m_name;str+="\n年龄:";str+=temp;str+="\n年级:";str+=m_class;str+="\n电话:";str+=m_phone;MessageBox(str);//CDialog::OnOK(); }。
MFC学习小范例(按钮控件的使用)

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对பைடு நூலகம்线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
VC MFC 编程实例17
宏 ON_MESSAGE(WM_XXX,Handler) 例如: O N _ M E S S A G E ( W M _ C R E AT E , M y Handler) ON_MESSAGE(WM_PAINT,MyHan dler) ON_WM_XXX 例如: ON_WM_CREATE() ON_WM_DESTROY() 可每一个标准窗口消息都有属于它 自己的宏,它没有参数,并且它的 名字和使用基于它的 WM_XXX设计 OnXxx(message specific)(因为参数是 特定的消息,最好让 Class Wi z a r d添 加这些宏到消息映像中 ) 说 明 消息处理函数调用参数 可 L R E S U LT Handler (WP A R A M wParam,LPARAM lParam) 可
本文由sdhexu贡献
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
下载
附录B 消息,控件通知和消息映像宏
B.1 一些通用窗口消息
WM命令 WM_CREATE 描 述 参数说明 发lParam指向CREATESTRUCT,它包含 C r e a t e Window ( ) 参数;初始化成功时 应返回0 WM_INITDIALOG 发发送此消息,告诉对话框初始化自己; 在WM_CREATE消息之后以及在所有对 话框中的控件被创建后发送 WM_GETMINMAXINFO WM_SIZE 发发送此消息,告诉窗口即将被重调到窗 口必须保持的最大或最小尺寸 发发送此消息,告诉一个窗口已被重调大小 发wParam是接收初始焦点的控件窗口的 句柄,lParam是被CreateDialogParam ( ) 传递的可选参数 发lParam指向一个MINMAXINFO结构, 它允许窗口设置它的最小和最大尺寸 发wParam是一个标志,用以区分窗口被 最大化,最小化还是只是被重调大小. lParam告诉新窗口的大小 WM_PAINT WM_DESTROY WM_NCCREATE WM_NCDESTROY WM_NCPAINT WM_ERASEBKGND WM_SHOWWINDOW WM_ENABLE WM_INITMENUPOPUP 发发送此消息,告诉窗口绘制它的客户区 发发送此消息,告诉一个窗口重新分配全 局堆上的任何内容 发发送此消息,告诉一个窗口正初始化非 客户区 发发送此消息,告诉一个窗口非客户区已 被销毁 发发送此消息,告诉一个窗口绘制它的非 客户区 发发送此消息,告诉一个窗口擦除背景 发发送此消息,告诉窗口显示或隐藏自己 发发送此消息,告诉一个窗口启用或禁用 自己 发发送此消息,告诉窗口它的系统菜单或 主菜单将被打开 WM_HELP 发发送此消息, 告诉一个窗口F1键已被按下 发wParam拥有菜单对象的句柄,lParam的 低位字表示子菜单位置,如果 lParam的 高位字非0,则系统菜单将打开 发lParam包含一个HELPINFO结构的指针, 结构包含处理上下文相关的帮助所需要 的信息 WM_MOUSEMOVE 发当鼠标移到它的客户区时被寄送到一个 窗口 WM_LBUTTONDOWN WM_LBUTTONUP 发鼠标的左键在客户区被按下时,被寄送 到该窗口 发当鼠标左键在窗口的客户区被松开时, 被寄送到该窗口 发与WM_MOUSEMOVE相同 发wParam指示是否有键盘的Shift-Ctrl-Alt 键被按下, l P a r a m指示相对于客户区的 新的鼠标光标位置 发与WM_MOUSEMOVE相同 发w P a r a m拥有绘制区域的句柄,区域 在第4章中描述 发wParam指定进行擦除的设备环境(一个 绘制的和被填充的矩形 ) 发如果wParam非0,则窗口被显示 发如果wParam非0,则窗口已被启用 发l P a r a m指向 W M _ C R E AT E使用的相 同的CREATESTRUCT结构 发wParam和lParam未被使用 发wParam是进行绘制的设备环境 发wParam和lParam未被使用
MFC实例
MFC实例教程何礼富(安徽理工大学)实例1 最简单的对话框程序实例2 鼠标测试程序实例3 点鼠标游戏实例4 为程序添加图标1.新建一个MFC AppWizard(exe)工程,工程名为IconTest2.在MFC AppWizard的Step 1步骤,选择“Dialog based”,其余的步骤全部选择默认。
3.切换到ResourceView视图,右键点击Icon,选择“import”,导入三个图标(.ico)文件,如下图:4.找到CIconTestDlg类的构造函数,找到下面的语句:m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);将其修改为:m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);5.运行程序,可以看到程序的图标已被修改成我们自己定义的图标。
6.继续回到Resource View视图,打开IDD_ICONTEST_DIALOG的设计界面,删除之前生成的文字框和按钮,重新添加一个文字框和一个按钮,如下图:7.将按钮控件的Style中的Icon选项选中8.找到CIconTestDlg类的OnInitDialog()函数,在其中添加下图中的语句:9.执行程序,图标就被显示在界面上了。
实例5 三国游戏之选择武将1.建立一个基于MFC对话框的项目“ComposedDialog”。
2.切换到Resource View视图,在左边的资源树上点右键,选择“insert”,弹出“Insert Resource”对话框,选择“Bitmap”,点“import”,导入事先准备好的位图文件。
3.设计界面:4.右键点性别组合框,选择“property”,添加以下数据:5.打开Class Wizard,添加以下变量:。
mfc学习小范例(按钮控件的利用)
咱们通常知道按钮控件是分两种的,一种是多选按钮(即复选按钮),另一种是单选按钮,要实现这些并非难,你只需要知道相应控件的利用规则和C++的基础即可。
请看实现程序的截图年龄选项固然是单选的,是圆形按钮,而爱好可以有多个,所以是复选按钮,在MFC中的控件格式是方块,此程序实现的功能是选择相应的年龄和爱好后点击肯定按钮即可出现所选选项,如图所示:我选择的年龄是15到30岁之间,爱好是聊天交友和查阅资料,此时我点击肯定按钮后出现如下图示:实现源代码如下:按钮空间的利用.cpppp : 概念应用程序的类行为。
"#include "按钮控件的利用"#ifdef _DEBUG#define new DEBUG_NEW#endif"#include "按钮控件的利用"#ifdef _DEBUG#define new DEBUG_NEW#endif.”菜单项添加到系统菜单中。
pppp : 概念应用程序的类行为。
"#include "吹泡泡"#ifdef _DEBUG#define new DEBUG_NEW#endif"#include "吹泡泡"#ifdef _DEBUG#define new DEBUG_NEW#endifCRect m_rectBubble[MAX_BUBBLE]; COLORREF m_colorBubble[MAX_BUBBLE]; int m_nBubbleCount;CRect m_rectClient;COLORREF m_colorCurrent;.”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必需在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) ==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL){CString strAboutMenu;(IDS_ABOUTBOX);if (!()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。
MFC编程例子
例程1. MFChello步骤1.选择新建-项目,打开后出现如果1所示对话框。
选择VC++中的智能设备,在右边选择MFC 智能设备应用程序。
在下方的名称中输入MFChello,点击确定。
步骤2.步骤3.步骤4.步骤5.步骤6在BOOL CMFChelloApp::InitInstance()添加如下代码AfxEnableControlContainer(); //调用此函数的目的是为了使程序支持包含OLE控件MessageBox(NULL,_T("一个简单的MFC程序"),_T("你好"),MB_OK); //谈出对话框例程2.鼠标测试程序同例程1一样,建立一个基于对话框的MouseTest程序。
在右边的对话框编辑器中选择Static Text,添加到对话框中一个静态文本,然后更改右下角的静态文本的属性,Caption改为提示:点一下鼠标右键或左键,ID改为IDC_STATIC点击对话框,在右下角点击消息按钮,出现下图。
找到WM_LBUTTONDOWN消息,添加OnLButtonDown函数。
在函数中添加代码如下MessageBox(NULL,_T("你点的是左键"),_T("The first Dialog"),MB_OK);同样操作在WM_RBUTTONDOWN消息,添加OnRButtonDown函数。
在函数中添加代码如下MessageBox(NULL,_T("你点的是右键"),_T("The first Dialog"),MB_OK);进行仿真即可。
例程3.添加图标创建一个基于对话框的IconTest程序。
切换到资源视图。
右键点击Icon,选择添加资源,弹出下图。
选择导入,导入一个图标文件(.ico)文件,如下图。
点击CIconTestDlg类,找到CIconTestDlg函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void CMy122Dlg::OnButton1open() {m_OPEN.EnableWindow(false ); //EnableWindow()方法可以使按钮失效MessageBox("已打开");m_CLOSE.EnableWindow(true );}void CComboboxDlg::Onmony(){UpdateData(TRUE);CString str,strmoy;strmoy.Format("%d",m_money);str="你确定要将";str+=strmoy;str+="元打入对方账户?";if (IDOK==MessageBox(str,"提示",MB_ICONQUESTION|MB_OKCANCEL)){MessageBox("付款成功","提示",MB_ICONASTERISK);}}控制显示的文本利用成员函数SetWindowText/GetWindowText 用于设置/得到当前显示的文本。
通过GetLimitText/SetLimitText 可以得到/设置在输入框中输入的字符数量。
输入框几种常用的消息映射宏:ON_EN_CHANGE 输入框中文字更新后产生ON_EN_ERRSPACE 输入框无法分配内存时产生ON_EN_KILLFOCUS / ON_EN_SETFOCUS 在输入框失去/得到输入焦点时产生在创建滚动条后需要调用void SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE )设置滚动范围, int GetScrollPos( )/int SetScrollPos( )用来得到和设置当前滚动条的位置。
void ShowScrollBar( BOOL bShow = TRUE );用来显示/隐藏滚动条。
BOOL EnableScrollBar( UINT nArrowFlags = ESB_ENABLE_BOTH )用来设置滚动条上箭头是否为允许状态。
nArrowFlags 可取以下值:ESB_ENABLE_BOTH 两个箭头都为允许状态ES_DISABLE_LTUP 上/左箭头为禁止状态MessageBox("这个是自定义的消息!!!" ,"自定义消息对话框!!!",MB_ICONINFORMATION); MB_ABORTRETRYIGNORE 显示终止重试或忽然按钮 MB_OK 显示确定按钮 MB_RETRYCANCEL 显示确定或取消按钮 MB_YESNO 显示重试或取消按钮 MB_YESNOCANCEL 显示是或否按钮 MB_ICONQUESTION 带问号图标 MB_ICONHAND 、MB_ICONSTOP 、MB_ICONERROR 三种都是带叉号图标 MB_ICONEXCLAMA TION 、MB_ICONW ARNING 两种都是带感叹号图标 MB_ICONASTERISK MB_ICONINFORMA TION 带信息号图标 AfxMessageBox()函数缺点就无法设置消息对话框的标,提示消息框的标题与工程名称相同, 优点:就是在动态链接库工程或其它工程中,可以直接用它来显示消息提示对话框。
MessageBox()函数必须用于一个窗口对象,没有窗口对象,就无法调用MessageBox()函数ESB_DISABLE_BOTH 两个箭头都为禁止状态SB_TOP/SB_BOTTOM 已滚动到顶/底部SB_LINEUP/SB_LINEDOWN 向上/下滚动一行SB_PAGEDOWN/SB_PAGEUP 向上/下滚动一页SB_THUMBPOSITION/SB_THUMBTRACK 滚动条拖动到某一位置,参数nPos指明当前位置(参数nPos在其它的情况下是无效的)SB_ENDSCROLL 滚动条拖动完成(用户松开鼠标)注意:如果出现以上功能不好使的情况,可以关闭当前的工程,然后在工程目录下删除扩展名为“.ncb”的文件,然后重新打开工程,Visual C++会重建一个“.ncb”文件,此时完全取词功能将恢复正常。
void C_bj::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){// TODO: Add your message handler code here and/or call defaultvoid C_bj::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){SCROLLINFO scrollinfo;SetScrollRange (SB_VERT, 0, 850, TRUE);//这个就是设置你的滚动条的范围GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);switch (nSBCode){case SB_BOTTOM:ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax));scrollinfo.nPos = scrollinfo.nMax;SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);break;case SB_TOP:ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin));scrollinfo.nPos = scrollinfo.nMin;SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);break;case SB_LINEUP:scrollinfo.nPos -= 20;if (scrollinfo.nPos<scrollinfo.nMin){scrollinfo.nPos = scrollinfo.nMin;break;}SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);ScrollWindow(0,20);break;case SB_LINEDOWN:scrollinfo.nPos += 20;if (scrollinfo.nPos>scrollinfo.nMax){scrollinfo.nPos = scrollinfo.nMax;break;}ScrollWindow(0,-20);break;case SB_PAGEUP:scrollinfo.nPos -= 20;if (scrollinfo.nPos<scrollinfo.nMin){scrollinfo.nPos = scrollinfo.nMin;break;}SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);ScrollWindow(0,20);break;case SB_PAGEDOWN:scrollinfo.nPos += 20;if (scrollinfo.nPos>scrollinfo.nMax){scrollinfo.nPos = scrollinfo.nMax;break;}SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);ScrollWindow(0,-20);break;case SB_ENDSCROLL:// MessageBox("SB_ENDSCROLL");break;case SB_THUMBPOSITION:// ScrollWindow(0,(scrollinfo.nPos-nPos));// scrollinfo.nPos = nPos;// SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);break;case SB_THUMBTRACK:ScrollWindow(0,(scrollinfo.nPos-nPos));scrollinfo.nPos = nPos;SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);break;}CDialog::OnVScroll(nSBCode, nPos, pScrollBar);}void CTestScrollDlg::OnSize(UINT nType, int cx, int cy){SCROLLINFO scrollinfo;SetScrollRange (SB_VERT, 0, 600, TRUE);//这个就是设置你的滚动条的范围GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);scrollinfo.nPage=400;//页的大小,SetScrollInfo(SB_VERT,&scrollinfo,SIF_PAGE);CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code here}void CFirstProjectDlg::OnOK(){if (!IsWindow(m_Book.m_hWnd)) //是否关联了对话框{m_Book.Create(IDD_BOOKDLG, NULL); //创建对话框}m_Book.ShowWindow(SW_SHOW); //显示对话框}void CMy122Dlg::OnButton2close(){m_CLOSE.EnableWindow(false);MessageBox("已关闭");m_OPEN.EnableWindow(true);}void CFirstProjectDlg::OnOK(){if (!IsWindow(m_Book.m_hWnd)) //是否关联了对话框{m_Book.Create(IDD_BOOKDLG, NULL); //创建对话框}m_Book.ShowWindow(SW_SHOW); //显示对话框}1.自定义一个消息;------>2.申明一个涵数---------------->3.把函数设成消息响应函数--------------->4.发送消息处理函数#define MESSAGE1 WM_USER+1 //windows定义好从下一个开始如有多个+1或+2 前面都是大写。