Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 19:57   #1
Анннютик
Пользователь
 
Регистрация: 02.08.2011
Сообщений: 18
По умолчанию редактор, список

Доброго времени суток! Пожалуйста, ппомогите решить задачку((( Ничего в этом не понимаю, а надо сделать для контрольной работы(((
В левом верхнем углу в области окна создать временное окно площадью в одну шестнадцатую площади этой области. При нажатии на левую клавишу мыши временное окно переместить в соседний по ходу часовой стрелки угол рабочей области.
Анннютик вне форума Ответить с цитированием
Старый 11.12.2011, 12:45   #2
Fedor666
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 71
Подмигивание

Вот функция, при помощи которой можно узнать размеры экрана:
Код:
int GetSystemMetrics(
    int nIndex 	// system metric or configuration setting to retrieve  
   );
SM_CXSCREEN, SM_CYSCREEN - Width and height, in pixels, of the screen.

Вот функция передвижения окна:
Код:
BOOL MoveWindow(
    HWND hWnd,	// handle of window
    int X,	// horizontal position
    int Y,	// vertical position
    int nWidth,	// width
    int nHeight,	// height
    BOOL bRepaint 	// repaint flag
   );
Fedor666 вне форума Ответить с цитированием
Старый 13.12.2011, 00:21   #3
RegediK
 
Аватар для RegediK
 
Регистрация: 12.12.2011
Сообщений: 6
Восклицание Ответ я зделал в Microsoft Visual Studio 2010!:)

Вот пожалуйста! Разбирайся. Я программу проверил, всё пашет вроде))

#include "stdafx.h"

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

TCHAR szWindowClass[100];

RECT rc;

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMainWnd;
MSG msg;
WNDCLASSEX wc;

LoadString(hinstance, 109, szWindowClass, 100);

// Init
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(COLOR_BTNFAC E);
wc.lpszMenuName = NULL;
wc.lpszClassName = szWindowClass;
wc.hIconSm = LoadIcon(NULL,IDI_INFORMATION);

// Registrite Class
if(!RegisterClassEx(&wc))
{
MessageBoxA(NULL,"Error in register class!!!","ERROR",MB_OK | MB_ICONERROR);
return 0;
}

//Create main Okno
hMainWnd = CreateWindowEx(WS_EX_ACCEPTFILES,sz WindowClass,(LPCTSTR)"1",WS_OVERLAP PEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,
NULL,NULL,hinstance,NULL);

ShowWindow(hMainWnd,SW_SHOW);

//Create popup window
HWND hwnd;

GetWindowRect(hMainWnd,&rc);

rc.right = (rc.right-rc.left)/4;
rc.bottom = (rc.bottom-rc.top)/4;

rc.left += 5;
rc.top += 5;

hwnd = CreateWindowEx(WS_EX_ACCEPTFILES,sz WindowClass,(LPCTSTR)"2",
WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE,
rc.left,rc.top,rc.right,rc.bottom,
NULL,NULL,hinstance,NULL);

ShowWindow(hwnd,SW_SHOW);

while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

// - - - - - - - - - - - - - - - //

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HWND hwnd=FindWindow(szWindowClass,(LPCT STR)"2");

// flag
static int n=1;

switch (uMsg)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;

case WM_LBUTTONDOWN:
switch(n)
{
case 1:
rc.left = (rc.left+3*rc.right);

MoveWindow(hwnd,rc.left-10,rc.top,rc.right,rc.bottom,true);
SetFocus(hwnd);
break;

case 2:
rc.top = (rc.top+3*rc.bottom);

MoveWindow(hwnd,rc.left-10,rc.top-10,rc.right,rc.bottom,true);
SetFocus(hwnd);
break;

case 3:
rc.left = (rc.left-3*rc.right);

MoveWindow(hwnd,rc.left,rc.top-10,rc.right,rc.bottom,true);
SetFocus(hwnd);
break;

case 4:
rc.top = (rc.top-3*rc.bottom);

MoveWindow(hwnd,rc.left,rc.top,rc.r ight,rc.bottom,true);
SetFocus(hwnd);
break;
};

if(n == 4)
n=0;

n++;
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd,uMsg,wParam,lPar am);
}

return 0;
}

Если возникнут какие-то вопросы пиши, постараюсь ответить!
Программирование это не робота, это искусство!

Последний раз редактировалось RegediK; 13.12.2011 в 00:27.
RegediK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
однострочный редактор, список, кнопка Анннютик Win Api 2 26.11.2011 08:25
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание Zigfried Помощь студентам 2 04.10.2010 20:29
связать список строк и список целых чисел lirikoff Помощь студентам 5 31.08.2010 13:23
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43