• styler Nokia TeamАвтор темы
    офлайн
    styler Nokia Team Автор темы

    6062

    22 года на сайте
    пользователь #1863

    Профиль
    Написать сообщение

    6062
    # 19 мая 2003 12:32

    нужно написать программу которая сделает следующее:

    Create window, list all the folders and files of a system directory.

    Помогите кому нетрудно, я в программинге ничего не смыслю. Могу подсказать по фотошопу или флэшу только. :beer:

    В штате Айова все хорошо. А жаль! Какая могла бы получиться рифма...
  • 5272 IRC Team
    офлайн
    5272 IRC Team

    5171

    21 год на сайте
    пользователь #5272

    Профиль
    Написать сообщение

    5171
    # 19 мая 2003 13:40

    тебе в компьютерах и интернет помогут

  • styler Nokia TeamАвтор темы
    офлайн
    styler Nokia Team Автор темы

    6062

    22 года на сайте
    пользователь #1863

    Профиль
    Написать сообщение

    6062
    # 19 мая 2003 15:26

    перекиньте тогда в "компьютеры и интернет" если не трудно.

    В штате Айова все хорошо. А жаль! Какая могла бы получиться рифма...
  • 5272 IRC Team
    офлайн
    5272 IRC Team

    5171

    21 год на сайте
    пользователь #5272

    Профиль
    Написать сообщение

    5171
    # 19 мая 2003 15:35

    styler,

    перекиньте тогда в "компьютеры и интернет" если не трудно.

    я не могу, не модерасю я! Если б мог, уже б закинул

  • ФоррестГамп Клуб друзей МТС
    офлайн
    ФоррестГамп Клуб друзей МТС

    17224

    21 год на сайте
    пользователь #3613

    Профиль
    Написать сообщение

    17224
    # 19 мая 2003 15:40

    Переехали...

  • Bacёk Senior Member
    офлайн
    Bacёk Senior Member

    21796

    22 года на сайте
    пользователь #723

    Профиль
    Написать сообщение

    21796
    # 19 мая 2003 16:02

    styler

    Смотри в личных

    На беларускіх дарогах — сэрца маё...
  • dishef Onliner Auto Club
    офлайн
    dishef Onliner Auto Club

    3276

    21 год на сайте
    пользователь #4665

    Профиль
    Написать сообщение

    3276
    # 20 мая 2003 10:50

    для начала просто криэйт виндов:

    код выделить все
    #include "windows.h"

    HINSTANCE hInstance;
    LPCTSTR lpszWndClass = "WndClass";

    ATOM MyRegisterClass(HINSTANCE);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    MSG msg;
    HACCEL hAccelTable;

    MyRegisterClass(hInstance);
    if(!InitInstance(hInstance, nShowCmd))
    return FALSE;

    hAccelTable = LoadAccelerators(hInstance, NULL);

    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }

    return msg.wParam;
    }

    //MyRegisterClass()
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASS wc;

    wc.style = CS_HREDRAW|CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_WARNING);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground= (HBRUSH)(COLOR_WINDOW);
    wc.lpszMenuName = NULL;
    wc.lpszClassName= lpszWndClass;

    return RegisterClass(&wc);
    }

    //InitInstance()
    BOOL InitInstance(HINSTANCE hInstance, int nShowCmd)
    {
    HWND hWnd;

    hWnd = CreateWindow(
    lpszWndClass,
    "MyWindow in WIN32 API",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);

    if(!hWnd)
    return FALSE;

    ShowWindow(hWnd, nShowCmd);
    UpdateWindow(hWnd);

    return TRUE;
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    switch(msg)
    {
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, msg, wParam, lParam);
    }

    return 0;
    }

    styler,а теперь объясни в каком виде надо вывести туда папки и каталоги системной директории...

  • JJ Senior Member
    офлайн
    JJ Senior Member

    749

    23 года на сайте
    пользователь #53

    Профиль
    Написать сообщение

    749
    # 20 мая 2003 12:05

    Расслабься. Есть более простой способ (пусть ТЗ правильно ставят, если хотят большего!).

    код выделить все

    #include <windows.h>
    #include <tchar.h>

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
    {
    TCHAR sysdir[_MAX_PATH+1];
    ZeroMemory(sysdir, sizeof(sysdir));
    GetSystemDirectory(sysdir, _MAX_PATH);
    ShellExecute( NULL, _T("open"), _T("explorer.exe"), sysdir, sysdir, SW_SHOWNORMAL);
    return 0;
    }

    Вот и всё :jump:

  • dishef Onliner Auto Club
    офлайн
    dishef Onliner Auto Club

    3276

    21 год на сайте
    пользователь #4665

    Профиль
    Написать сообщение

    3276
    # 20 мая 2003 12:37

    JJ,

    по твоему способу заданием было бы - "открыть проводником Windows системную директорию" :D

    ИМХО не этого от него хотят

  • JJ Senior Member
    офлайн
    JJ Senior Member

    749

    23 года на сайте
    пользователь #53

    Профиль
    Написать сообщение

    749
    # 20 мая 2003 13:43

    1. ...Create window

    - Окно создано (ведь так?)

    2. ...list all the folders and files of a system directory

    - Ну и в окне отображается требуемое.

    Все пункты задания - выполнены. А как - это другой вопрос.

    Как в том старом анекдоте, когда мужик загадал Золотой рыбке желание, чтобы у него Х## до земли доставал. А она ему взяла, и ноги укоротила. :rotate:

  • dishef Onliner Auto Club
    офлайн
    dishef Onliner Auto Club

    3276

    21 год на сайте
    пользователь #4665

    Профиль
    Написать сообщение

    3276
    # 20 мая 2003 14:40

    вобщем че-то написал:

    код выделить все
    #include "windows.h"

    //глобальные переменные
    HINSTANCE hInstance;
    LPCTSTR lpszWndClass = "WndClass";

    //прототипы функций
    ATOM MyRegisterClass(HINSTANCE);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    void ReadSysDir(HWND, int);

    //WinMain()
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    MSG msg;
    HACCEL hAccelTable;

    MyRegisterClass(hInstance);

    if(!InitInstance(hInstance, nShowCmd))
    return FALSE;

    hAccelTable = LoadAccelerators(hInstance, NULL);

    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }

    return msg.wParam;
    }

    //MyRegisterClass()
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASS wc;

    wc.style = CS_HREDRAW|CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground= (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName= lpszWndClass;

    return RegisterClass(&wc);
    }

    //InitInstance()
    BOOL InitInstance(HINSTANCE hInstance, int nShowCmd)
    {
    HWND hWnd;

    hWnd = CreateWindow(
    lpszWndClass,
    "list of all the folders and files of a system directory",
    WS_OVERLAPPEDWINDOW|WS_VSCROLL,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);

    if(!hWnd)
    return FALSE;

    ShowWindow(hWnd, nShowCmd);
    UpdateWindow(hWnd);

    return TRUE;
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    static int iVscrollPos, i;
    int x;
    LPTSTR lpszSystemDir, lpszOldDir, lpszFileName; // pointer to system information string
    WIN32_FIND_DATA FileData;
    TCHAR tchBuffer1[MAX_PATH+1]; // buffer for concatenated string
    TCHAR tchBuffer2[MAX_PATH+1]; // buffer for concatenated string
    TCHAR tchBuffer3[MAX_PATH+1]; // buffer for concatenated string
    lpszSystemDir = tchBuffer1;
    lpszOldDir = tchBuffer2;
    lpszFileName = tchBuffer3;
    HANDLE hSearch;

    switch(msg)
    {
    case WM_CREATE:
    //подсчитаем количество файлов для того чтобы знать
    //размер полосы прокрутки
    GetSystemDirectory(lpszSystemDir, MAX_PATH+1);
    GetCurrentDirectory(MAX_PATH+1, lpszOldDir);
    SetCurrentDirectory((LPCTSTR) lpszSystemDir);
    //находим первый файл
    hSearch = FindFirstFile("*.*", &FileData);
    i++;
    while(x!=ERROR_NO_MORE_FILES)
    {
    FindNextFile(hSearch, &FileData);
    i++;
    x = GetLastError();
    }

    SetCurrentDirectory((LPCTSTR) lpszOldDir);
    CloseHandle(hSearch);
    ///////////////////////////////////////////////////

    SetScrollRange (hWnd, SB_VERT, 0, i, TRUE);
    SetScrollPos (hWnd, SB_VERT, iVscrollPos, TRUE);
    break;
    case WM_VSCROLL :
    switch (LOWORD (wParam))
    {
    case SB_LINEUP:
    iVscrollPos -= 1;
    break ;
    case SB_LINEDOWN:
    iVscrollPos += 1;
    break;
    case SB_PAGEUP:
    iVscrollPos -= 20;
    break;
    case SB_PAGEDOWN:
    iVscrollPos += 20;
    break;
    case SB_THUMBPOSITION:
    iVscrollPos = HIWORD (wParam);
    break;
    default:
    break;
    }

    iVscrollPos = max (0, min (iVscrollPos, i));

    if (iVscrollPos != GetScrollPos (hWnd, SB_VERT))
    {
    SetScrollPos (hWnd, SB_VERT, iVscrollPos, TRUE);
    InvalidateRect (hWnd, NULL, TRUE);
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    ReadSysDir(hWnd, iVscrollPos);
    return DefWindowProc(hWnd, msg, wParam, lParam);
    }

    return 0;
    }

    void ReadSysDir(HWND hWnd, int iVscrollPos)
    {
    LPTSTR lpszSystemDir, lpszOldDir, lpszFileName; // pointer to system information string
    WIN32_FIND_DATA FileData;
    TCHAR tchBuffer1[MAX_PATH+1]; // buffer for concatenated string
    TCHAR tchBuffer2[MAX_PATH+1]; // buffer for concatenated string
    TCHAR tchBuffer3[MAX_PATH+1]; // buffer for concatenated string
    lpszSystemDir = tchBuffer1;
    lpszOldDir = tchBuffer2;
    lpszFileName = tchBuffer3;
    HANDLE hSearch;

    HDC hDC;
    TEXTMETRIC tm;

    hDC = GetDC(hWnd);

    SetTextColor(hDC, RGB(0,200,0));

    int nSize; // size of string
    int i=0;
    DWORD x=0, y=0;

    //размеры шрифта
    GetTextMetrics(hDC, &tm);

    //находим системную директорию
    nSize = GetSystemDirectory(lpszSystemDir, MAX_PATH+1);
    //выводим ее имя
    TextOut(hDC,10,i, "Системная директория: ", 22);
    TextOut(hDC, 180, i, lpszSystemDir, nSize);
    i+=tm.tmHeight;
    SetTextColor(hDC, RGB(0,0,255));
    TextOut(hDC, 10, i, "____________________________________________________________", 60);
    i+=tm.tmHeight;
    y=i;

    //сохраняем текущую директорию
    GetCurrentDirectory(MAX_PATH+1, lpszOldDir);
    //устанавливаем текущей системную
    SetCurrentDirectory((LPCTSTR) lpszSystemDir);
    //находим первый файл
    hSearch = FindFirstFile("*.*", &FileData);
    SetTextColor(hDC, RGB(255,0,0));
    //выводим его имя
    if (y/tm.tmHeight>=iVscrollPos)
    {
    TextOut(hDC, 10, i, FileData.cFileName, strlen(FileData.cFileName));
    i+=tm.tmHeight;
    }

    y+=tm.tmHeight;

    //пока не заканчиваются файлы ищем их и выводим на экран
    while(x!=ERROR_NO_MORE_FILES)
    {
    FindNextFile(hSearch, &FileData);
    if (y/tm.tmHeight>=iVscrollPos)
    {
    TextOut(hDC, 10, i, FileData.cFileName, strlen(FileData.cFileName));
    i+=tm.tmHeight;
    }
    y+=tm.tmHeight;
    x = GetLastError();
    }

    //возвращаем текущую директорию
    SetCurrentDirectory((LPCTSTR) lpszOldDir);
    CloseHandle(hSearch);
    }