今天无聊到极点,自己老玩不过去.抄别人的样子,也写了个,过了一把瘾..
下载http://www.hdfdc.gov.cn/download/llk.exe另外问两个小问题:
第一为什么MFC静态DLL编绎后大了好几倍.难道只能用SDK才能小些吗?
第二就是DC重画时,闪客都没这么闪...哎.....
就这句: CDC m_dcCompatible是我的一张DC画布.
dc.BitBlt(0,0,1020,1000,&m_dcCompatible,0,0,SRCCOPY);
void CllkView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CView::OnPaint()
dc.BitBlt(0,0,1020,1000,&m_dcCompatible,0,0,SRCCOPY);
OnPrepareDC(&dc);
OnDraw(&dc);

}

解决方案 »

  1.   

    EXE文件下不了.
    这个才对!
    http://www.hdfdc.gov.cn/download/llk.rar
      

  2.   

    闪的问题解决.重
    BOOL CllkView::OnEraseBkgnd(CDC* pDC)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    return true;
    //return CView::OnEraseBkgnd(pDC);  //注掉,不重绘
    }
      

  3.   

    回答第一个问题,也许你用的是调试模式编译的,所以很大,改成发布模式就很小了,
    从Build->Set Active Configuration->Win32 Release
      

  4.   

    ----------看是否能连通---A A B C D E F G HB C D E F G H I I -----------------先在外面加一层0--------0 0 0 0 0 0 0 0 0 0 0 0 A A B C D E F G H 00 B C D E F G H I I 0           0 0 0 0 0 0 0 0 0 0 0  ------------判断是不能到达a[][]就是存数这些数组的地方.CllkView::pdlt(int ex,int ey,int fx,int fy)函数是判断是两点否能连通的函数.ex,cy为一个点fx,fy为第二个点bool CllkView::pdlt(int ex,int ey,int fx,int fy)
    {//判断是否能连通函数
    //------------------主要算法----------------------
    int xj[18],yj[11];
    int pass=0; //xj[]yj[]分别用来计算算法中“井”字横方向和竖方向对应的空点出现的值,当其xj[x]值为2表示该水平或竖直方蛴兄睾系?br> int k;
    int m;
    int i;//取得a数组并写入到b数组中.
    int temppdindex;//临时存放存的图片号码
    temppdindex=a[ex][ey];
    a[ex][ey] = 0;
    a[fx][fy] = 0;
    //___________________
    for (i=0 ; i<x+2;i++)
    {
      xj=0;
    }
    for (i=0 ; i<y+2;i++)
    {
      yj=0;
    }
    xj[ex]++;
    for (k=ex-1;k>-1;k--)
    {
      if ( 0 == a[k][ey])
      {
       xj[k]++;
      }
      else
      {
       break; 
      }
    }
    for (k=ex+1;k<x+2;k++)
    {
      if ( 0 == a[k][ey])
      {
       xj[k]++;
      }
      else
      {
       break; 
      }
    }
    xj[fx]++;
    for (k=fx-1;k>-1;k--)
    {
      if ( 0 == a[k][fy])
      {
       xj[k]++;
      }
      else
      {
       break; 
      }
    }
    for (k=fx+1;k<x+2;k++)
    {
      if ( 0 == a[k][fy])
      {
       xj[k]++;
      }
      else
      {
       break; 
      }
    }
    //现在开始进行水平方向的扁历判断
    for(k=0;k<x+2;k++)
    {
      if(xj[k]==2)
      {
       //if(Math.Abs(ey-fy) == 1)
       if((ey-fy) == 1 || (ey-fy) == -1 )
       {
        //MessageBox.Show("可通1");
        //--------------------------可通
        a[ex][ey] = temppdindex;
        a[fx][fy] = temppdindex;
        return true;
       }
       else
       {
        pass=0;
        for (m = (ey<fy ? ey:fy) ;m< ( ey<fy ? fy:ey);m++ )
        {
         if(a[k][m] !=0 )
         {
          pass=1;  
          break;
         }
        }
        if(pass==0)  
        {
         //MessageBox.Show("可通2");
         //--------------------------可通
         a[ex][ey] = temppdindex;
         a[fx][fy] = temppdindex;
         return true;
        }   }
      }
      
    }
    //---------以上为水平2条通路判断,下面为竖直方向2条通路判断,下面方法判断和上面的原理相同,不做详细介绍了
    yj[ey]++;
    for (k=ey-1;k>-1;k--)
    {
      if ( 0 == a[ex][k])
      {
       yj[k]++;
      }
      else
      {
       break; 
      }
    }
    for (k=ey+1;k<y+2;k++)
    {
      if ( 0 == a[ex][k])
      {
       yj[k]++;
      }
      else
      {
       break; 
      }
    }
    yj[fy]++;
    for (k=fy-1;k>-1;k--)
    {
      if ( 0 == a[fx][k])
      {
       yj[k]++;
      }
      else
      {
       break; 
      }
    }
    for (k=fy+1;k<y+2;k++)
    {
      if ( 0 == a[fx][k])
      {
       yj[k]++;
      }
      else
      {
       break; 
      }
    }
    //现在开始进行竖直方向的扁历判断
    for(k=0;k<y+2;k++)
    {
      if(yj[k]==2)
      {
       //if(Math.Abs(ex-fx) == 1)
       if((ex-fx) == 1  || (ex-fx) == -1)
       {
        //MessageBox.Show("可通3");
        //--------------------------可通
        a[ex][ey] = temppdindex;
        a[fx][fy] = temppdindex;
        return true;
       }
       else
       {
        pass=0;
        for (m = (ex<fx ? ex:fx) ;m< ( ex<fx ? fx:ex);m++ )
        {
         if(a[m][k] !=0 )
         {
          pass=1;  
          break;
         }
        }
        if(pass==0)  
        {
         //MessageBox.Show("可通4");
         //--------------------------可通
         a[ex][ey] = temppdindex;
         a[fx][fy] = temppdindex;
         return true;
        }
       }
      }
    }
    //-----------------主要算法------------------------------
    a[ex][ey] = temppdindex;
    a[fx][fy] = temppdindex;
    return false;
    }
      

  5.   

    能不能把工程文件给我一份呀[email protected]先谢过了。
      

  6.   

    标题:【转贴】请不要做浮躁的人
    这是从其他论坛中拷贝过来的,有借鉴意义。
    请不要做浮躁的人
    1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想
    出来再参考别人的提示,你就知道自己和别人思路的差异。
    2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久
    都是只对部分功能熟悉而已,不系统还是不够的。
    3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,
    虽然帮助的文字有时候很难看懂,总觉得不够直观。
    4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
    5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸
    出很多知识点;不会举一反三你就永远学不会。
    6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
    7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览
    群书;
    8.看再多的书是学不全脚本的,要多实践
    9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
    10.学习脚本最好的方法之一就是多练习;
    11.在任何时刻都不要认为自己手中的书已经足够了;
    12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 
    13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
    14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
    15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
    16.不要漏掉书中任何一个练习——请全部做完并记录下思路;
    17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余
    下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工
    作。
    18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
    19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能
    讲清楚才说明你真的理解了;
    20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
    21.保存好你做过的所有的源文件----那是你最好的积累之一;
    22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先
    你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就
    能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
    23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问
    题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己
    的帖子没人回的。
    24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,
    如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的
    才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你
    讨论呢。浮躁的人容易问:我到底该学什么;----别问,学就对了;
    浮躁的人容易问:Js有钱途吗;----建议你去抢银行;
    浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!
    浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
    浮躁的人永远不是一个高手。
      

  7.   

    hehe,楼主还挺技术保密的呀。如果不方便给工程文件,就不麻烦了。做到team leader的份上, 很多事情就懒了, 而且也没必要事事亲为。 有什么想法,把工作分解一下,分配下面就是了。重要的是别让下面的人给唐塞了。毕竟年龄也大了,36岁了,抠很细的东西有些力不从心了。 好几年没写代码,语法都生疏了。
      

  8.   

    BTW,最后一次抠细的东西,是关于完成端口的。当时,偶要求下面的程序员使用完成端口来进行通讯,他们说太复杂,做不了。一气之下,偶用半个月细细的抠了一遍完成端口。累个半死,从那时候起,知道力不从心是怎么回事了。不过也有好处, 以后,下面的人再也不说能不能做,而会仔细分析需不需要做。
      

  9.   

    to: tipbridge(asd)
    有啥好保密,由于是随便做的练习用的,代码十分不规范,实在丢人,想到啥就做啥.不好意思见人
    我敢向"毛,主..席"(CSDN这个词也不给发)发誓:程序就是用这段代码判断的.就这一点判断联通是最关键的有那么些少用,其它实现都是垃圾..
    后面的实现,用C#或VC或VB,delphi任一个工具,一会就能实现.轻轻松松边听歌,边实现保证不超过二小时..PS:工作了七、八年,也快三十,好多年前就做过管理,感觉还是写代码时心情最愉快,没你所说的累,当兴趣变成机械工作时真的累,曾经试过,现在打杂,但还是很喜欢写自已感兴趣的代码,练练手..
      

  10.   

    厉害啊,搞完成端口才用了半个月啊?我足足用了一个月才写了一个用模板封装的完成端口.还参考了许多例子。
    当兴趣变成机械工作时真的累<<===极度赞同。现在眼睛太累了~~~~~