返回列表 发帖

【教学视频】《C语言也能干大事》第一节:Windows编程轻松入门

《C语言也能干大事》已经录制第二版,不推荐初学者学习这里的旧版,因此请到下面的地址( http://www.rupeng.com/forum/forum-52-1.html )学习第二版。

教学视频录像(在线非清晰版):


看清晰版请下载:



如鹏电骡下载站:http://www.verycd.com/topics/2800166/

板书:
1、MingW就是一个C/C++的编译器。
编译器和编辑器:编译器其实就是把源代码编译成目标代码的程序;Tc就是一个编辑器:能在里边敲代码,高亮显示,自动提示。
2、
C-Free里边可以运行、也可以调试。设置断点很简单,就是在要设置断点的代码行前边点击一下鼠标,有了一个红色小点就说明设置好了断点。
3、控制台程序的入口是mainWin32程序的入口是WinMain
4、以前用TuborC的同学会问“什么叫工程?”。在以前大家用TurboC写的程序一般也就是一个文件,但是用C语言写大程序的时候不可能把所有的代码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些问题的一个集合。)在“工程名”中写入你为这个工程取的名字,最好有一定意义。
5、Windows程序的骨干代码:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

return 0 ;

}

6、
Windows的世界问好
1MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
         第一个参数暂时不讲;第二个是正文;第三个是标题(Caption);第四个是类型。

MB_OK
就是表示有一个OK按钮【确定】)

TEXT
是一个宏,当字符串中有中文的时候最好用TEXT来包围这个字符串,虽然不使用TEXTVC6中没问题,但是在VC7中有问题,而且微软也建议使用TEXT宏,因此在涉及到中文的场合要使用它。他的作用就是把中文转化成不会乱码的格式。(暂时这么认为)。_T("问好"),其实_T只是TEXT的一个缩写而已。而且_T在有的低版本里不识别。TEXT()低版本也识别。
         换个样子:

MessageBox(NULL, TEXT("
世界你好"), TEXT("你好"),MB_OKCANCEL);
可从设置希望在对话框中显示的按钮:
#define MB_OK

0x00000000L

#define MB_OKCANCEL
0x00000001L

#define MB_ABORTRETRYIGNORE
0x00000002L

#define MB_YESNOCANCEL
0x00000003L

#define MB_YESNO
0x00000004L

#define MB_RETRYCANCEL
0x00000005L

也可以设置对话框中显示的图标:
#define MB_ICONHAND
0x00000010L

#define MB_ICONQUESTION
0x00000020L

#define MB_ICONEXCLAMATION
0x00000030L

#define MB_ICONASTERISK
0x00000040L

比如:MessageBox(NULL, TEXT("世界你好") ,TEXT("你好"), MB_ICONQUESTION);
2)可是如果我想显示“确定、取消”按钮的时候同时使用问号图标呢?
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL| MB_ICONQUESTION);
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),
MB_ABORTRETRYIGNORE | define MB_ICONEXCLAMATION);
(3)思考:
到这一步如果你只是在背诵“第一组和第二组中间放一个竖线就可以实现两种效果的组合形式”,那么你未来只会成为一个代码工人。我们要思考一下其背后的原理。
首先说“|”是什么意思?“|”是位运算里的“或”运算,只有对应的两个二进位有一位为1时,结果位才为1 ,否则为0MB_OK、MB_OKCANCEL等的低四位不同,但是高位永远为0;MB_ICONHANDMB_ICONQUESTION等的低5至第8位不同,而其他位永远为0。这样“MB_OK、MB_OKCANCEL”组的数值与“MB_ICONHANDMB_ICONQUESTION”组的数值进行或运算后能分别保留各自的部分,也就是在结果值中同时体现两组的取值。

拿到1000010以后怎么判断是不是和0000010或运算来的?
1000010
0000010 &
======
0000010

1000011
0000010 &
=======
0000010


