65.9K
CodeProject 正在变化。 阅读更多。
Home

COM 计算器

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.12/5 (13投票s)

2004年7月11日

2分钟阅读

viewsIcon

43357

downloadIcon

1614

这个简单的程序是我为了理解COM而开发的。它可能帮助你理解COM编程以及如何在VB中使用它。

重要提示

这篇文章包含关于如何在VC++中编写COM程序以及如何在VB中使用它的信息。了解构建COM组件的重要性,用一种语言编写的程序应该可以通过另一种语言使用。在不久以前,这还是一个难以捉摸的梦想。然后微软推出了COM。曾经难以捉摸的梦想开始成为现实。COM彻底改变了软件的构建方式。COM功能强大,如果你想走在技术的前沿,COM是最佳选择。这个简单的程序,可能帮助你理解COM编程以及在VB中使用它。

引言

为了使COM编程更简单,请访问 Inside COM 并了解这个程序。

我用VC++设计了一个用于示例计算器的组件。我们可以用它进行简单的计算,我包含了二进制和十进制数字转换。

源代码指南

在COM中创建ATL对象后,插入ATL对话框并设计它。将点击事件添加到按钮并编写程序的代码部分。

二进制数字的编码

LRESULT OnClickedButton_Bin(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
int r[10]={0},i=0,tot=0; 
int ip=GetDlgItemInt(IDC_EDIT1);

do
{
r[i++]=ip%2;
ip=ip/2;
tot++;
}while(ip>=2);
r[i]=ip;

int n=0;
for(int x=tot;x>=0;x--)
{
n=(n*10)+r[x];
}

SetDlgItemInt(IDC_EDIT1,n);
return 0;
}

显示数字一的示例编码

LRESULT OnClickedButton1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
int n1=GetDlgItemInt(IDC_EDIT1);
    n1=(n1*10)+1;
SetDlgItemInt(IDC_EDIT1,n1);
return 0;
}

按下等于按钮后的编码

LRESULT OnClickedButton_Eqa(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
int n2=GetDlgItemInt(IDC_EDIT1);
switch(opt)
{
    case '+':
        r=n1+n2;
        break;
    case '-':
        r=n1-n2;
        break;
    case '*':
        r=n1*n2;
        break;
    case '/':
        r=n1/n2;
        break;
    case '^':
        r=pow(n1,n2);
        break;
    default:
        SetDlgItemInt(IDC_EDIT1,0);
 } 
SetDlgItemInt(IDC_EDIT1,r);
return 0;
}

1/X计算的编码

LRESULT OnClickedButton_OneByX(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  {
    n1=GetDlgItemInt(IDC_EDIT1);
    s.Format("%f",(1.0/n1));
    SetDlgItemText(IDC_EDIT1,s);
    return 0;
    }

十进制数字的编码

LRESULT OnClickedButton_Dec(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
char bin[100];
int dec=0,temp,cont=0;

n1=GetDlgItemInt(IDC_EDIT1);
s.Format("%d",n1);
strcpy(bin,s); 

int totlen=strlen(bin)-1;
 while(totlen>=0)
{
if(bin[totlen]=='0')
     temp=pow(2,cont)*0;
else if(bin[totlen]=='1') 
    temp=pow(2,cont)*1;

dec=dec+temp;
totlen--;
cont++;
}
SetDlgItemInt(IDC_EDIT1,dec);
return 0;
}

完成编码后,构建程序。组件已创建。然后,在VB中插入完成,在需要的地方使用它。

VB中的第一步

VB中的第二步

在不进行任何计算器编码的情况下,你可以在VB程序中获得正确的输出。

这是我在COM中迈出的第一步,它引导我学习了这门学科的更多知识。所以坚持尝试,直到你在COM中取得成功

© . All rights reserved.