| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:初学C语言,想用C写个像QQ上带的截屏软件望高手指导!
只看楼主 加入收藏
奔跑的萝卜
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2013-3-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
初学C语言,想用C写个像QQ上带的截屏软件望高手指导!
开发环境:VS2008。
语言:C。
请高手讲解下大概解决方案与需要用到的windows函数(不要发详细代码)
同时号召像我这样的菜鸟们进来共同探讨!
我感觉学语言,如果有一个项目去边做边学,会学的快很多。
我的QQ57338046

搜索更多相关主题的帖子: C语言 开发 
2013-03-23 21:44
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
你对C掌握到什么程度了?
不要好高骛远

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-23 22:46
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:5 
1 抓取屏幕窗口
2 获取屏幕窗口DC
3 创建一个临时窗口,吧屏幕dc的数据绘制到这个临时窗口中
4 吧这个临时窗口显示出来,给用户抓取截图区域。
5 吧用户选择的区域的图像绘制到剪贴板


以前实现过,步骤就是这样。需要源代码你留个email我可以发给你

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-23 22:54
奔跑的萝卜
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2013-3-18
收藏
得分:0 
回复 2楼 peach5460
刚开始学(单位有许多搞51单片机的,我目前能用简单的语句控制单片机电路),我30岁了。感觉从书本上学太耗时,个人认为找个小项目,边做边学会记忆很深刻!
工作原因,经常接触下面的
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar temp,xian,deng,tt,tt1,kg,kg1,bai,shi,ge;
uint shu;//大于256,定义整数变量
void xianshi(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi, uchar ge);

void chushi();
void yanshi(uint z);
void main()//主程序

{
chushi();

 while(1)
 {  
  if(kg!=1)
  {
        xianshi(7,6,5,bai,shi,ge);
  }
  else
   
       xianshi(16,17,18,18,19,20);
  
  
  
         
 }
}

void chushi()
{

shu=432;
temp=0xfe;
P1=temp;
TMOD=0x11;//初始化定时器
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
void dingshi1()interrupt 1//定时器0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
 if(kg1!=1)
 {
  if(tt==2)
  {
  tt=0;
  
  temp=_crol_(temp,1);
  P1=temp;
  }
 }
 else
 {
  if(tt%4==0)//4毫秒闪烁
  P1=~P1;
  if(tt==60)
  {
  kg=1;
  P1=0xff;
  TR0=0;
  }
 }
 }
void dingshi0()interrupt 3//定时器1
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
tt1++;
 if(tt1==2)//1毫秒
 {
  tt1=0;
  shu--;
  bai=shu/100;
  shi=shu%100/10;
  ge=shu%10;
   if(shu==398)
   {
       TR0=0;
    TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
   
    TR0=1;
    kg1=1;
    tt=0;
    P1=0xff;
    TR1=0;//关闭定时器1
   }
  
 }
 }
void xianshi(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi, uchar ge)//显示函数
{


dula=1;
P0=table[aa];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
yanshi(1);

dula=1;
P0=table[bb];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
yanshi(1);

dula=1;
P0=table[cc];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
yanshi(1);

dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
yanshi(1);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
yanshi(1);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
yanshi(1);
}

 

 

void yanshi(uint z)//延时函数
{
 uint x;
 for(;z>0;z--)
  for(x=110;x>0;x--);
}


[ 本帖最后由 奔跑的萝卜 于 2013-3-23 23:56 编辑 ]
2013-03-23 23:48
奔跑的萝卜
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2013-3-18
收藏
得分:0 
回复 3楼 yuccn
非常感谢!ganlanqingchun@
2013-03-23 23:59
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
回复 5楼 奔跑的萝卜
你好   呵呵  源代码可以发给我一份吗?email:916275051@

三十年河东,三十年河西,莫欺少年穷!
2013-03-24 01:18
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:5 
yuccn的代码是MFC的吧
用c和windows函数写太繁琐,楼主没有windows消息机制的概念的话,还是很困难。即使是看别人的代码 不管是MFC的还是C和API的,都未必能看下去。
2013-03-24 02:51
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用奔跑的萝卜在2013-3-23 23:48:18的发言:

刚开始学(单位有许多搞51单片机的,我目前能用简单的语句控制单片机电路),我30岁了。感觉从书本上学太耗时,个人认为找个小项目,边做边学会记忆很深刻!
工作原因,经常接触下面的
#include
#include
#define uint unsigned int
#define uchar unsigned char

sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar temp,xian,deng,tt,tt1,kg,kg1,bai,shi,ge;
uint shu;//大于256,定义整数变量
void xianshi(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi, uchar ge);

void chushi();
void yanshi(uint z);
void main()//主程序

{
chushi();

 while(1)
 {  
  if(kg!=1)
  {
        xianshi(7,6,5,bai,shi,ge);
  }
  else
   
       xianshi(16,17,18,18,19,20);
  
  
  
         
 }
}

void chushi()
{

shu=432;
temp=0xfe;
P1=temp;
TMOD=0x11;//初始化定时器
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
void dingshi1()interrupt 1//定时器0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
 if(kg1!=1)
 {
  if(tt==2)
  {
  tt=0;
  
  temp=_crol_(temp,1);
  P1=temp;
  }
 }
 else
 {
  if(tt%4==0)//4毫秒闪烁
  P1=~P1;
  if(tt==60)
  {
  kg=1;
  P1=0xff;
  TR0=0;
  }
 }
 }
void dingshi0()interrupt 3//定时器1
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
tt1++;
 if(tt1==2)//1毫秒
 {
  tt1=0;
  shu--;
  bai=shu/100;
  shi=shu%100/10;
  ge=shu%10;
   if(shu==398)
   {
       TR0=0;
    TH0=(65536-50000)/256;
          TL0=(65536-50000)%256;
   
    TR0=1;
    kg1=1;
    tt=0;
    P1=0xff;
    TR1=0;//关闭定时器1
   }
  
 }
 }
void xianshi(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi, uchar ge)//显示函数
{


dula=1;
P0=table[aa];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
yanshi(1);

dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
yanshi(1);

dula=1;
P0=table[cc];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
yanshi(1);

dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
yanshi(1);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
yanshi(1);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
yanshi(1);
}

 

 

void yanshi(uint z)//延时函数
{
 uint x;
 for(;z>0;z--)
  for(x=110;x>0;x--);
}
哦,有基础就好说。。。
我以为又是一个指针都还没学会就声称自己基础打好的初学者呢。。。

我下面那个给的步骤是对的
基本上只要获取了DC其他的都好办了

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-24 07:27
快速回复:初学C语言,想用C写个像QQ上带的截屏软件望高手指导!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020329 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved