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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 21:16   #1
GanJIk
Пользователь
 
Регистрация: 11.11.2008
Сообщений: 14
По умолчанию Прилипающее окно C++

Сделал окно,но вот как сделать что бы когда оно приближается на 15 или менее пикселов к границе экрана, автоматически "прилипало" к границе. "Отлипание" должно происходить аналогично.
Код:
#include <windows.h>

HWND MainWindowHandle = 0; 
bool InitWindowsApp(HINSTANCE instanceHandle, int show); 
int  Run();               
          
LRESULT CALLBACK WndProc(HWND hWnd,
                         UINT msg,
                         WPARAM wParam,
                         LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance,  
                   HINSTANCE hPrevInstance, 
                   PSTR      pCmdLine, 
                   int       nShowCmd)
{
    
    if(!InitWindowsApp(hInstance, nShowCmd)) 
    {
        MessageBox(0, L"Init - FailedL", L"ErrorL", MB_OK);
        return 0;
    }

   
    return Run();
}

bool InitWindowsApp(HINSTANCE instanceHandle, int show)
{
    
    WNDCLASS wc; 

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = instanceHandle;
    wc.hIcon         = LoadIcon(0, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(0, IDC_ARROW);
    wc.hbrBackground = 
    static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
    wc.lpszMenuName  = 0;
    wc.lpszClassName = L"Командная строка";

    
    if(!RegisterClass(&wc)) 
    {
        MessageBox(0, L"RegisterClass - FailedL", 0, 0);
        return false;
    }

  
    MainWindowHandle = CreateWindow(
                           L"Командная строка",
                           L"Командная строка",
                           WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT, 
                           CW_USEDEFAULT,
                           CW_USEDEFAULT,
                           CW_USEDEFAULT,
                           0,
                           0, 
                           instanceHandle,
                           0);
    
    
    if(MainWindowHandle == 0)
    {
        MessageBox(0, L"CreateWindow - FailedL", 0, 0);
        return false;
    }

    
    ShowWindow(MainWindowHandle, show);
    UpdateWindow(MainWindowHandle);

    
    return true;
}

int Run()
{
    MSG msg;
    ZeroMemory(&msg, sizeof(MSG));

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

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND   windowHandle,
                         UINT   msg,     
                         WPARAM wParam,
                         LPARAM lParam)
{
    
    switch( msg )
    {
        
        case WM_LBUTTONDOWN:
            MessageBox(0, L"Командная строка", L"Командная строка", MB_OK);
            return 0;
            
        
        case WM_KEYDOWN:
            if( wParam == VK_ESCAPE )
                DestroyWindow(MainWindowHandle);
            return 0;

        
        case WM_DESTROY: 
            PostQuitMessage(0); 
            return 0;
    }

    
    return DefWindowProc(windowHandle,
                           msg,
                           wParam,
                           lParam);
}
GanJIk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Треугольное окно со сторонами A, B, C. Проверить, пройдёт ли в окно коробка цилиндрической формы (D и H) (паскаль) ihimaru Помощь студентам 5 02.10.2011 22:11
[?] Послать клавишу в чужое окно, не выводя окно на передний план. Moriarty Win Api 4 21.02.2011 05:11
Открывать окно печати, окно просмотра и изменять масштаб. segail Microsoft Office Excel 1 08.08.2010 19:31
Окно Help Djem1991 Общие вопросы Delphi 10 04.02.2009 16:35
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. RustreX Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2007 19:28