这种风格叫“掩码”,在Windows编程中这种用法会经常用到。
大家想像一下MessageBox的内部实现是怎么样的?
if((mode& MB_OK)== MB_OK)
{

//
显示OK按钮
}
if((mode&
MB_ICONQUESTION)== MB_ICONQUESTION)
{

//
显示问好
}
itoaatoi定义在stdlib.h中。
4)默认按钮
         为什么要有默认按钮:一个方便用户,不用思考,直接点回车就可以选择默认按钮;防止用户误操作,默认的按钮应该是最优选的按钮。“是否保存文件?”默认应该是“确定”,“是否发射导弹?”默认应该是“取消”。

         还可以指定哪个按钮是默认按钮,猜一下这些选项的取值的特征是什么?
#define
MB_DEFBUTTON1
0x00000000L
#define
MB_DEFBUTTON2
0x00000100L
#define
MB_DEFBUTTON3
0x00000200L
#define
MB_DEFBUTTON4
0x00000300L
示例代码:
MessageBox(NULL, TEXT("
你是人吗?"), TEXT("火星人"), MB_YESNO | MB_ICONQUESTION| MB_DEFBUTTON2);
5)返回值

MessageBox
是有返回值的,返回值为用户点击的按钮:
#define IDOK
1

#define IDCANCEL
2

#define IDABORT
3

#define IDRETRY
4

#define IDIGNORE
5

#define IDYES
6

#define IDNO
7

代码:

int ret = MessageBox(NULL, TEXT("
你是人吗?"), TEXT("火星人"),
MB_YESNO | MB_ICONQUESTION);

if(ret==IDYES)


{


MessageBox(NULL, TEXT("
火星人你好"), TEXT("问好"),MB_OK);

}


else


{


MessageBox(NULL, TEXT("
欢迎回家来"), TEXT("问好"),MB_OK);

}

7、课后作业:自己动手写恶搞程序。
1)运行以后弹出询问对话框(有【是】、【否】两个按钮,默认选择【否】按钮,以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“你看你就不像好人,点击【确定】开始格式化C盘!”;如果点击【否】,则弹出对话框(有【重试】、【取消】两个按钮)“尝试把你变成好人失败,是否重试?”。
2)自己发挥完善上边的恶搞程序。









原帖由 chenjie88625 于 2009-10-21 20:30 发表

#include
int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       PSTR szCmdLine,
       int iCmdShow)
{
int m = MessageBox(NULL,
  TEXT("你是个大笨蛋吗?"),
  TEXT ...



你的逗号错了 应该是英文符号“,”而不是“,” 你的代码里面有中文逗号符号 所以编译器会报错。
1

评分人数

子供の頃みたく
透明な心
どこに閉じ込めちゃったろう…

TOP

嗯,今天刚开始学,也来交个作业!
 
#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
    int i=1;
    int r = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("注意"),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);

    if (r == IDYES)
    {
           MessageBox(NULL,TEXT("一看你就不像是好人,按【确定】开始格式化C盘!"),TEXT("惩罚"),MB_OK|MB_ICONHAND);
    }
   else
   {
           MessageBox(NULL,TEXT("嗯,你很诚实,让我来把你变成好人吧!#$%^&*"),TEXT("赏赐"),MB_OK|MB_ICONINFORMATION);
           while (i<10)
           {
                    if (MessageBox(NULL,TEXT("尝试把你变成好人失败!重试?"),TEXT("错误"),MB_RETRYCANCEL|MB_ICONSTOP) == IDCANCEL)
                   {
                           MessageBox(NULL,TEXT("不准走,我一定要把你变成好人!"),TEXT("继续"),MB_OK);
                   }
                     
                   i++;

                   if (i == 10)
                   {
                           MessageBox(NULL,TEXT("好吧,我放弃了,你走吧!"),TEXT("失败"),MB_OK);
                   }
           }
   }
  
   return 0 ;
}
1

评分人数

TOP

#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
   int r=MessageBox(NULL,TEXT("你是好人吗?"),TEXT("问话!"),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);
      if(r==IDYES)
         {MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化C盘!"),TEXT("说谎!"),MB_OK|MB_ICONEXCLAMATION);}
      else
         {int t=MessageBox(NULL,TEXT("算你识相!"),TEXT(""),MB_RETRYCANCEL);
     while(t==IDRETRY)
           {t=MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("再问"),MB_RETRYCANCEL);}
   }
  
         return 0 ;
}
1

评分人数

TOP

迟到的作业


  1. #include <windows.h>

  2. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
  3. {
  4.     while(1)
  5.     {
  6.         if (MessageBox(NULL,TEXT("你是好人吗?"),TEXT("问题"),MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
  7.         {
  8.             MessageBox(NULL,TEXT("撒谎!一看你就不是好人,点击【确定】开始格式化C盘!"),TEXT("警告"),MB_OK | MB_ICONWARNING);
  9.             return 0;
  10.         }/*点击是则提示撒谎,格式化C盘,然后结束程序*/
  11.         else
  12.         {
  13.             if(MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("劝告"),MB_RETRYCANCEL | MB_ICONQUESTION) == IDRETRY)
  14.             {
  15.                 continue;
  16.             }/*点是就会继续做while循环*/
  17.             else
  18.             {
  19.               if(MessageBox(NULL,TEXT("不想做好人!立即格式化C盘!!\n格式化进行中..."),TEXT("警告"), MB_OK|MB_ICONWARNING)==IDOK)
  20.       {
  21.       MessageBox(NULL,TEXT("格式化进行中请勿进行其它操作!"),TEXT("错误"),MB_OK|MB_ICONERROR);
  22.       return  0;
  23.              }/*如果点取消就会提示不想做好人,格式化C,警告不要做其它操作后结束*/
  24.           }//结束内else
  25.         }//结束外else
  26.     }//结束while
  27. }//结束程序
复制代码
1

评分人数

TOP

学习了视频教程的第一节,也认真把所有同学的作业看了一遍并编译运行了一次,很有收获。
现在把同学的作业点评一下,希望杨老师不要怪我。:)

39楼实现了关机,
53楼用了函数的递归调用,
54楼可以使显示屏黑屏,
58楼用到了GOTO语句
,68楼些得非常不错,很有逻辑性
76楼第24行 应该改为while(x<=4);
1

评分人数

TOP

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
                   PSTR szCmdLine,int iCmdShow)
{
    int i,j=4;
    i = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("Title"),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);
    if(i == IDYES){
        MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化C盘!"),TEXT("Title"),MB_OK);
    }else{
        while(j == IDRETRY){
            j = MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("Title"),MB_RETRYCANCEL);
        }
    }
    return 0;
}

