SpinControl控件与动态画图
来源:互联网 发布:淘宝二手市场网 编辑:程序博客网 时间:2024/05/21 15:45
新建一个mfc对话框
删除TODO静态框,确定,取消按钮
添加一个静态编辑框ID为IDC_EDIT1,一个SpinControl控件,ID为IDC_SPIN5,一个按钮
在// CfeedbinDlg.h中
// CfeedbinDlg 对话框class CfeedbinDlg : public CDialogEx{// 构造public:CfeedbinDlg(CWnd* pParent = NULL);// 标准构造函数// 对话框数据enum { IDD = IDD_FEEDBIN_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持// 实现protected:HICON m_hIcon;CString *text;//4.料仓对应的点int m_num;//料仓个数HDC hdc;int baseX,baseY;//料仓输出位置int width;//料仓之间的宽度// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:CEdit m_editNum;CSpinButtonCtrl m_Spin;afx_msg void OnDeltaposSpin5(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnBnClickedButton2();};
void CfeedbinDlg::OnPaint()///比OnInitialDialog()执行要前{////设置对话框大小CRect temprect(0,0,800,650); CWnd::SetWindowPos(NULL,0,0,temprect.Width(),temprect.Height(),SWP_NOZORDER|SWP_NOMOVE);////获得窗口的设备描述表 hdc = ::GetDC(m_hWnd);//创建字体 显示文字HFONT hFont = CreateFont(20,0,0,0,0,0,0,0,GB2312_CHARSET,0,0,0,0,L"微软雅黑"); //1.创建一种字体SelectObject(hdc, hFont);// 2.将字体选入设备环境中SetBkMode(hdc,TRANSPARENT);//3.设置文字背景色为透明 //画线 //移动到线条的起点//分割区域MoveToEx(hdc,0,550,NULL);LineTo(hdc,800,550);MoveToEx(hdc,0,230,NULL);LineTo(hdc,800,230);MoveToEx(hdc,550,0,NULL);LineTo(hdc,550,550);HBRUSH hBrush=CreateSolidBrush(RGB(64, 128, 128));//创建画刷SelectObject(hdc, hBrush);//选用画刷int k=m_num-1; int baseX=580,baseY=520,width=49;//初始化料仓宽度 位置Rectangle(hdc, baseX+80, baseY-(width-4)*6, baseX+100, baseY+10);//画矩形if(m_num>5)width=5*width/m_num;for(int i=1;i<=m_num;i++){Rectangle(hdc, baseX, baseY-10-i*width, baseX+180,baseY-i*width);SetTextColor(hdc,RGB(0,0,0));TextOut(hdc,baseX-21,baseY-15-i*width,text[k],wcslen(text[k]));TextOut(hdc,(baseX+189),baseY-15-i*width,text[k],wcslen(text[k]));k--;} Rectangle(hdc, baseX, baseY, baseX+180, baseY+30);//释放设备描述表 ::ReleaseDC(m_hWnd, hdc);if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}DeleteObject(hBrush);DeleteObject(hFont);DeleteDC(hdc);}
SpinControl控件添加UDN_DELTAPOS事件,
函数体修改为
void CfeedbinDlg::OnDeltaposSpin5(NMHDR *pNMHDR, LRESULT *pResult){LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);// TODO: 在此添加控件通知处理程序代码UpdateData(true); CString str; m_editNum.GetWindowText(str);//获取编辑框的值 int i=_ttoi(str);if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往下的箭头 { if(i-1<1)i=2;if(i>100)i=101;str.Format(_T("%d"), --i);m_editNum.SetWindowText(str);} else if(pNMUpDown->iDelta == 1) // 如果此值为1, 说明点击了Spin的往上的箭头 { if(i+1>100)i=99;if(i<1)i=0;str.Format(_T("%d"), ++i);m_editNum.SetWindowText(str);} UpdateData(false); //获取最新的料仓个数CString bin; m_editNum.GetWindowText(bin);//获取编辑框的值 m_num=_ttoi(bin);//料仓的个数text=new CString[m_num];//4.初始化字符int l=0;for(int i=m_num-1;i>=0;i--){text[i].Format(_T("%d"),l++);}OnBnClickedButton2();*pResult = 0;}最后添加按钮点击事件,函数体如下
void CfeedbinDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码CString str;int k=0;for(int i=m_num-1;i>=0;i--){str.Format(_T("%d"), k++);text[i]=str;}//重绘 刷新料仓RECT rct={555,240,800,550};LPCRECT pcrect=&rct;InvalidateRect(pcrect,true);UpdateWindow();OnPaint();}
运行结果如下
运行程序连接
http://download.csdn.net/detail/zhangxiaoyu_sy/9914621
阅读全文
0 0
- SpinControl控件与动态画图
- SpinControl
- MFC-三个基本控件ProgressControl、ScrollBarControl以及SpinControl
- ZedGraph画图控件
- dotnetCHARTING 画图控件
- vc 画图控件
- vc 画图控件
- scatterGraph控件模拟画图
- View控件之画图
- qt画图控件QCustomPlot
- 动态添加单元格与控件
- XML 与动态添加控件
- iOS画图 在控件中画图
- Silverlight WorkFlow画图--Activity控件
- 微软图表控件MsChart画图
- Android View自定义控件画图
- MFC-SpinControl(数值调节按钮)
- MFC-SpinControl(数值调节按钮)
- Unity调用安卓代码创建按钮
- 跨域访问、同源策略
- alpha、scale、rotate、translate使用xml方式进行配置
- 利用表达式树,计算一个加减乘除(可带括号)的表达式
- 最长递增子序列
- SpinControl控件与动态画图
- UVA 111 最长递增子序列
- TCP、UDP、IP 协议分析
- 线性判别分析简明入门教程
- POJ1239 dp (严格递增子序列)
- java中开辟新线程的两种方法以及区别
- POJ 1141 区间dp
- 英语考试 FZU
- JavaWeb性能优化