网不好,对这几天的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);
}