锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽聽聽 HWND hWnd=::FindWindow(NULL,_T("Sphere"));聽聽聽聽聽 //寰楀埌瀵硅瘽妗嗙殑鍙ユ焺
聽 聽C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //鐢卞彞鏌勫緱鍒板璇濇鐨勫璞℃寚閽?br />聽聽 pWnd->xxx( );聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //璋冪敤C***Dialog涓殑鍑芥暟xxx();
]]>
浠ュ墠[闈㈠悜瀵硅薄]鐨勭▼搴忔蹇電瓑榪樻病鏈夊嚭鏉ュ墠
紼嬪簭鐨勮璁¢兘鏄湪鎯蟲庢牱鎵嶈兘涓姝ヤ竴姝ョ殑瑙e喅闂,鎵浠ユ濈淮鏂瑰紡鏄繃紼?鎴栨槸璇存楠?鏃╂湡鐨凜璇█鍛BASIC鍛鐨勯兘鏄?姹囩紪灝辨洿鏄簡
鑰孾闈㈠悜瀵硅薄]鐨勫熀鏈槸,濡備綍璁捐涓涓釜鑳藉姩鐨勭墿浣?OBJECT瀵硅薄)浠栦滑鏈変笉鍚岀殑鍔熻兘,涔嬪悗鐨勯棶棰樺氨鏄浣曟憜寮勮繖浜涚Н鏈ㄤ技鐨勪笢瑗?鐩鎬簰緇勫悎璋冪敤鍚勪釜瀵硅薄鐨勪粬浠嚜宸辨搮闀跨殑鍔熻兘(鏈鍙玀ETHOD,鏂規硶),鏈鍚庡畬鎴愪竴涓ぇ鐨勭洰鐨?褰撶劧姝ラ,鍜岃繃紼?瑙e喅闂鐨勫厛鍚庨『搴忕瓑,榪樻槸瀛樺湪鐨?
涓轟粈涔堣闈㈠悜瀵硅薄鐨勬濊冩柟娉曞拰姒傚康?
鏄負浜嗘彁楂樺紑鍙戞晥鐜?br />涓轟粈涔堣兘鎻愰珮鏁堢巼?鍥犱負闈㈠悜瀵硅薄鐨勮璁′腑,閮芥槸鍦ㄨ璁′竴涓釜鐨勭墿浠?OBJECT),鍏卞悓鐨勫湴鏂?鍙互閲嶅鍒╃敤
C璇█涔熸湁搴撲粈涔堢殑,涓轟粈涔堥潪瑕佸紕涓柊鐨?榪欎箞闅炬噦鐨勬蹇?
闈㈠悜瀵硅薄榪樻湁C璇█絳夋病鏈夌殑寰堝鏂扮殑姒傚康,濡傜戶鎵?鎺ュ彛絳?鍒╃敤榪欎簺姒傚康涔熷彲浠ユ彁楂樺紑鍙戠殑鏁堢巼,鍑忓皯閲嶅寮鍙?br />灝忕殑欏圭洰閲屼篃璁鎬綋鐜頒笉鍑烘潵闈㈠悜瀵硅薄鐨勪紭鍔?br />澶х殑欏圭洰灝卞緢鏈夌敤浜?涔熻鍙兘鍦ㄥ疄闄呭紑鍙戜腑鍘諱綋浼氫簡)
闈㈠悜榪囩▼鐨勫紑鍙?浜鴻繋鍚堟満鍣ㄧ殑宸ヤ綔鏂瑰紡
闈㈠悜瀵硅薄,浜烘洿澶氱殑鍘婚泦涓娊璞$幇瀹炰腑鐨勯棶棰?浠ヤ漢鐨勬濈淮鏂瑰紡涓烘湰浣?鍑忓皯浜嗗鏈哄櫒鐗╃悊鏋勯犳垨宸ヤ綔鏂瑰紡鐨勮繋鍚?鍙互鐢ㄦ洿澶氱殑緇忓巻鍘昏冭檻鎬庝箞瑙e喅闂,鎬庝箞瀹炵幇鏌愪簺鍔熻兘
]]>
紼嬪簭濡備笅:
#include <ctype.h> //鎵撳紑搴撴枃浠?br />#include <stdio.h>
#include <iostream.h>
#include <malloc.h>
#include <process.h>
#include <string.h>
#define error 0
#define ok 1
typedef struct{
聽 int *base;
聽 int *top;
聽 int stacksize;
}sqstack;
class CExpression
{
public:
聽CExpression();
聽~CExpression();
public:
聽void initstack(sqstack &s);
聽int gettop(sqstack &s);
聽void push(sqstack &s,int e);
聽int pop(sqstack &s,int &e);
聽int setfind(char a,char b[]); //鏌ユ壘a鍦╞涓殑浣嶇疆
聽char precede(char op1,char op2,int &flag); //姣旇緝op1鍜宱p2鐨勪紭鍏堢駭
聽聽聽 int numlink(int opd,int ops,int &flag); //鏁板瓧涓庡瓧絎︿覆鐨勮繛鎺?br />聽int operate(int n1,char o,int n2,int &flag);//榪愮畻
聽聽聽聽聽聽聽聽聽聽聽 /*
聽聽聽聽聽聽聽聽聽聽聽 flag涓轟竴涓爣蹇楀彉閲?
聽聽聽聽聽聽聽聽聽聽聽 1涓鴻〃杈懼紡鏈夎錛侀櫎鏁頒負0錛?br />聽聽聽聽聽聽聽聽聽聽聽 2涓鴻〃杈懼紡鐨勫艱繃澶ф垨榪囧皬
聽聽聽聽聽聽聽聽聽聽聽 3涓烘湭鐭ョ被鍨嬬殑閿欒,鍙兘娌℃湁榪欎竴鐐?br />聽聽聽聽聽聽聽聽聽聽聽 浣嗕負浜嗗閿?榪樻槸瑕佸姞涓婅繖涓鐐?br />聽-*/
public:
聽sqstack opnd;
聽sqstack optr;
private:
聽sqstack s;
};
CExpression::CExpression()
{
聽s.top=s.base;
}
CExpression::~CExpression()
{
}
void CExpression::initstack(sqstack &s)
{
聽s.base=(int *)malloc(10*sizeof(int));
聽if(!s.base) exit(1);
聽s.top=s.base;
聽s.stacksize=100;
}
int CExpression::gettop(sqstack &s)
{
聽int e;
聽e=*(s.top-1);
聽return e;
}
void CExpression::push(sqstack &s,int e)
{
聽聽聽 if(s.top-s.base>=s.stacksize)
聽{
聽聽s.base=(int*)realloc(s.base,(s.stacksize+10*sizeof(int)));
聽聽if(!s.base)
聽聽聽exit(2);
聽聽s.top=s.base+s.stacksize;
聽聽s.stacksize+=10;
聽}
聽*s.top++=e;
}
int CExpression::pop(sqstack &s,int &e)
{
聽if(s.top==s.base)return error;
聽e=*--s.top;
聽return ok;
}
int CExpression::setfind(char a,char b[])
{
聽int i,j;
聽i=-1,j=0;
聽while(b[j]!='\0')
聽聽if(a==b[j++]) {i=j-1;break;}
聽聽return i;
}
char CExpression::precede(char op1,char op2,int &flag) //姣旇緝op1鍜宱p2鐨勪紭鍏堢駭
{
聽int i,j;
聽char st1[8]={"+-*/()#"}; //榪愮畻絎﹀垵濮嬪寲
聽char st2[7][8]={">><<<>>",">><<<>>",">>>><>>", //姣旇緝鎿嶄綔鍒濆鍖?br />聽聽">>>><>>","<<<<<= ",">>>> >>","<<<<< ="};
聽i=setfind(op1,st1);j=setfind(op2,st1);
聽if (i>-1 && j>-1) //濡傛灉浣犳墍杈撳叆鐨勮繍綆楃涓嶅湪+-*/錛堬級#鍐咃紝榪斿洖ERROR
聽{return st2[i][j];flag=ok;}
聽else flag=error;
聽return error;
}
int CExpression::numlink(int opd,int ops,int &flag){ //鏁板瓧涓庡瓧絎︿覆鐨勮繛鎺?br />聽int aa=ops;
聽ops=ops*10+opd-48;
聽if (ops<0 && aa>0 || aa>214748364)
聽聽flag=error; else flag=ok; //flag=0,璇存槑ops宸茬粡榪囧ぇ錛?br />聽return ops;
}
int CExpression::operate(int n1,char o,int n2,int &flag){ //榪愮畻
聽聽聽聽聽聽聽聽聽聽聽 /*
聽聽聽聽聽聽聽聽聽聽聽 flag涓轟竴涓爣蹇楀彉閲?
聽聽聽聽聽聽聽聽聽聽聽 1涓鴻〃杈懼紡鏈夎錛侀櫎鏁頒負0錛?br />聽聽聽聽聽聽聽聽聽聽聽 2涓鴻〃杈懼紡鐨勫艱繃澶ф垨榪囧皬
聽聽聽聽聽聽聽聽聽聽聽 3涓烘湭鐭ョ被鍨嬬殑閿欒,鍙兘娌℃湁榪欎竴鐐?br />聽聽聽聽聽聽聽聽聽聽聽 浣嗕負浜嗗閿?榪樻槸瑕佸姞涓婅繖涓鐐?br />聽-*/
聽
聽int result=0;
聽switch (o){
聽case '+': //鍔犳硶榪愮畻
聽聽flag=0;result=n1+n2;
聽聽if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
聽聽聽//涓や釜澶т簬0鐨勬暟鐩稿姞,鍜屽皬浜?,鎴栦袱涓皬浜?鐨勬暟鐩稿姞,鍜屽ぇ浜?,榪斿洖閿欒
聽聽{flag=2;return error;}
聽聽else
聽聽{flag=0;return result;}
聽聽break;
聽case '-': //鍑忔硶榪愮畻
聽聽flag=0;result=n1-n2;
聽聽if (n1>=0 && n2<0 && result<0 || n1<=0 && n2>0 && result>0)
聽聽聽//涓涓ぇ浜?鐨勬暟鍑忎竴涓皬浜? 鐨勬暟,鍜屽皬浜?鎴栦竴涓皬浜? 鐨勬暟鍑忓幓涓涓ぇ浜?鐨勬暟,榪斿洖閿欒
聽聽聽
聽聽{flag=2;return error;}
聽聽else
聽聽{flag=0;return result;}
聽聽break;
聽case '*': //涔樻硶榪愮畻
聽聽flag=0;result=n1*n2;
聽聽if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
聽聽聽//涓や釜澶т簬0鐨勬暟鐩鎬箻,縐皬浜?,鎴栦袱涓皬浜?鐨勬暟鐩鎬箻,縐ぇ浜?,榪斿洖閿欒
聽聽{flag=2;return error;}
聽聽else
聽聽{flag=0;return result;}
聽聽break;
聽case '/': //闄ゆ硶榪愮畻
聽聽if(n2!=0) //濡傛灉琚櫎鏁頒負0瑕佽繑鍔燛RROR
聽聽{flag=0;return n1/n2;break;}
聽聽else
聽聽聽//闄ゆ暟涓?,榪斿洖閿欒
聽聽{flag=1;return error;break;}
聽}
聽flag=3;return error;
}
void main()
{
聽CExpression expression;
//聽sqstack opnd; //鐢ㄤ簬瀛樻斁榪愮畻鏁?br />//聽sqstack optr; //鐢ㄤ簬瀛樻斁榪愮畻絎?br />聽int theta; //鐢ㄤ簬瀛樻斁涓涓繍綆楃
聽int a,b; //鐢ㄤ簬瀛樻斁鐢ㄤ簬鎿嶄綔鐨勪袱涓暟
聽int temp; //涓涓復鏃剁殑鍙橀噺
聽int flag2=0; //涓涓爣蹇楀彉閲忥紝鐢ㄤ簬鍒ゆ柇鏄惁瑕佽繛鎺ユ暟瀛?br />聽int flag1; //涓涓爣蹇楀彉閲忥紝鐢ㄤ簬鍒ゆ柇琛ㄨ揪寮忔槸鍚︽槸鏃犳晥鐨?br />聽int cn=0; //鐢ㄤ簬瀛樻斁瀛楃鐨勪綅緗?br />聽int ops=0; //鐢ㄤ簬瀛樻斁褰撳墠鐨勬搷浣滄暟
聽char st1[255]; //琛ㄨ揪寮忎腑鏈澶氭湁255涓瓧絎?br />聽char c; //鐢ㄤ簬琛ㄧず褰撳墠鐨勫瓧絎?br />聽for (a=0;a<255;a++) st1[a]='#'; //瀵規暟緇勫垵濮嬪寲
聽expression.initstack(expression.opnd); //瀵規爤OPND鍒濆鍖?br />聽expression.initstack(expression.optr); //瀵規爤OPTR鍒濆鍖?br />聽expression.push(expression.optr,'#');
聽cin>>st1;
聽temp=strlen(st1);
聽if (st1[temp-1]!='#') st1[temp]='#'; //瀵硅〃杈懼紡鐨勭粨灝懼姞鍏ヤ竴涓?
聽
聽c=st1[0];
聽while(c!='#' || expression.gettop(expression.optr)!='#'){ //cout<<st1;
聽聽
聽聽c=st1[cn];
聽聽if(isdigit(c)) {
聽聽聽ops=expression.numlink(c,ops,temp);
聽聽聽if (temp==ok)
聽聽聽{
聽聽聽聽if (flag2) expression.pop(expression.opnd,temp);
聽聽聽聽flag2=1;
聽聽聽聽expression.push(expression.opnd,ops);
聽聽聽聽cn++;
聽聽聽聽continue;
聽聽聽}
聽聽聽else
聽聽聽{cout<<"琛ㄨ揪寮忕殑鍊艱繃澶?鏃犳硶璁$畻!"<<endl;return;}
聽聽}
聽聽else{
聽聽聽ops=0;
聽聽聽flag2=0;
聽聽聽temp=expression.precede(expression.gettop(expression.optr),c,temp); //temp涓簆recede涓殑涓涓唬鍙?涓簅k涓烘紜殑榪愮畻絎︽瘮杈?涓篹rror涓洪敊璇殑榪愮畻絎︽瘮杈?
聽聽聽if (temp==error) {cout<<"琛ㄨ揪寮忔湁璇紒鏃犳硶姹傝В錛?<<endl;return;} //閿欒鐨勮繍綆楃姣旇緝鏃?榪斿洖.
聽聽聽switch (temp){
聽聽聽case '<':
聽聽聽聽expression.push(expression.optr,c);cn++;break; //濡傛灉涓?lt;,鎿嶄綔絎﹀叆鏍?br />聽聽聽case '=':
聽聽聽聽expression.pop(expression.optr,temp);cn++;break; //濡傛灉涓?,鎿嶄綔絎﹀嚭鏍?br />聽聽聽case '>': //濡傛灉涓?gt;,鎵ц榪愮畻鎿嶄綔
聽聽聽聽expression.pop(expression.optr,theta);
聽聽聽聽expression.pop(expression.opnd,b);
聽聽聽聽expression.pop(expression.opnd,a);
聽聽聽聽expression.operate(a,theta,b,flag1);
聽聽聽聽if (flag1==1) {cout<<"琛ㄨ揪寮忔湁璇紒闄ゆ暟涓嶈兘涓?錛?<<endl;return;}
聽聽聽聽else if(flag1==2) {cout<<"琛ㄨ揪寮忕殑鍊艱繃澶ф垨榪囧皬,鏃犳硶璁$畻!"<<endl;return;}
聽聽聽聽else if(flag1==3) {cout<<"鏈煡閬撶被鍨嬬殑閿欒!"<<endl;return;}
聽聽聽聽expression.push(expression.opnd,expression.operate(a,theta,b,flag1));
聽聽聽聽break;
聽聽聽case ' ':
聽聽聽聽cout<<"琛ㄨ揪寮忔湁璇紒鏃犳硶姹傝В錛?<<endl;return;
聽聽聽} //end switch
聽聽} //end if
聽} //end while
聽a=expression.gettop(expression.opnd);
聽cn=0;
聽while(st1[cn]!='#') cout<<st1[cn++]; //杈撳嚭浣犳墍杈撳叆瀛楃涓?br />聽cout<<"=";
聽cout<<a<<endl; //杈撳嚭鏈緇堢粨鏋?br />}
璇ョ▼搴忕殑緙虹偣鏄笉鑳藉鐞嗗瓨鍦ㄥ皬鏁扮殑琛ㄨ揪寮?