LittleHat

我的技术小站

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  0 Posts :: 9 Stories :: 1 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新随笔

最新评论

 这一段时间 调用库文件 一直捆饶着我 好几个问题都卡在这里

很无语~   我家的小老婆 最近耍脾气了?
 
现在终于又能播放声音了,虽然还是比较简单的创建和调用,但是程序里面多了优美的旋律还是让人陶醉  


关于创建音频的几个小细节   音频句柄设置为GLOBAL 可以让音乐在整个程序过程中运行 而不受父消息的影响, 这个问题我提前想到了,所以很顺利.  
    在子窗口中不要加载WM_CLOSE消息  
    记得在主消息中 删除音频句柄  学C++的时候就要养成一个好的习惯就是 NEW 对应着 一个DELETE 还好,自从看过林锐写的书后 我对此还是很敏感的~


    由加载EXE文件想到的:    方法是把EXE转换为二进制 然后写入文件 最后再转换为EXE文件  于是就想能不能加载其他文件格式的
    果然不出所料,同样的想法 , 加载WMA 文件成功了 转为WMA文件后 再MCIWndPlay ()播放文件 这个相当与把WMA和执行文件捆绑在一起了 缺点就是程序必须占用很多资源 这肯定是不提倡的    




    自己实现的简单ANSI文字输入框和一些细节, 早点写完,睡觉去了...

首先必须注意的是几个变量,虽然开始我没在意,但理解却就在这个几个变量中.
int cxChar,cyChar,cxClient,cyClient,cxBuffer,cyBuffer

cxChar 字符的宽
cyChar 字符的高
cxClient 屏幕的宽
cyClient 屏幕的高
cxBuffer 一行能储存多少个字符个数
cyBuffer 一列能储存多少个字符个数
能很好的理解上面四个变量 对于写一个输入文本框就很容易了.

首先当然是初始化了.
SelectObject ( hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
                     CJ_CharSet, 0, 0, 0, FIXED_PITCH, NULL)) ;
          
  GetTextMetrics (hdc, &tm) ;
  cxChar = tm.tmAveCharWidth ;
  cyChar = tm.tmHeight ;

取得字体..  这个用户也可以指定字体  
然后是屏幕大小 和 BUFFER
    cxClient = LOWORD (lParam) ;
    cyClient = HIWORD (lParam) ;

cxBuffer=max(1,cxClient/cxChar)//屏幕长度除字符宽度 就可以获得字符个数了,这个就相当于 求变量的个数了.
cyBuffer=max(1,cyClient/cyChar)//这里用max的道理是 防止cyBuffer为0;

然后是 空间的填充
  pBuffer = (TCHAR *) malloc (cxBuffer* cyBuffer * sizeof (TCHAR)) ;
          
  for (y = 0 ; y < cyBuffer ; y++)
    for (x = 0 ; x < cxBuffer ; x++)
           BUFFER(x,y) = '_' ;  
建立光标 ..这里就省略了
    case VK_LEFT:
      xCaret = max (xCaret - 1, 0) ;
      break ;            
         case VK_RIGHT:
                           xCaret = min (xCaret + 1, cxBuffer - 1) ;
上面是左右键的处理  光标位置-1 与 0比较 来确定光标位置
for (x = cxBuffer ; x >=xCaret ; x--)
      BUFFER (x+1, yCaret)=BUFFER (x , yCaret) ;
学过数组的人 对上面应该很熟悉了,数组的移位 上面是空格键
    for (x = xCaret ; x < cxBuffer - 1 ; x++)
      BUFFER (x, yCaret) = BUFFER (x + 1, yCaret) ;
DEL键

case WM_PAINT:
  hdc = BeginPaint (hwnd, &ps) ;
  SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
       CJ_CharSet, 0, 0, 0, FIXED_PITCH, NULL)) ;
      
  for (y = 0 ; y < cyBuffer ; y++)
   TextOut (hdc, 0, y * cyChar, & BUFFER(0,y), cxBuffer) ;
  DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT))) ;
  EndPaint (hwnd, &ps) ;

绘制代码;//上面这段就有点偷懒了 
posted on 2007-05-11 19:41 小帽子 阅读(100) 评论(1)  编辑 收藏 引用

Feedback

# re: 实现音频播放和一个简单的输入框 2010-05-19 11:50 啊啊
困扰 是这么写的~  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理