画图函数为什么不能画图啊 ,帮帮忙,在线等啊

cdshrewd 2007-05-30 08:26:06
//Hdb3.cpp
#include<iostream.h>
#include<string.h>
#include"HDB3.h"
#include"windows.h"
int Select=0;
int choose=0;
int x0=20;
int y0=150;
int len=0;
char arg[200]={0};
void Draw(HDC hDC, int x0,int y0,int n,char signal[]);
void main(int argc,char * argv[])
{
HWND hwnd=FindWindow(NULL, arg); //找到程序运行窗口的句柄
HDC hDC=GetDC(hwnd); //通过窗口句柄得到该窗口的设备场境句柄
HPEN hPen=CreatePen(PS_SOLID, 1,RGB(255,255,255));//生成绿色画笔
HPEN hOldPen=(HPEN)SelectObject(hDC,hPen);//把画笔引入设备场境
char DFileName[100];
cout<<"1. 编码 2. 译码 3.退出"<<endl;
cin>>Select;
switch (Select)
{
case 1:
Code(signal);
n=strlen(signal);
arg[0]='\"';
strcpy(arg+1,argv[0]);
len=int(strlen(arg));
arg[len]='\"';
cout<<signal<<n<<endl;
Draw(hDC,x0,y0,n,signal);
break;
case 2:
cout<<"Please input dfilename!"<<endl;
cin>>DFileName;
cout<<"请输入待译码的类别:\n";
cout<<"0,1,+,-,v,b构成请输入:1:\t0,1,+,-,构成请输入:0,默认为0.\n";
cin>>choose;
if(choose==1)
Decode(DFileName);
else
if(choose==0)
DecodeBase(DFileName);
else
cout<<"输入有误!\n";
break;
case 3:exit(1);
default:
cout<<"输入错误!请重新输入!\n";
break;
}
}
void Draw(HDC hDC, int x0,int y0,int n,char signal[])
{
int dx=20;
int dy=40;

for(int i=1;i<=n;)
{
if(signal[i]=='1'||signal[i]=='v'||signal[i]=='v')
{
if(signal[i-1]=='+')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
LineTo(hDC,x0,y0-dy);//设置画线终点

MoveToEx(hDC,x0,y0-dy,NULL);
x0=x0+dx/2;
LineTo(hDC,x0,y0-dy);

MoveToEx(hDC,x0,y0-dy,NULL);
LineTo(hDC,x0,y0);

MoveToEx(hDC,x0,y0,NULL);
x0 = x0 + dx/2;
LineTo(hDC,x0,y0);
}
if(signal[i-1]=='-')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
LineTo(hDC,x0,y0+dy);//设置画线终点

MoveToEx(hDC,x0,y0+dy,NULL);
x0=x0+dx/2;
LineTo(hDC,x0,y0+dy);

MoveToEx(hDC,x0,y0+dy,NULL);
LineTo(hDC,x0,y0);

MoveToEx(hDC,x0,y0,NULL);
x0 = x0 + dx/2;
LineTo(hDC,x0,y0);
}
}
if(signal[i]=='0')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
x0=x0+dx;
LineTo(hDC,x0,y0);//设置画线终点
}
if(x0>=600)
{
x0=20;
y0=y0+100;
}

i=i+2;
}
}
//Hdb3.h




