Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Idefine idm_afiles 501 idefine idmj3files 502 idefine idm_cfiles 503 idefine idm dfiles 504

Ниже приведен текст файла ресурсов MENU4.RC, в котором содержатся определения меню и пунктов меню, используемых для получения содержи­мого каталогов.

#include "windows.h" linclude "menu4.h"

Directory MENU {

POPUP "&Directory_Information"

{

MENUITEM "Directory A:", MENUITEM "Directory B:", MENUITEM "Directory C:", MENUITEM "Directory D:",

}

}

Текст приложения MENU4.C похож на тексты трех предыдущих примеров. Тем не менее, читая этот листинг, обратите внимание на подключение вертикальной полосы прокрутки.

 

// menu4.с

// Использование меню для получения информации о содержимом

// каталогов дисков А, В, С или D.

// Copyright (с) Chris Н. Pappas and William Н. Murray, 1994

#include <windows.h>

#include <string.h>

#include <stdio.h>

#include "menu4.h"

#define SCROLLLINES 50

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

char szProgName [ ] ="ProgName";

char szApplName[]="Directory";

char szMessage[44];

char szMyfile[10];

int sLength;

int WINAPI WinMain (HINSTANCE hlnst, HINSTANCE hPrelnst, LPSTR IpszCmdLine,int nCmdShow)

{

HWND hWnd;

MSG lpMsg;

WNDCLASS wcApp; if(!hPrelnst) {

wcApp.IpszClassName wcApp.hlnstance wcApp.lpfnWndProc wcApp.hCursor wcApp.hicon wcApp.IpszMenuName wcApp.hbrBackground wcApp.style wcApp.cbClsExtra wcApp.cbWndExtra

if(!RegisterClass(&wcApp))

return 0;

}

hWnd=CreateWindow(szProgName,"Directory Listings", WS_OVERLAPPEDWINDOW|WS_VSCROLL,

CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, (HWND)NULL,(HMENU)NULL,

(HANDLE)hlnst,(LPSTR)NULL);

ShowWindow (hWnd, nCmdShbw);

UpdateWindow(hWnd);

InvalidateRect(hWnd,NULL, TRUE);

break;

case WM_PAINT:

hdc=BeginPaint(hWnd,&ps);

//------ Начало фрагмента пользователя --

i=0;

SetCurrentDirectory(szMyfile);

hFindFile=FindFirstFile(IpszSearchFile,&ffd);

sLength=sprintf(szMessage,ffd.cFileName);

TextOut(hdc,0,charht*(i-NewVPos), szMessage,sLength);

i++;

for(;;) {

fRC=FindNextFile(hFindFile,&ffd);

if (fRC==FALSE) {

FindClose(hFindFile);

break;

}

else

FindNextFile(hFindFile, &ffd);

sLength=sprintf(szMessage,ffd.cFileName);

TextOut(hdc,0,charht*(i-NewVPos), szMessage,sLength);

i++;

}

//------ Конец фрагмента пользователя ---

ValidateRect(hWnd,NULL);

EndPaint(hWnd,&ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return (DefWindowProc (hWnd,messg, wParam, lParam));

}

return(0);

}

Кроме этих трех файлов потребуется создать файл проекта для компилятора C/C++. После создания файла проекта убедитесь в том, что в список файлов для построения приложения включены файлы MENU4.RC и MENU4.C.

 

Файл заголовков (MENU4.H)

Файл заголовков содержит четыре неповторяющихся идентификатора и связанные с ними числа для каждого из дисков:IDM_AFILES,IDM_BFILES, IDM_CFILES и IDM_DFILES. Найдите эти идентификаторы в листинге файла MENU4.H.

 

Файл ресурсов (MENU4.RC)

В приложении используется одно меню, которое называется Directory_Information. Четыре пункта меню позволяют пользователю вы­брать текущий каталог на диске А, В, С или D.

 

Файл приложения (MENU4.C)

Приложение обслуживает меню стандартным образом. Обрабатываются пять важных сообщений: WM_CREATE, WM_SIZE, WM_VSCROLL, WM_COMMAND и WM_PAINT.

При обработке сообщения WM_CREATE с помощью функции GetTextMetrics() получаются предварительные сведения о текущей высоте текста.

При обработке WM_CREATE также устанавливается начальное положение движка вертикальной полосы прокрутки и диапазон полосы прокрутки (при помощи функций SetScrollPos() и SetScrollRange(), соответственно).

При обработке сообщения WM_SIZE приложение получает информацию о текущих размерах окна. Приложение интересует только размер окна по вертикали. Эта информация необходима для организации прокрутки на страницу.

При обработке WM COMМAND запоминается выбранный из меню диск. Как указывалось ранее, данное приложение позволяет выбирать из А:, В:, С: и D:. Независимо от выбранного значения, оно заносится в переменную szMyfile. При обработке сообщения WM PAINT эта строка используется при вызове некоторых функций Windows.

Обработка сообщения WM__COMMAND заканчивается вызовом функции InvalidateRect() Напомним, что эта функция передает сообщение WM_PAINT для обновления изображения.

При обработке сообщения WM PAINT для получения списка файлов каталога используются вызовы трех функций Windows: SetCurrentDirectory(), FindFirstFile() и FindNextFile(). Текущий каталог устанавливается на основа­нии информации, содержащейся в szMyfile.


Дата добавления: 2015-09-03; просмотров: 99 | Нарушение авторских прав


Читайте в этой же книге: Вывод окна | Виртуальные клавиши. Системные таймеры. Срабатывание таймера. Эффективное использование механизма таймеров. | Простое приложение Windows. Оболочка для всех приложений. Эффективное использование описателей. Компоненты приложения Windows. Функция WinMain(). Регистрация класса окна. | Простое приложение Windows. style. lpfnWndProc. cbClsExtra. cbWndExtra. hinstance. hIсоn. hCursor. hbrBackground. IpszMenuName. IpszClassName. | Создание окна с помощью функции CreateWindow | Приложение с циклом обработки сообщений | Оконные классы | То получим внутри прямоугольника эллипс. | Добавление курсоров | Добавление битовых образов |
<== предыдущая страница | следующая страница ==>
Подготовительные работы и допуск в работе| Схема последовательного технологического процесса

mybiblioteka.su - 2015-2024 год. (0.007 сек.)