这几天的程序心得

网不好,对这几天的windows C做个总结吧,呵呵,忘了多长时间了,今天是突然灵感突发,把那个getcursel解决了,唉,还是自己水平不行啊,问题是在哪里呢?事情得一件一件的做,怎么你想点击一下鼠标做很多事啊,哈哈哈哈,对程序的高度不理解,顺序执行都不行!!所以,要么在弄一个鼠标事件,不会弄,你就只能做button!
另外一个是那个分割字符串的问题,还有函数全局与局部的问题,一样暴露出了自己在程序设计,在基础方面的大问题,以后要多多写写那些经典程序了!


要继续加强基础学习,加强程序逻辑练习!

#include <windows.h>
#include <windowsx.h>
#include "main.h"
#include "dialogs.h"
#include "resource.h"
#include  <mmsystem.h>
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        //BEGIN MESSAGE CRACK
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
        HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
        //END MESSAGE CRACK
    }

    return FALSE;
}


//  Main_OnInitDialog
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    // Set app icons
    HWND  hwndlist = GetDlgItem(hwnd,IDC_LSTMUSIC);
    ListBox_AddString(hwndlist,"欢迎来到我的世界");
   
    HICON hIcon = LoadIcon((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE) ,MAKEINTRESOURCE(IDI_ICONAPP));
    SendMessage(hwnd, WM_SETICON, TRUE,  (LPARAM)hIcon);
    SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)hIcon);
   
    //
    // Add initializing code here
    //
   
    return TRUE;
}


//  Main_OnCommand
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
         OPENFILENAME ofn;
   char szFile[MAX_PATH];
   TCHAR szPath[MAX_PATH];
   TCHAR szFileName[80*MAX_PATH];
   TCHAR* p;
   int nLen;
    int i,k;
   ZeroMemory(&ofn,sizeof(ofn));
   ofn.lStructSize = sizeof(ofn);
   ofn.lpstrFile = szFile;
   ofn.lpstrFile[0] = TEXT('/0');
   ofn.nMaxFile = sizeof(szFile);
   ofn.lpstrFilter = TEXT("ALL/0*.*/0MP3/0*.mp3/0");
   ofn.nFilterIndex = 1;
   ofn.lpstrFileTitle = NULL;
   ofn.nMaxFileTitle = 0;
   ofn.lpstrInitialDir = NULL;
   ofn.hwndOwner = hwnd;//自学能力、探索能力、猜测能力
   ofn.Flags = OFN_EXPLORER |OFN_ALLOWMULTISELECT;
   if (GetOpenFileName(&ofn))
   {
         lstrcpyn(szPath, szFile, ofn.nFileOffset );
      //lstrcpyn(szPath, szOpenFileNames, ofn.nFileOffset );
      //当只选了一个文件时,下面这个NULL字符是必需的.
      //这里不区别对待选了一个和多个文件的情况
      szPath[ ofn.nFileOffset ] = '/0';
      nLen = lstrlen(szPath);
     
      if( szPath[nLen-1] != '//' )   //如果选了多个文件,则必须加上'//'
      {
       lstrcat(szPath, TEXT("//"));
      }
     
      p = szFile + ofn.nFileOffset; //把指针移到第一个文件
     
      ZeroMemory(szFileName, sizeof(szFileName));
      while( *p )
      {  
       lstrcat(szFileName, szPath);  //给文件名加上路径 
       lstrcat(szFileName, p);    //加上文件名 
       lstrcat(szFileName, TEXT("/n")); //换行  
       p += lstrlen(p) +1;     //移至下一个文件
      
      }
      HWND  hwndlist = GetDlgItem(hwnd,IDC_LSTMUSIC);
      int j,m;
      j=0;
      for(i=1;i<80*MAX_PATH;i++)
      {
         if(szFileName[i]=='G'||szFileName[i]=='/0')
         {
          TCHAR FileName[256];
          for(k=j,m=0;k<i;k++,m++)
          {
            
                FileName[m]=szFileName[k];
          }
          j=i;
          FileName[m+1]='/0';
        ListBox_AddString(hwndlist,FileName);
         }
      }
   
   
        break;
        case IDC_CANCEL:
                  TCHAR muname[256];
      TCHAR shortname[256];
      TCHAR playname[256];
      HWND  hwndlist1 = GetDlgItem(hwnd,IDC_LSTMUSIC);
      int index = ListBox_GetCurSel(hwndlist1);
      ListBox_GetText(hwndlist1,index,muname);
      SetDlgItemText(hwnd,IDC_EDTMUSIC,muname);
      MessageBox(hwnd,muname,"nihai",MB_OK);
      GetShortPathName(muname,shortname,sizeof(shortname));
      wsprintf(playname,"play %s",shortname);
      mciSendString(playname,"",0,NULL);
          
        break;
        default:break;
   }
    }

}


//  Main_OnClose
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值