#ifndef HDB3_H
#define HDB3_H
#include"string.h"
#include"stdlib.h"
#include"fstream.h"
#include"iostream.h"
#define NO 100
int count=0;
char flagone='-';
char flagv='-';
int vfirst=0;
char code[200];
char signal[NO];
extern int n=0;
ofstream fout;
void Code(char *signal)
{ char ch;
unsigned int length=0,i=0;
char buf[100];
fout.open ("PostCode.txt",ios::out );
cout<<"请输入基带信号!\n";
cin>>buf;
length=strlen(buf);
cout<<"信号长度:"<<length<<endl<<"基带信号为:";
for(i=0;i<length;i++)
{
cout<<buf[i];
}
cout<<endl;
for(i=0;i<length;i++)
{ ch=buf[i];
int temp=0;
switch (ch)
{
case '1':
count=0;
if(flagone=='+' )
{
strcat(code,"-1");
flagone='-';
}
else
{
strcat(code,"+1");
flagone='+';

}
break;
case '0':
if(vfirst==0)
{
if(flagone=='+')
flagv='-';
else flagv='+';
vfirst++;
}
count=count+1;
strcat(code,"#0");
if(count==4)
{
count=0;
if(flagv=='+')
{
temp=strlen(code);
code[temp-2]='-';
code[temp-1]='v';
if(code[temp-10]=='+')
{
code[temp-8]='-';
code[temp-7]='b';
}
}
if(flagv=='-' )
{
temp=strlen(code);
code[temp-2]='+';
code[temp-1]='v';

if(code[temp-10]=='-')
{
code[temp-8]='+';
code[temp-7]='b';
}
}
if(flagv=='+')
flagv='-';
else
flagv='+';
if(flagv=='+')
flagone='+';
else
flagone='-';
}
break;
default:
cout<<"基带信号有误!"<<endl;
exit(0);
}
}
cout<<"编码结果为:";
for(i=0;i< strlen (code);i++)
{
if(code[i]=='#')
{
cout<<code[++i];
strcat(signal,"0");
fout<<code[i];
}
else
{
cout<<code[i];
if(code[i]=='v')
strcat(signal,"v");
else if(code[i]=='b')
strcat(signal,"b");
else if(code[i]=='+')
strcat(signal,"+");
else if(code[i]=='-')
strcat(signal,"-");
else
strcat(signal,"1");
fout<<code[i];
}
}
cout<<endl;
cout<<"Code Finished!\nResults have been saved in PostCode.txt!"<<endl;
fout.close();
}
void Decode(char *FileName)
{
ifstream fin;
char ch;
fin.open (FileName,ios::in|ios::nocreate);
if(!fin)
{
cout<<"Error(1):"<<FileName<<"cannot open!\n";
exit(1);
}
ch=fin.get();
while(!fin.eof())
{
if(ch=='1')
cout<<'1';
else
{
if(ch!='+' && ch!='-')
cout<<'0';
}
ch=fin.get();
}
cout<<endl;
fin.close();
}
void DecodeBase(char *FileName)
{
ifstream fin;
char buf[100]=" ";
char code[200]=" ";
char ch;
int i=0;
char first='+';
char now='+';
char next='-';
fin.open (FileName,ios::in|ios::nocreate);
if(!fin)
{
cout<<"Error(1):"<<FileName<<"cannot open!\n";
exit(1);
}
ch=fin.get();
while(!fin.eof())
{
buf[i++]=ch;
ch=fin.get();
}
i=strlen (buf);
int j=0,k=0;
while(j<i)
{

if(buf[j]=='0')
{
code[k]='0';
}
else
{
if(buf[j]!='1')
{
first=now;
now=next;
next=buf[j];
code[k]='#';
}
else
{
if(now==next)
{
code[k]='0';
if(first!=next && now==next)
code[k-4]='0';
}
else
code[k]='1';
}


}
//cout<<code[k]<<endl;
j++;
k++;
}
j=strlen(code);
k=0;
while(k<j)
{
if(code[k]!='#')
cout<<code[k];
k++;
}
cout<<endl;
fin.close();
}
#endif HDB3_H

...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
拿节 2007-05-31
  • 打赏
  • 举报
回复
解决了!楼主可以放分了!^_^
cdshrewd 2007-05-30
  • 打赏
  • 举报
回复
HWND hwnd=FindWindow(NULL, arg); //找到程序运行窗口的句柄
HDC hDC=GetDC(hwnd); //通过窗口句柄得到该窗口的设备场境句柄
HPEN hPen=CreatePen(PS_SOLID, 1,RGB(255,255,255));//生成绿色画笔
HPEN hOldPen=(HPEN)SelectObject(hDC,hPen);//把画笔引入设备场境
switch (Select)
{
case 1:
Code(signal);
n=strlen(signal);
arg[0]='\"';
strcpy(arg+1,argv[0]);
len=int(strlen(arg));
arg[len]='\"';
cout<<signal<<n<<endl;
Draw(hDC,x0,y0,n,signal);
break;
case 2:

void Draw(HDC hDC, int x0,int y0,int n,char signal[])
{
int dx=20;
int dy=40;

for(int i=1;i<=n;)
{
if(signal[i]=='1'||signal[i]=='v'||signal[i]=='v')
{
if(signal[i-1]=='+')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
LineTo(hDC,x0,y0-dy);//设置画线终点

MoveToEx(hDC,x0,y0-dy,NULL);
x0=x0+dx/2;
LineTo(hDC,x0,y0-dy);

MoveToEx(hDC,x0,y0-dy,NULL);
LineTo(hDC,x0,y0);

MoveToEx(hDC,x0,y0,NULL);
x0 = x0 + dx/2;
LineTo(hDC,x0,y0);
}
if(signal[i-1]=='-')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
LineTo(hDC,x0,y0+dy);//设置画线终点

MoveToEx(hDC,x0,y0+dy,NULL);
x0=x0+dx/2;
LineTo(hDC,x0,y0+dy);

MoveToEx(hDC,x0,y0+dy,NULL);
LineTo(hDC,x0,y0);

MoveToEx(hDC,x0,y0,NULL);
x0 = x0 + dx/2;
LineTo(hDC,x0,y0);
}
}
if(signal[i]=='0')
{
MoveToEx(hDC,x0,y0,NULL);//设置画线起点
x0=x0+dx;
LineTo(hDC,x0,y0);//设置画线终点
}
if(x0>=600)
{
x0=20;
y0=y0+100;
}

i=i+2;
}
}
有问题,现在已经解决,谢谢大家关注啊
lizhengjin 2007-05-30
  • 打赏
  • 举报
回复
你狠,你么长的程序,谁有耐心看完啊,自己调试一下,把最有可能出错的代码贴上来还差不多,记着要短小精焊
菜牛 2007-05-30
  • 打赏
  • 举报
回复
在命令行程序中绘图……总觉得怪怪的,还是换成Windows程序吧!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