感谢分享知识 这样算入门了么 hoho
1

评分人数

    • 杨中科: 加油,代码风格不错鹏币 + 1

TOP

也来交作业

#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
while(1)
{
  int a = MessageBox(NULL,TEXT("你是地球人吗?"),TEXT("提问"),MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON1);
  if (a==IDYES)
  {
   int b = MessageBox(NULL,TEXT("确定吗?"),TEXT("确认"),MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON1);
   if (b==IDYES)
   {
    MessageBox(NULL,TEXT("我看你不是,重做"),TEXT("否定"),MB_OK|MB_ICONSTOP);
   }//endif(b==IDYES)   
  }
  else
  {
   int c = MessageBox(NULL,TEXT("想变成地球人吗?"),TEXT("变人"),MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON1);
   if (c==IDYES)
   {
    MessageBox(NULL,TEXT("不可完成的任务"),TEXT("结束"),MB_OK|MB_ICONSTOP);
    return 0;
   }
   else
   {
    MessageBox(NULL,TEXT("何必来这回答问题,判你继续回答!"),TEXT("结束"),MB_OK|MB_ICONSTOP);
   }//endif(c==IDYES)
  }//endif(a==IDYES)
}//endwhile
return 0 ;
}
1

评分人数

    • 杨中科: 加油,代码风格不错鹏币 + 1

TOP

这个板块的名字起得有点那个?是不是可以想个更好的!

TOP

