![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Fektenus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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> |
|||
|
||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 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!! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |