sprintf(name,"%s","");
return 0;}
/* ##################################### */
/* ### ÄÈÀËÎÃÈ - ÎÁÐÀÁÎÒÊÀ ÑÎÎÁÙÅÍÈÉ ### */
LRESULT CALLBACK addTrackDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
int id=LOWORD(wParam);
static int ind=lParam,pos=0;
int i;
switch (uMsg)
case WM_INITDIALOG:
ind=lParam;
for (i=0;i<dwWkCount;i++)
if (WkRec[i].ind==ind)
pos = i;
SetDlgItemText(hwndDlg,IDC_EDIT_TRACK,WkRec[pos].cTrack);
SetDlgItemText(hwndDlg,IDC_EDIT_SINGER,WkRec[pos].cSinger);
SetDlgItemText(hwndDlg,IDC_EDIT_DATE,WkRec[pos].cDate);
return FALSE;
break;
case WM_COMMAND:
switch (id)
case IDC_OK:
GetDlgItemText(hwndDlg,IDC_EDIT_TRACK,WkRec[pos].cTrack,100);
GetDlgItemText(hwndDlg,IDC_EDIT_SINGER,WkRec[pos].cSinger,30);
GetDlgItemText(hwndDlg,IDC_EDIT_DATE,WkRec[pos].cDate,20);
EndDialog(hwndDlg,0);
case IDC_CANCEL:
EndDialog(hwndDlg,1);
}
default:
int GetMaxInd()
int maxind=0;
for (int i=0;i<dwWkCount;i++)
if (WkRec[i].iNum>maxind)
maxind=WkRec[i].iNum;
return maxind;
LRESULT CALLBACK addDiskDlgProc(HWND hwndDlg,UINT uMsg,
WPARAM wParam,LPARAM lParam)
SetDlgItemText(hwndDlg,IDC_EDIT_GROUP,WkRec[pos].cGroup);
SetDlgItemText(hwndDlg,IDC_EDIT_ALBUM,WkRec[pos].cDisc);
GetDlgItemText(hwndDlg,IDC_EDIT_GROUP,WkRec[pos].cGroup,50);
GetDlgItemText(hwndDlg,IDC_EDIT_ALBUM,WkRec[pos].cDisc,30);
WkRec[pos].iNum=GetMaxInd()+1;
LRESULT CALLBACK AboutDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
switch(uMsg)
case WM_INITDIALOG: {return TRUE;};
switch(LOWORD(wParam)){
case IDOK:{
EndDialog(hDlg,0);
return TRUE;}}
return(FALSE);
return(TRUE);
UINT AddNewItem(UINT iType,UINT iParent)
//Ñîçäàåì âðåìåííóþ ðàáî÷óþ ñòðóêòóðó
WorkRecord *temp;
temp=new WorkRecord[dwWkCount];
UINT max=WkRec[0].ind;
//Êîïèðóåì âî âðåìåííóþ ñòðóêòóðó ðàáî÷óþ. Íàõîäèì ïîñëåäíèé èíäåêñ
// â ðàáî÷åé ñòðóêòóðå
if (max<WkRec[i].ind)
max=WkRec[i].ind;
temp[i]=WkRec[i];
// Ïåðåñîçäàåì ðàáî÷óþ ñòðóêòóðó ñ íîâûì ðàçìåðîì
delete [] WkRec;
WkRec=new WorkRecord[++dwWkCount];
//Êîïèðóåì çàïèñè èç âðåìåííîé ñòðóêòóðû â ðàáî÷óþ
for (i=0;i<dwWkCount-1;i++)
//ZeroMemory(&WkRec[i],sizeof(WorkRecord));
WkRec[i]=temp[i];
// Î÷èùàåì ïîñëåäíèé "íîâûé" ýëåìåíò ðàáî÷åé
// ñòðóêòóðû è çàíîñèò çíà÷åíèÿ ïî óìîë÷àíèþ
ZeroMemory(&WkRec[dwWkCount-1],sizeof(WorkRecord));
WkRec[dwWkCount-1].ind=++max;
WkRec[dwWkCount-1].iType=iType;
WkRec[dwWkCount-1].indParent=iParent;
delete []temp;
return max;
BOOL DeleteRec(int index)
// Ïðîâåðÿåì åñòü ëè ñâÿçàííûå çàïèñè
if (WkRec[i].indParent==index)
MessageBox(NULL,"Óäàëèòå ñâÿçàííûå äàííûå","Îøèáêà",MB_OK);
// Èùåì ïîçèöèþ óäàëÿåìîãî ýëåìåíòà
int pos;
if (WkRec[i].ind==index)
pos=index;
// Åñëè óäàëÿåìûé ýëåìåíò íå ïîñëåäíèé,
//òî ïåðåíîñèì ïîñëåäíèé íà ìåñòî óäàëÿåìîãî.
dwWkCount--;
if (pos!=dwWkCount)
WkRec[pos] = WkRec[dwWkCount];
// Êîïèðóåì çàïèñè âî âðåìåííóþ ñòðóêòóðó
for ( i=0;i<dwWkCount;i++)
//Óäàëÿåò ðàáî÷èå çàïèñè
// Ñîçäàåò íîâûå ðàáî÷èå çàïèñè
WkRec=new WorkRecord[dwWkCount];
return TRUE;
void MakeTree()
TV_DeleteAll();
WkRec[0].ind=0;
WkRec[0].indParent=0;
WkRec[0].iType=5;
WkRec[0].hTree= TV_InsertItem("Êîëëåêöèÿ", HANDLES.hWndTreeView, TVI_ROOT, 0,0);
HTREEITEM parent=WkRec->hTree;
// Èíèöèàëèçàöèÿ äèñêîâ
for (int i=1;i<dwWkCount;i++)
if (WkRec[i].iType==0)
WkRec[i].hTree=TV_InsertItem(WkRec[i].cDisc,
HANDLES.hWndTreeView,parent,1,WkRec[i].ind);
Ñòðàíèöû: 1, 2, 3, 4, 5, 6