#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
        //MessageBox(NULL,"你是好人吗?","你?",MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION);
        int i=MessageBox(NULL,"你是好人吗?","你?",MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION);
        if(i==IDYES)
        {
         MessageBox(NULL,"哼,一看就知道你不是好人,去死吧,格式化C盘","哼",MB_OK);
  }
  else
  {
  //MessageBox(NULL,"是否想变成一个好人?嘿嘿","好人?",MB_YESNO|MB_ICONHAND);
  int j=MessageBox(NULL,"是否想变成一个好人?嘿嘿","好人?",MB_YESNO|MB_ICONHAND);
        if(j==IDYES)
        {
        int k=MessageBox(NULL,"变成好人失败,是否重试?","噢,失败了",MB_RETRYCANCEL);
        if(k==IDRETRY)
        MessageBox(NULL,"没辙,还是失败,放弃吧","不好意思",MB_OK);
        else
        MessageBox(NULL,"好好做个坏人吧!","再见",MB_OK);
  }
  else
  MessageBox(NULL,"不想做好人?那我格你的C盘了啊!","什么?",MB_OK);
  }
  return 0 ;
}

TOP

to kider:这个名字感觉比较火爆,吸引眼球,呵呵。互联网时代嘛,虽然“干大事”有那啥的意思。

TOP

#include <windows.h>


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    while(1)
    {
        if (MessageBox(NULL,TEXT("你是好人吗?"),TEXT("问题"),MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
        {
            MessageBox(NULL,TEXT("你看你就不像好人,点击【确定】开始格式化C盘!"),TEXT("警告"),MB_OK | MB_ICONWARNING);
            return 0;
        }
        else
        {
            if(MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试?"),TEXT("劝告"),MB_RETRYCANCEL | MB_ICONQUESTION) == IDRETRY)
            {
                continue;
            }
            else
            {
                MessageBox(NULL,TEXT("一点上进心也没有!"),TEXT("结果"), MB_OK);
                return 0;
            }
        }
    }

    return 0;
}

PS:老大你的youku视频我看不了,之前的都能看到。(人品问题?)

TOP

回复 5# VansOS 的帖子

你的程序够狠,不达目的不罢休呀,呵呵。
不能像河科信工他们似的把一切都归结于人品问题呀,呵呵。:)
视频怎么看不了?你说C#、Linux的视频现在都能看,就是这个看不了嘛?它报什么错?

TOP

看完了,在youku网上搜一下如鹏就出现了。 共用网络真是不方便啊,在线看老大直播别人玩游戏又说卡。

TOP

请问下,这个视频教程在哪可以下载吗?

TOP

视频教程尺寸非常大,每节课都要500MB左右,所以暂时没有合适的服务器用来下载。

TOP

海豚天使作业:写的非常好,99分。唯一的改进点就是“if else中的代码哪怕只有一行也要用大括号括起来”。
VansOS:可取之处非常多:注意了“TEXT()”的应用;把while……continue用的很好;符合了“if else中的代码哪怕只有一行也要用大括号括起来”的要求。100分。

TOP

拿到1000010以后怎么判断是不是和0000010或运算来的?
1000010
0000010 与&
======
0000010

1000011
0000010 &
=======
0000011



这个好像有点问题
1000011
0000010 &
=======
0000010


望杨老师解释一下

TOP

确实写错了,应该是
1000011
0000010 &
=======
0000010
立即更正,感谢tomorrow。

TOP

TOP

迟来的作业!

#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    int i,j;
    while ((i=MessageBox(NULL,TEXT("Windows 出现致命错误!"),TEXT("警告"),
                         MB_ICONASTERISK|MB_ABORTRETRYIGNORE|MB_DEFBUTTON3))==IDIGNORE)
    {
        MessageBox(NULL,TEXT("禁止忽略" ),TEXT("警告"),
                   MB_ICONHAND);
    }
    if (i==IDABORT)
    {
        int j=MessageBox(NULL,TEXT("强行终止windows可能会引起致命错误!"),
                         TEXT("警告"),MB_OKCANCEL|MB_ICONEXCLAMATION);
        if (j==IDOK)
        {
            MessageBox(NULL,TEXT("电脑崩溃中~~~请明天在开机!"),TEXT("死机"),
                       MB_OK|MB_ICONSTOP);
        }
        if (j==IDCANCEL)
        {
            i=MessageBox(NULL,TEXT("Windows 已崩溃!"),TEXT("警告"),
                         MB_OK);
        }

    }
    if (i==IDRETRY)
    {
        MessageBox(NULL,TEXT("重试失败,点击确定关机!"),TEXT("确定"),
                   MB_OK|MB_ICONQUESTION);
    }

    return 0 ;
}

