不使用MFC创建对话框---简单的计算器
来源:互联网 发布:天津网站建设优化 编辑:程序博客网 时间:2024/05/22 03:21
MFC隐藏了太多的东西,如果不明白内部原理就很难修改其代码,这样程序就会受到MFC框架的限制,灵活性大大降低。我们来看看如何使用纯API(不让VC生成任何现成的代码)创建一个简单的对话框吧。
1.首先使用向导创建一个Win32工程,在向导里选择 “一个空的工程”。这样创建之后就一个源文件也没有了。
2.添加一个叫WinMain的源文件,用来写入口函数WinMain.
3.添加一个对话框资源,如图。
4.在WinMain.cpp里输入如下代码:
#include <windows.h>#include "resource.h"INT_PTR ExitCode;//保存模态对话框的退出代码INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);//窗口过程函//数声明void InitDialog(HWND hwnd);//初始化对话框函数声明void Calculate(const int &type,HWND hwndDlg);//用于四则运算int WINAPI WinMain(HINSTANCE hIns,HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd)//入口函数{ ExitCode=DialogBox(hIns,MAKEINTRESOURCE(IDD_MAIN),NULL,DialogProc); return 0;}INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)//窗口过程函数{ switch(uMsg) { case WM_INITDIALOG://响应窗口被创建的消息// MessageBox(hwndDlg,"Create!","Warming",0); InitDialog(hwndDlg); break; case WM_CLOSE: EndDialog(hwndDlg,ExitCode); break; case WM_COMMAND: if(IDC_CAL==wParam)//计算 按钮被点击时 { HWND hComBox=GetDlgItem(hwndDlg,IDC_WHICH);//获取ComboBox控件句柄 int Sel=SendMessage(hComBox,CB_GETCURSEL,0,0);//得到当前的选择 Calculate(Sel,hwndDlg);//计算结果 } break; default: break; } return FALSE;}void InitDialog(HWND hwnd)//初始化对话框用{ TCHAR szStr1[]="+"; TCHAR szStr2[]="-"; TCHAR szStr3[]="*"; TCHAR szStr4[]="/";// HWND hComBox=GetDlgItem(hwnd,IDC_WHICH); SendMessage(hComBox,CB_INSERTSTRING,-1,(LPARAM)szStr1);//在ComboBox控件中添加项 SendMessage(hComBox,CB_INSERTSTRING,-1,(LPARAM)szStr2); SendMessage(hComBox,CB_INSERTSTRING,-1,(LPARAM)szStr3); SendMessage(hComBox,CB_INSERTSTRING,-1,(LPARAM)szStr4); SendMessage(hComBox,CB_SETCURSEL,0,0);}void Calculate(const int &type,HWND hwndDlg)//计算{ TCHAR szAdd1[40],szAdd2[40],szRes[40]; TCHAR szTemp1[40],szTemp2[40]; int Add1,Add2,Result; GetDlgItemText(hwndDlg,IDC_ADD1,szAdd1,40); GetDlgItemText(hwndDlg,IDC_ADD2,szAdd2,40); Add1=atoi(szAdd1); Add2=atoi(szAdd2); _itoa_s(Add1,szTemp1,10); _itoa_s(Add2,szTemp2,10); if(!strcmp(szTemp1,szAdd1) && !strcmp(szTemp2,szAdd2))//判断输入是否为整数 { switch(type) { case 0: Result=Add1+Add2; _itoa_s(Result,szRes,10); SetDlgItemText(hwndDlg,IDC_RESULT,szRes); break; case 1: Result=Add1-Add2; _itoa_s(Result,szRes,10); SetDlgItemText(hwndDlg,IDC_RESULT,szRes); break; case 2: Result=Add1*Add2; _itoa_s(Result,szRes,10); SetDlgItemText(hwndDlg,IDC_RESULT,szRes); break; case 3: Result=Add1/Add2; _itoa_s(Result,szRes,10); SetDlgItemText(hwndDlg,IDC_RESULT,szRes); break; default: return; break; } return; } else { MessageBox(hwndDlg,"Illegal input!","Error",MB_OK | MB_ICONERROR); return; }}
- 不使用MFC创建对话框---简单的计算器
- 简单的MFC 计算器
- 基于MFC的简单计算器
- VS2012中使用MFC制作简单的计算器
- 不使用对话框资源模版创建对话框
- MFC 对话框的使用
- MFC 静态对话框的创建
- MFC中对话框的创建
- MFC--非模态对话框的创建
- VC/MFC如何使用CreateEx()创建自己的对话框资源
- MFC使用双栈实现简单计算器
- 创建一个简单的计算器
- 一个在MFC下使用的简单等待对话框类
- VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1)
- VS2010 C++ MFC框架学习笔记2 - 创建一个简单的加法计算器(2)
- 不使用资源文件动态创建对话框的做法
- 不使用资源文件动态创建对话框的做法
- mfc基于对话框计算器程序
- 功能超全的在线文件转换网站
- 随记
- easyUI的使用
- 继BAT之后 第四大巨头是谁:京东、360还是小米?
- 智慧城市建设中政府网站群建设起到了积极的作用
- 不使用MFC创建对话框---简单的计算器
- tomcat7 目录结构详细
- php自动读取文件夹下所有图片并分页显示
- C#打造一个开源webgis(一)系统架构
- 网站运营直通车——7天精通SEO
- 解决mysql自动断开连接的问题
- 5 Simple Rules For Building Great Python Packages
- C#中string与String的区别
- window7下安装oracle 10g报错