COM 计算器






1.12/5 (13投票s)
2004年7月11日
2分钟阅读

43357

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中取得成功