TOP

拿到1000010以后怎么判断是不是和0000010或运算来的?
改过之后是这样:
1000010
0000010 与&
======
0000010


1000011
0000010 &
=======
0000010


那也就是说1000011也是和0000010或运算来的喽?杨老师想要举个不是或运算来的例子啊?

TOP

老大里面还有个错误0x00000020=1000000,应该是100000吧,劳累过度了吧— —。

TOP

迟来的作业!~~~我会努力追上课程的!~
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
   
int i = MessageBox(NULL,TEXT("你是好人吗?"),TEXT("不是跟你开玩笑"),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);
  if(i==IDYES)
    {
     while(1)
     {
        int a = MessageBox(NULL,TEXT("坦白吧!谎言是无法演示的"),TEXT("正义的审判"),MB_YESNO|MB_ICONHAND|MB_DEFBUTTON2);
        if(a==IDYES)
         {
          break;
         }
         
     }
    }

   
    int b = MessageBox(NULL,TEXT("哼!看你就不像好人"),TEXT("以为我好骗!"),MB_YESNO|MB_ICONHAND);
       if(b==IDYES)
         {
         int x = MessageBox(NULL,TEXT("你还真敢承认!只有格掉你的C盘了"),TEXT("快坦白从宽"),MB_YESNO);
              if(x==IDYES)
                      {
                       while(1)
                       {
                        MessageBox(NULL,TEXT("无药可救!~接受惩罚吧"),TEXT("小火球!大火球!闪电术!"),MB_OK);
                       }
                      }
                     
                      }
               if(b==IDNO)
         
              {
   
              while(1)
              {
                int  y= MessageBox(NULL,TEXT("尝试把你变成好人失败,是否重试"),TEXT("抉择"),MB_YESNOCANCEL|MB_ICONQUESTION);
              }
            
         
         }
   return 0 ;
}


呵呵,初学者,代码写的可能不够规范!~我会努力的!~~~

TOP

#include int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE preInstance, PSTR comandLind, int icwdShow) { while(1) { int r = MessageBox(NULL, TEXT("你是好人吗?"), TEXT("询问"), MB_YESNO|MB_ICONQUESTION); if( r == IDYES) { int i = MessageBox(NULL, TEXT("你看你就不是好人"), TEXT("回答"), MB_OK|MB_ICONHAND); if(i == IDOK) MessageBox(NULL, TEXT("开始格式化C盘" ),TEXT("行为!"), MB_OK); break; } else { int k = MessageBox(NULL, TEXT("尝试把你变成好人,是否重试?"), TEXT("询问"), MB_RETRYCANCEL); if(k == IDRETRY) continue; else break; } } return 0; }
我现在已经大三了,之前学习的只是语言,写的全都是控制台下的程序,但没学过Windows程序设计,刚来这个网站不久,感觉很好,使我如获珍宝,我会尽快把这十节课认真学完,并实践~祝愿贵网站越办越好

TOP

#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE preInstance,
                   PSTR comandLind, int icwdShow)
{
while(1)
{
int r = MessageBox(NULL, TEXT("你是好人吗?"), TEXT("询问"), MB_YESNO|MB_ICONQUESTION);
if( r == IDYES)
{
  int i = MessageBox(NULL, TEXT("你看你就不是好人"), TEXT("回答"), MB_OK|MB_ICONHAND);
  if(i == IDOK)
  MessageBox(NULL, TEXT("开始格式化C盘" ),TEXT("行为!"), MB_OK);
  break;
}
else
{
  int  k = MessageBox(NULL, TEXT("尝试把你变成好人,是否重试?"), TEXT("询问"), MB_RETRYCANCEL);
  if(k == IDRETRY)
  continue;
  else
  break;
}
}
return 0;
}

奇怪,复制也会出错~

TOP

学这个东西只怕不是简单的C语言基础知识就能学懂的吧!!

TOP

格式化好像不行,有没有可以让电脑自动关机重启的代码呀???嘻嘻。。。
未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要!

TOP

原帖由 zhangna_307 于 2009-3-4 23:04 发表
格式化好像不行,有没有可以让电脑自动关机重启的代码呀???嘻嘻。。。

