#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include "stack1.h"
#define N 20
SqStack1 Sq;
SqStack1 Ss;
SqStack1 Data1;
SqStack1 Data2;
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
InitStack(&Sq);
InitStack(&Ss);
InitStack(&Data1);
InitStack(&Data2);
return TRUE;
}
// id这个参数是windows 送过来的;
// 不同的控件要有不同的id ;
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
//int p;
//Pop(&Sp,&p);
TCHAR str1[256];
TCHAR str2[256];
TCHAR str3[256];
case IDC_BUT1:
{
int q;
Pop(&Sq,&q);
if(q==1)
{
int i=1;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=1;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT2:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=2;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=2;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT3:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=3;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=3;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT4:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=4;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=4;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT5:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=5;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=5;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT6:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=6;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=6;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT7:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=7;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=7;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT8:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=8;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=8;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT9:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=9;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=9;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUT0:
{
int q;
Pop(&Sq,&q);
if(1==q)
{
int i=0;
TCHAR data2[256];
wsprintf(data2,"%i",i);
SetDlgItemTextA(hwnd,IDC_NAME,data2);
q=9;
Push(&Sq,q);
}
else
{
TCHAR data1[256];
GetDlgItemText(hwnd,IDC_NAME,data1,sizeof(data1));
int i=0;
TCHAR data2[256];
wsprintf(data2,"%i",i);
TCHAR data[256];
sprintf(data,"%s%s",data1,data2);
SetDlgItemTextA(hwnd,IDC_NAME,data);
}
}
break;
case IDC_BUTa:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int i1=atoi(str1);
Push(&Data1,i1);
int q=1;
Push(&Sq,q);
int suan=1;
Push(&Ss,suan);
}
break;
case IDC_BUTb:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int i1=atoi(str1);
Push(&Data1,i1);
int q=1;
Push(&Sq,q);
int suan=2;
Push(&Ss,suan);
}
break;
case IDC_BUTc:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int i1=atoi(str1);
Push(&Data1,i1);
int q=1;
Push(&Sq,q);
int suan=3;
Push(&Ss,suan);
}
break;
case IDC_BUTd:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int i1=atoi(str1);
Push(&Data1,i1);
int q=1;
Push(&Sq,q);
int suan=4;
Push(&Ss,suan);
}
break;
/* case IDC_BUTe:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int q=1;
Push(&Sq,q);
int suan=1;
Push(&Ss,suan);
}
break;
case IDC_BUTf:
{
GetDlgItemText(hwnd,IDC_NAME,str1,sizeof(str1));
int q=1;
Push(&Sq,q);
int suan=1;
Push(&Ss,suan);
}
break;*/
case IDC_OK:
{
int suan;
Pop(&Ss,&suan);
switch(suan)
{
case 1:
{
GetDlgItemText(hwnd,IDC_NAME,str2,sizeof(str2));
int i1;
Pop(&Data1,&i1);
int i2=atoi(str2);
int i3=i1+i2;
sprintf(str3,"%i",i3);
SetDlgItemTextA(hwnd,IDC_NAME,str3);
}
break;
case 2:
{
GetDlgItemText(hwnd,IDC_NAME,str2,sizeof(str2));
int i1;
Pop(&Data1,&i1);
int i2=atoi(str2);
int i3=i1-i2;
sprintf(str3,"%i",i3);
SetDlgItemTextA(hwnd,IDC_NAME,str3);
}
break;
case 3:
{
GetDlgItemText(hwnd,IDC_NAME,str2,sizeof(str2));
int i1;
Pop(&Data1,&i1);
int i2=atoi(str2);
int i3=i1*i2;
sprintf(str3,"%i",i3);
SetDlgItemTextA(hwnd,IDC_NAME,str3);
}
break;
case 4:
{
GetDlgItemText(hwnd,IDC_NAME,str2,sizeof(str2));
int i1;
Pop(&Data1,&i1);
int i2=atoi(str2);
int i3=i1/i2;
sprintf(str3,"%i",i3);
SetDlgItemTextA(hwnd,IDC_NAME,str3);
}
break;
default:break;
}
}
break;
case IDC_CE:
{
// hwnd 是阻止后面的窗口的运行;当前窗口的句柄,操作一个东西要现抓住它的把柄,这就是句柄;
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
///
下面是stack1.h的程序:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
typedef struct Stack1
{
int data[SIZE];
int top;
}SqStack1;
void InitStack(SqStack1 *S)
{
S->top=50;
}
void Push(SqStack1 *S,int e)
{
if(S->top>=SIZE)
{
printf("栈满!!!");
exit(0);
}
else
{
S->data[S->top]=e;
S->top++;
}
}
void Pop(SqStack1 *S,int *e)
{
if(0==S->top)
{
printf("栈空!!!");
exit(0);
}
else
{
S->top--;
*e=S->data[S->top];
//S->data[S->top]=1;
}
}
int Empty(SqStack1 *S)
{
if(0==S->top)
{
return 0;
}
else
{
return 1;
}
}
没有时间加注释,初学者可能看起来有些困难,在这里表示抱歉!!!希望理解!!!
--------------------------------------------------------------------------------------------------------------------------------------------来自:科普知识。
可运行的.exe文件我会传我的资源里面,希望大家下载!!!