Механизмы параллельных вычислений в Windows. Разработка справочной системыРефераты >> Программирование и компьютеры >> Механизмы параллельных вычислений в Windows. Разработка справочной системы
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"Х");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"вертикальная линия");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"ромб");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"Т");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"_|_");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"Н");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"стрелка вверх");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"стрелка вниз");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"нижний левый прямоугольный треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"нижний правый прямоугольный треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"верхний левый прямоугольный треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"верхний правый прямоугольный треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"квадрат с диагональю верх лево - низ право");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"квадрат с диагональю низ лево - верх право");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"квадрат с крестом");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"левый треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"правый треугольник");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"стрелка влево");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"стрелка вправо");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"круг");
SendDlgItemMessage(hDlg,ID,LB_ADDSTRING,0,(LPARAM) (LPCTSTR)"прямоугольник без углов");
}
LRESULT CALLBACK Select(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int i;
int index[27];
char buf[256];
switch (message)
{
case WM_INITDIALOG:
hDlgSelect = hDlg;
// SendDlgItemMessage(hDlg, IDC_LISTBOX2, LB_RESETCONTENT, 0, 0);
fillb(hDlg,IDC_LISTBOX2);
return TRUE;
case WM_CLOSE:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_OK2:
for(i=0;i<27;i++) index[i] = -1;
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_SETSEL, (WPARAM) TRUE, (LPARAM) (UINT) -1);
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_GETSELITEMS, (WPARAM) 27, (LPARAM) (LPINT) index);
SendDlgItemMessage(hQryDlgBox, IDC_LISTBOX1, LB_RESETCONTENT, 0, 0);
for(i=0;i<SendDlgItemMessage(hDlg, IDC_LISTBOX3,LB_GETSELCOUNT,0,0);i++){
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_GETTEXT, (WPARAM) index[i], (LPARAM) (LPCTSTR) buf);
SendDlgItemMessage(hQryDlgBox, IDC_LISTBOX1, LB_ADDSTRING, 0,(LPARAM) (LPCTSTR) buf);
};
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case IDC_CLEAR:
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hQryDlgBox, IDC_LISTBOX1, LB_RESETCONTENT, 0, 0);
return TRUE;
case IDC_ADD:
for(i=0;i<27;i++) index[i] = -1;
SendDlgItemMessage(hDlg, IDC_LISTBOX2, LB_GETSELITEMS, (WPARAM) 27, (LPARAM) (LPINT) index);
for(i=0;i<SendDlgItemMessage(hDlg, IDC_LISTBOX2,LB_GETSELCOUNT,0,0);i++){
SendDlgItemMessage(hDlg, IDC_LISTBOX2, LB_GETTEXT, (WPARAM) index[i], (LPARAM) (LPCTSTR) buf);
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_ADDSTRING,0,(LPARAM) (LPCTSTR) buf);
};
SendDlgItemMessage(hDlg, IDC_LISTBOX2, LB_SETSEL, (WPARAM) FALSE, (LPARAM) (UINT) -1);
return TRUE;
case IDC_DELETE:
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_GETSELITEMS, (WPARAM) 27, (LPARAM) (LPINT) index);
for(i=0;i<SendDlgItemMessage(hDlg, IDC_LISTBOX3,LB_GETSELCOUNT,0,0);i++){
SendDlgItemMessage(hDlg, IDC_LISTBOX3, LB_DELETESTRING, (WPARAM) index[i], 0);
};
return TRUE;
}
break;
}
return FALSE;
}
void PaintShapes(HWND hDlg)
{
const int x = 350;
const int y = 150;
int index[27];
char buf[256];
static COLORREF cr=RGB(200,200,200 );//цвет фона
HPEN hPen, hPenOld; //перо
LOGBRUSH lb;
HBRUSH hBrush; //кисть
HBRUSH hOldBrush;
//создание контекста
lb.lbStyle=PS_SOLID;
lb.lbColor=RGB(255,0,0);
//создание пера
hPen=ExtCreatePen(PS_GEOMETRIC | PS_SOLID,1,&lb,0,NULL);
hPenOld=HPEN(SelectObject(hdc,hPen));
//создание кисти
hBrush=CreateSolidBrush(cr);
hOldBrush=HBRUSH(SelectObject(hdc,hBrush));
flag = false;
SendDlgItemMessage(hDlg, IDC_LISTBOX1, LB_GETSELITEMS, (WPARAM) 27, (LPARAM) (LPINT) index);
for(int i=0;i<SendDlgItemMessage(hDlg, IDC_LISTBOX1,LB_GETSELCOUNT,0,0);i++){
SendDlgItemMessage(hDlg, IDC_LISTBOX1, LB_GETTEXT, (WPARAM) index[i], (LPARAM) (LPCTSTR) buf);
if(strcmp(buf,"горизонтальная линия") == 0){
MoveToEx(hdc, x-50, y, NULL);
LineTo(hdc, x+50, y);
flag = true;
};
if(strcmp(buf,"квадрат") == 0){
MoveToEx(hdc, x-50, y-50, NULL);
LineTo(hdc, x+50, y-50);
LineTo(hdc, x+50, y+50);
LineTo(hdc, x-50, y+50);
LineTo(hdc, x-50, y-50);
flag = true;
};
if(strcmp(buf,"шестиугольник") == 0){
MoveToEx(hdc,x-50,y,NULL);
LineTo(hdc,x-25,y-50);
LineTo(hdc,x+25,y-50);
LineTo(hdc,x+50,y);
LineTo(hdc,x+25,y+50);
LineTo(hdc,x-25,y+50);
LineTo(hdc,x-50,y);
flag = true;
};
if(strcmp(buf,"восьмиугольник") == 0){
MoveToEx(hdc,x-50,y-25,NULL);
LineTo(hdc,x-25,y-50);
LineTo(hdc,x+25,y-50);
LineTo(hdc,x+50,y-25);
LineTo(hdc,x+50,y+25);
LineTo(hdc,x+25,y+50);
LineTo(hdc,x-25,y+50);
LineTo(hdc,x-50,y+25);
LineTo(hdc,x-50,y-25);
flag = true;
};
if(strcmp(buf,"крест") == 0){
MoveToEx(hdc,x,y-50,NULL);
LineTo(hdc,x,y+50);
MoveToEx(hdc,x-50,y,NULL);
LineTo(hdc,x+50,y);
flag = true;
};
if(strcmp(buf,"Х") == 0){
MoveToEx(hdc,x-50,y-50,NULL);
LineTo(hdc,x+50,y+50);
MoveToEx(hdc,x-50,y+50,NULL);
LineTo(hdc,x+50,y-50);
flag = true;
};
if(strcmp(buf,"вертикальная линия") == 0){
MoveToEx(hdc, x, y-50, NULL);
LineTo(hdc, x, y+50);
flag = true;
};
if(strcmp(buf,"ромб") == 0){
MoveToEx(hdc,x-50,y,NULL);
LineTo(hdc,x,y-50);
LineTo(hdc,x+50,y);
LineTo(hdc,x,y+50);
LineTo(hdc,x-50,y);
flag = true;