在论坛里好好寻寻宝吧,已经有人实现了。

TOP

这是我寒假时写的定时开关机,象征性的要求个注册码,其实是GetDiskFreeSpaceEx的C盘64位总大小的高32位乘以2加13,然后乘以117在加19,其实原意只是为我的机器凑个2008整数。遗憾的是没学会文件的读写,每次都得输入
  1. ULARGE_INTEGER nFreeBytesAvailable;
  2.     ULARGE_INTEGER nTotalNumberOfBytes;
  3.     ULARGE_INTEGER nTotalNumberOfFreeBytes;
  4.     GetDiskFreeSpaceEx("C:",&nFreeBytesAvailable,&nTotalNumberOfBytes,&nTotalNumberOfFreeBytes);
  5.     int m,n;
  6.     m =nTotalNumberOfBytes.HighPart*4 +26;
  7.     n= (m*117)/2+19;
  8.     TCHAR cRslt[256];      
  9.     GetDlgItemText(hwnd,IDC_EDT3,cRslt,sizeof(cRslt)/sizeof(TCHAR));
  10.     int k=atoi(cRslt);
  11.           TCHAR iGettimemin[256];
  12.       TCHAR iGettimehour[256];
  13.       TCHAR iGettimesec[256];
  14.       GetDlgItemText(hwnd,IDC_EDTHOUR,iGettimehour,sizeof(iGettimehour)/sizeof(TCHAR));
  15.       GetDlgItemText(hwnd,IDC_EDTMIN,iGettimemin,sizeof(iGettimemin)/sizeof(TCHAR));
  16.       GetDlgItemText(hwnd,IDC_EDTSEC,iGettimesec,sizeof(iGettimesec)/sizeof(TCHAR));
  17.       int itimehour=atoi(iGettimehour)*3600;
  18.    int itimemin=atoi(iGettimemin)*60;
  19.    int itimesec=atoi(iGettimesec)*1;
  20.    int itime = itimehour + itimemin + itimesec;
  21.       TCHAR Ccmdtime[256];
  22.     switch(id)
  23.     {
  24.      case IDC_BTN1:
  25.      {
  26.      if (n==k)
  27.      {
  28.       wsprintf(Ccmdtime,TEXT("cmd.exe /c shutdown -s -t %d"),itime);
  29.       system(Ccmdtime);
  30.      }
  31.      else
  32.      {
  33.       MessageBox(hwnd,TEXT("注册码输入错误或未输入"),TEXT("错误"),MB_OK|MB_ICONSTOP);
  34.      }
  35.       break;
  36.      }
  37.      case IDC_BTN2:
  38.      {
  39.       system("cmd.exe /c shutdown -a");
  40.       break;
  41.      }
  42.      case IDC_BTN3:
  43.      {
  44.       if (n==k)
  45.       {
  46.        TCHAR getpcname[256];
  47.        GetDlgItemText(hwnd,IDC_EDT1,getpcname,sizeof(getpcname)/sizeof(TCHAR));
  48.        TCHAR killpc[256] = TEXT("cmd.exe /c shutdown -s -m \\");
  49.     lstrcat(killpc,getpcname);
  50.     system(killpc);
  51.       }
  52.       else
  53.       {
  54.        MessageBox(hwnd,TEXT("注册码输入错误或未输入"),TEXT("错误"),MB_OK|MB_ICONSTOP);
  55.       }
  56.       break;
  57.      }
  58.      case IDC_BTN4:
  59.      {
  60.       if(n==k)
  61.       {
  62.        wsprintf(Ccmdtime,TEXT("cmd.exe /c shutdown -r -t %d"),itime);
  63.        system(Ccmdtime);
  64.       }
  65.       else
  66.       {
  67.        MessageBox(hwnd,TEXT("注册码输入错误或未输入"),TEXT("错误"),MB_OK|MB_ICONSTOP);
  68.       }
  69.       break;
  70.      }
  71.         default:break;
  72.     }
  73. }
复制代码

其实真正实现命令的是cmd.exe下的shutdown命令。

shutdown.rar (37.61 KB)

在学Win CE,有没有人推荐下好的书

TOP

返回列表