Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с виртуальной паямью 
:(
    Опции темы
Fektenus
Дата 25.9.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Собственно,имеется данная программа,которая должна резервировать некий регион виртуальной памяти и выводить информацию об этом участке памяти с помощью функции VirtualQuery...Проблемы появляются при выводе на рабочую область информации ,содержащейся в структуре MEMORY_BASIC_INFORMATION ссылка на которую находится, в свою очередь, в функции VirtualQuery...Собственно,необходимо сделать так,чтобы информация из этой структуры выводилась обычным TextOut при выборе пункта меню с идентификатором IDM_VUVOD.Если кто может помочь,то напишите ,как  вывести информацию о регионе из функции VirtualQuery с помощью  TextOut.Иначе говоря,необходимо при выборе пункта меню с идентификатором IDM_VUVOD сформировать некий цикл вызова функции VirtualQuery,и при каждом вызове формировать строку ,содержащую элементы структуры MEMORY_BASIC_INFORMATION и передавать эту строку в TextOut.И проблема в том,КАК СФОРМИРОВАТЬ эту строку.
Вот листинг программы:

<code>#include <windows.h> 
#include "labrab6.h" 
#include <stdafx.h>
#define IDC_MYICON                      2
#define IDD_LABRAB6_DIALOG              102
#define IDS_APP_TITLE                   103
#define IDD_ABOUTBOX                    103
#define IDM_ABOUT                       104
#define IDM_EXIT                        105
#define IDI_LABRAB6                     107
#define IDI_SMALL                       108
#define IDC_LABRAB6                     109
#define IDR_MAINFRAME                   128
#define ID_FILE_32771                   32771
#define ID_FILE_32772                   32772
#define ID_FILE_32773                   32773
#define ID_FILE_32774                   32774
#define ID_32775                        32775
#define ID_32776                        32776
#define ID_32777                        32777
#define IDM_Sver                        32778
#define ID                              32779
#define IDM_                            32780
#define IDM_Razv                        32781
#define IDM_RAZM                        32782
#define IDM_PEREM                       32783
#define IDM_ZAKR                        32784
#define IDM_VUDEL                       32785
#define IDM_VUVOD                       32786
#define IDM_UDAL                        32787
#define IDM_AVTOR                       32788
#define IDC_STATIC                      -1
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC                     1
#define _APS_NEXT_RESOURCE_VALUE        129
#define _APS_NEXT_COMMAND_VALUE         32789
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           110
#endif
#endif
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
TCHAR szAppName[] = TEXT("Virtualmemory"); 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
PSTR szCmdLine, int iCmdShow) 
{ 
HWND hwnd;
PVOID p;
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 = TEXT("MENUFOR22VARIANT"); 
wndclass.lpszClassName = szAppName; 
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); 
RegisterClassEx(&wndclass);
hwnd = CreateWindow(szAppName, TEXT("Variant22"), 
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); 
DispatchMessage(&msg); 
} 
return msg.wParam; 
} 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) 
{ 
   static HINSTANCE hInstance;
   static WNDPROC lpfnAboutDlgProc;
    PVOID p;
    DWORD d;
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
HMENU hMenu; 
switch(iMsg) 
{ 
case WM_COMMAND : 
hMenu = GetMenu(hwnd); 
switch(LOWORD(wParam)) 
{ 
case IDM_Sver:
    ShowWindow(hwnd,SW_SHOWMINIMIZED); 
    return 0;

case IDM_Razv:
   ShowWindow(hwnd,SW_SHOWMAXIMIZED);
   return 0;

case IDM_ZAKR : 
SendMessage(hwnd, WM_CLOSE, 0, 0L); 
return 0; 

case IDM_VUDEL:
   {
       MEMORY_BASIC_INFORMATION MBI; 
       p= VirtualAlloc((PVOID)00020000,100*1024,MEM_COMMIT,PAGE_READWRITE);
         d=VirtualQuery((PVOID)00020000,&MBI,sizeof(&MBI));
MessageBox(hwnd, TEXT("Регион памяти выделен успешно"), 
szAppName, MB_ICONINFORMATION | MB_OK); 
   }
return 0;
case IDM_VUVOD:
   
    hdc=GetDC(hwnd); 
     TextOut(hdc,10,10,TEXT("Vnimanie"),sizeof("vnimanie"));
    ReleaseDC(hwnd,hdc);
   return 0;
break;
case IDM_UDAL:
   VirtualFree((PVOID)00020000,0,MEM_RELEASE);
    MessageBox(hwnd, TEXT("Регион памяти удален успешно"), 
    szAppName, MB_ICONINFORMATION | MB_OK); 
   return 0;
case IDM_AVTOR : 
DialogBox(hInstance,TEXT("DIALOGFOR22VARIANT"),hwnd,AboutDlgProc);
return 0; 
}
break; 
case WM_DESTROY : 
PostQuitMessage(0); 
return 0; 
} 
return DefWindowProc(hwnd, iMsg, wParam, lParam); 
}
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam) 
{ 
switch(iMsg) 
{ 
case WM_INITDIALOG : 
return TRUE; 
case WM_COMMAND : 
switch(LOWORD(wParam)) 
{ 
case IDOK : 
case IDCANCEL : 
EndDialog(hDlg, 0); 
return TRUE; 
} 
break; 
} 
return FALSE; 
}
</code>
PM MAIL   Вверх
Aleksandor
Дата 25.9.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



Джеффри Рихтер - "Programming applications for MS Windows". ISBN 5-272-00384-5.  Страница 363


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.