Страница: 1 | 2 |
Вопрос: Need HELP вопросы С++ ! :)
Добавлено: 17.12.05 19:31
Автор вопроса: HACKER
1) Компонент Open Dialog (Save Dialog) характеристика, назначение, обзор свойств и методов
(Может хелп у кого есть внятный, или ссылку...)
2) два батона, клик на один рисует 4 круга на форме синего цвета, клик на второй - рисует 3 элипса красного цвета...
Мне ГОРИТ !
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #1
Добавлено: 17.12.05 20:10
Понимаю, понимаю....
Самый надёжный способ добыть то, что тебе надо по всем вопросам программирования на ВБ(и не только ) - очень занимательная (и полезная ) книгаЮ которую легко найти по адресу http://www.citforum.ru/howto/smart-questions-ru.shtml
))))
Номер ответа: 2
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #2
Добавлено: 17.12.05 20:17
Все круги и эллипсы рисуются одной функцией Arc
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 17.12.05 20:31
2 HOOLIGAN
можно пример?
Номер ответа: 4
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #4
Добавлено: 17.12.05 20:46
Вот думаю начнет HOOLIGAN домашнее задание делать, в очередной раз
А если серезно HACKER, возми книгу(она с примерами) Программирование для Windows 95 -Ч. Петзолд. Книжка хоть и старенькая но классика и для начинающих по прежнему лучшая(ИМХО). По ней можно сказать все учились под винду программировать. Там как раз С, правда без ++, но это не суть важно.
В сети наверняка где - нить валяется.
Там ответы на все твои вопросы с примерами и подробным описанием.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 17.12.05 21:10
не, ну вот это я бы так людей доставал с ВБ, когда аналогичной сложности вопросы давали... пойди туда-то, почитай как вопросы задавать надо, другой про книгу какую-то, классику итп, хулиган наменул тремя буквами "Arc" но я по ним ничего не нёшёл. У вас больше времени отняло постить флуд на форуме, чем написать 2-3 строчки для примера... неужели сложно?
Номер ответа: 6
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #6
Добавлено: 17.12.05 21:42
По причинам, которые мы обсудим ниже, в данном разделе будут также рассмотрены функции Rectangle, Ellipse, RoundRect, Chord и Pie, хотя эти функции закрашивают замкнутую область и рисуют линии.
Arc (hdc, xLeft, yTop, xRight, yBottom,
xStart, yStart, xEnd, yEnd);
Chord (hdc, xLeft, yTop, xRight, yBottom,
xStart, yStart, xEnd, yEnd);
Pie (hdc, xLeft, yTop, xRight, yBottom,
xStart, yStart, xEnd, yEnd);
Линия, рисуемая функцией Arc приведена на рис. 4.9; фигуры, отображаемые функциями Chord и Pie, приведены на рис. 4.10 и 4.11. Windows использует воображаемую линию для соединения точки (xStart, yStart) с центром эллип-са. В точке, где эта линия пересекается с ограничивающим прямоугольником, Windows начинает рисовать дугу эллипса в направлении против часовой стрелки. Windows также использует воображаемую линию для соединения точки (xEnd, yEnd) с центром эллипса. В точке, где эта линия пересекается с ограничивающим прямоугольником, Windows завершает рисование дуги.
В случае функции Arc действия Windows на этом заканчиваются, поскольку дуга — эллиптическая кривая, не ограничивающая замкнутую область. В случае функции Chord Windows соединяет конечные точки дуги. В случае функции Pie Windows соединяет начальную и конечную точки дуги с центром эллипса. Внутренняя область фигур, образуемых функциями Chord и Pie, закрашивается текущей кистью.
Вас может удивить использование начальной и конечной позиций в функциях Arc, Chord и Pie. Почему бы просто не указать начальную и конечную точки на кривой эллипса? Хорошо, вы можете сделать так, но вам придется чис-ленно описать, что это за точки. Метод, применяемый в Windows, работает, не требуя этих уточнений.
#------------------------
# LINEDEMO.MAK make file
#------------------------
linedemo.exe : linedemo.obj
$(LINKER) $(GUIFLAGS) -OUT:linedemo.exe linedemo.obj $(GUILIBS)
linedemo.obj : linedemo.c
$(CC) $(CFLAGS) linedemo.c
LINEDEMO.C
/*--------------------------------------------------
LINEDEMO.C -- Line-Drawing Demonstration Program
 c) Charles Petzold, 1996
--------------------------------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "LineDemo" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;
wndclass.cbSize = sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;
RegisterClassEx (&wndclass) ;
hwnd = CreateWindow (szAppName, "Line Demonstration",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
 ispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient ;
HDC hdc ;
PAINTSTRUCT ps ;
switch (iMsg)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
Rectangle (hdc, cxClient / 8, cyClient / 8,
7 * cxClient / 8, 7 * cyClient / 8) ;
MoveToEx  hdc, 0, 0, NULL) ;
LineTo  hdc, cxClient, cyClient) ;
MoveToEx  hdc, 0, cyClient, NULL) ;
LineTo  hdc, cxClient, 0) ;
Ellipse (hdc, cxClient / 8, cyClient / 8,
7 * cxClient / 8, 7 * cyClient / 8) ;
RoundRect (hdc, cxClient / 4, cyClient / 4,
3 * cxClient / 4, 3 * cyClient / 4,
cxClient / 4, cyClient / 4) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}
Некоторые выдержки из книги.
Павел извини, надеюсь сервер выдержит.
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 18.12.05 02:13
Номер ответа: 8
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #8
Добавлено: 18.12.05 09:54
Компонент вероятно у Borland C++
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 24.12.05 16:28
А у Си что нема своего?
P.S. Спс vito. Задание сдал... а доставал всех, т.к. ехать в унгивер через час надо было, и трафик был на 15 коп. А всякие разные отправляли на ссылки обучающие как задавать вопросы...
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 25.12.05 07:18
А зачем Си компонент? Там классы есть.
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 25.12.05 19:31
Я ж незнаю зачем... А есть примерчик с этим опен диалогом?
Номер ответа: 12
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #12
Добавлено: 25.12.05 20:16
Дык просто же всё:
BOOL GetFileName( char* lpBuffer )
{
OPENFILENAME ofn;
RtlZeroMemory(&ofn, sizeof (OPENFILENAME));
ofn.hInstance=hInstance;
ofn.hwndOwner=hWnd;
ofn.lStructSize=sizeof (OPENFILENAME);
ofn.lpstrFilter = "All Files\0*.*\0";
ofn.lpstrFileTitle="Открыть файл";
ofn.lpstrFile=lpBuffer;
ofn.nMaxFile=260;
ofn.Flags=OFN_EXPLORER | OFN_FILEMUSTEXIST;
return GetOpenFileNameA(& ofn);
}
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 25.12.05 20:43
а... инклуды итп??? я ж ничё незнаю как его объявить этот ofn ...
Номер ответа: 14
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #14
Добавлено: 25.12.05 21:22
Ну тебе что, трудно в msdn посмотреть?
И увидеть, что Declared in Commdlg.h
И соответствующая либа тоже.
Номер ответа: 15
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #15
Добавлено: 26.12.05 00:45
не трудно, просто толку мало обычно
вот и в этот раз аналогично
 WORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCTSTR lpstrFilter;
LPTSTR lpstrCustomFilter;
 WORD nMaxCustFilter;
 WORD nFilterIndex;
LPTSTR lpstrFile;
 WORD nMaxFile;
LPTSTR lpstrFileTitle;
 WORD nMaxFileTitle;
LPCTSTR lpstrInitialDir;
LPCTSTR lpstrTitle;
 WORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCTSTR lpstrDefExt;
LPARAM lCustData;
LPOFNHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
 WORD dwReserved;
 WORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;
//===============================================================
BOOL GetFileName( char* lpBuffer )
{
OPENFILENAME tagOFN;
RtlZeroMemory(&tagOFN, sizeof (OPENFILENAME));
tagOFN.hInstance=hInstance;
tagOFN.hwndOwner=hWnd;
tagOFN.lStructSize=sizeof (OPENFILENAME);
tagOFN.lpstrFilter = "All Files\0*.*\0";
tagOFN.lpstrFileTitle="Открыть файл";
tagOFN.lpstrFile=lpBuffer;
tagOFN.nMaxFile=260;
tagOFN.Flags=OFN_EXPLORER | OFN_FILEMUSTEXIST;
return GetOpenFileNameA(& tagOFN);
}
куча ошибок, си на меня страшно матерится, а я на него... вообщем мы враги пока...