坑kis吧 关注:5贴子:580

C/C++学习笔记

只看楼主收藏回复



IP属地:陕西1楼2015-11-11 11:00回复

    原帖地址:http://bbs.fishc.com/thread-45279-1-1.html


    IP属地:陕西2楼2015-11-11 11:07
    回复
      【文件打开方式】
      rt-只读打开文本文件
      wt-只写打开文本文件
      at-追加打开文本文件,并在末尾写数据。
      rb-只读打开二进制文件
      wb-只写打开二进制文件
      ab-追加打开二进制文件,并在末尾写数据。
      rt+-读写打开文本文件,允许读写
      wt+-读写打开或建立一个文本文件,允许读写。
      at+-读写打开一个文本文件,允许读或在文件末尾追加数据。
      rb+-读写打开二进制文件,允许读写
      wb+-读写打开或建立一个二进制文件,允许读写。
      ab+-读写打开一个二进制文件,允许读或在文件末尾追加数据。
      r+w:可读写文件(具体是二进制文件还是文本文件要看打开文件的扩展名而定)
      例如:fp=fopen(“C.dat”,“w+b”)
      文件打开模式只有r、w、a、t、b、+、这六个字符拼成。


      IP属地:陕西3楼2015-11-11 11:10
      收起回复
        【EOF】
        EOF与NULL一样为C/C++中某个特殊的值,大部分情况下为-1。
        若要求输入EOF才能结束键入,不同系统键入的值不一样,我的这台机子得按ctrl+D才能停止键入。
        参考网站:http://bbs.csdn.net/topics/390376637


        IP属地:陕西4楼2015-11-11 16:28
        回复
          大雄A梦~~

          函数调用形式~:int GetDlgItemText( int nID, LPTSTR lpStr, int nMaxCount ) const;
          参数说明:
          nID :Specifies the integer identifier of the control whose title is to be retrieved.
          lpStr :Points to the buffer to receive the control title or text.
          nMaxCount :Specifies the maximum length (in bytes) of the string to be copied to lpStr. If the string is longer than nMaxCount, it is truncated.


          IP属地:陕西5楼2015-11-25 10:10
          收起回复
            一个问题:在一个类中如何对另一个类中的成员变量赋值?
            我需要通过对话框B来修改对话框A下的成员变量的值,就是修改音乐名称。


            IP属地:陕西6楼2015-11-28 21:05
            回复
              算是有比较大的进展,不过依然有些地方阻塞。
              1、先来解释一下楼上的问题,首先我参考了这个贴的第二部分:
              http://jingyan.baidu.com/article/7082dc1cad7133e40b89bd52.html
              即定义一个CPublic类,然后所有的全局变量都放在里面。
              注意:
              ·在头文件中声明数组:在class CPublic里面;【static char a[21];】
              ·在源文件中定义数组:与构造函数互相独立,且不加static;【char CPublic::a[21];】
              ·在别的类中使用:CPublic::a(给数组赋值字符串为:【strcpy(CPublic::a,"美丽的回忆.wav");】)
              感觉这样说还是不够清楚,建议你忘了再回去看这个程序。
              2、调了一晚上其实只是一个小问题,总之以后ID号不允许想当然,必须从Properties复制。用一个错误的ID号程序当然崩溃了。
              3、目前遇见的问题事实上还是没有改变数组a中的值(这是因为如果改变了,那么后来响起的音乐就应该是新的音乐了,但是这里还是默认音乐)
              解决方法初步设想:明天重新写个简单的程序,在程序的一开始便出现音乐选择,看成不成。


              IP属地:陕西7楼2015-11-28 22:30
              回复
                【简单的音乐选择程序构想】
                1,建立基于对话框的工程,一开始的页面便是选择音乐对话框A;
                2,选择好后弹出一个对话框B,然后B上有个按钮,按一下,响起刚才选择的音乐。


                IP属地:陕西来自Android客户端8楼2015-11-28 23:19
                回复
                  【经验:设置连续两次弹出对话框,发现数组中的值会被又改回去】
                  1、接着上次的来。
                  首先8楼提出的设想已经完全实现了,一个更加直白地看到全局变量数组中内容究竟为何的方法是创建一个对话框,令显示数组中的内容:
                  MessageBox(CPublic::a);
                  我们就能清楚地看到此时数组中的内容是不是被改过了、被改成什么了,而没必要每次都把音乐听一遍才能发现到底有没有对数组修改成功。
                  (说到这里其实还可以设置断点然后debug看看数组之中的内容诶,不过暂时不会用这个方法,等这个程序写完了再看看孙鑫是怎么设置断点的)
                  2、接下来在弹出对话框之后播放音乐,第一次单纯设置挑音乐是成功的没问题。
                  接下来把这个程序嫁接到Clock这个项目中去,发现如果不开启时钟是没问题的,也能实现挑选音乐的功能,但是一旦开启时钟,那么选了音乐后会出现这种情况:有一瞬间音乐被按照用户的意思改了,但是下一秒又被改成默认音乐了。
                  这一点我们如何证明呢?可以设定让程序连续弹出两个对话框提示:

                  打开时钟后进行更改音乐:其中弹出的第一个对话框显示数组已经按照预期被改变,而第二个对话框则显示又被改成原来的了。
                  不打开时钟直接更改音乐:两个对话框显示的内容一致。
                  很显然问题出现在“打开时钟”这个动作,因为打开时钟后也有个修改数组内容的指令,只是不明白为何明明修改完了但是却不允许让别人改(或者说它发现数组内容被更改后又跳出来把数组改回去)这里让我再研究一下。


                  IP属地:陕西9楼2015-12-04 10:53
                  收起回复
                    【细化:判断数组内容为空了再进行赋值】
                    果然是在时钟启动后载入默认音乐这里有问题,证据是:只要把OnTimer中那句给数组赋值的语句屏蔽掉就能正常更改音乐了(但是默认音乐也没了)。
                    或许是因为太粗的缘故,总之不要不分青红皂白赋值,而要进行一个判断,看数组中有没有内容然后再进行赋值——解决方法:对全局数组a进行判断,看数组a里有没有内容,若有则什么都不做;若数组内容为空再进行默认音乐赋值。
                    现在的问题是怎样判断数组内容为空?


                    IP属地:陕西10楼2015-12-04 11:16
                    回复
                      【下一步构想】
                      1,对于music对话框在结束选择后予以销毁;
                      2,可以让提示载入什么音乐的对话框内容更加丰富,不过我觉得这一步可以先不管,简单点好;
                      3,看是否能判断当前音乐播放与否,能的话再来个if语句,若是播放中被掐断则播放新的音乐,否则不要播放。


                      IP属地:陕西来自Android客户端12楼2015-12-04 12:08
                      收起回复
                        【改时间构想】
                        1,取本机电脑系统时间作为打开后的默认时间;
                        2,方法一:
                        CPublic中设定全局变量,让用户通过编辑框更改变量中时针跟分针中的值(跟改音乐差不多);
                        3,方法二:
                        在对话框Time中添加向上、向下按钮,然后按一下向上按钮时间+1,按一下向下按钮时间-1,时针分针都这样。


                        IP属地:陕西来自Android客户端13楼2015-12-04 12:13
                        收起回复
                          VK(=Virtual Key)
                          以VK_作为前缀的意思是,检测键盘上用户是否按下了该键


                          IP属地:陕西14楼2015-12-06 16:34
                          收起回复
                            CClientDC:
                            The CClientDC class is derived from CDC and takes care of calling the Windows functions GetDC at construction time and ReleaseDC at destruction time.
                            (也就是说,还是相当于CDC类,但同时还集成进去GetDC以及ReleaseDC这两个动作。关于CDC,详见《VC++深入详解》115页)


                            IP属地:陕西15楼2015-12-08 19:01
                            回复
                              明确m_hWnd是哪个窗口的窗口句柄:


                              IP属地:陕西16楼2015-12-08 19:09
                              收起回复