Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: OWL /помогите со скролингом  (Прочитано 4711 раз)
0 Пользователей и 1 Гость смотрят эту тему.
noob_ppc
Гость
« : 13-05-2008 16:50 » new

кто-нибудь может обьяснить как сделать рабочие скролинги в окне?
собственно задание: открыть картинку, при растягивании окна если окно меньше картинки то создать полосы прокрутки. Так вот чтото с этим скролингом непонятно как он работает  Не понял
полосы рисуются сбоку и снизу, но не работают( или коряво работают), ползунок с начального положения не сдвигается, но кaртинку заставляет извратно перерисовываться.
я так понимаю нада еще чтото в таблицу откликов добавлять  А черт его знает...... ток неуверен что.

файл .ЦПП
#include <owl\framewin.h>
#include <owl\gdiobjec.h>
#include "klif.h"
#include <owl/opensave.h>
#include <owl/validate.h>
#include <owl/dialog.h>
#include <owl/scroller.h>


class picWindow:public TFrameWindow
{
protected:
TDib* DIB;
TBitmap* Bitmap;
TOpenSaveDialog::TData* FileData;
TPalette* DIBPalette;
int JustOpened;
void FileOpen();
void picWindow::Ext();
void picWindow::Paint(TDC&dc,bool,TRect&);
public:
picWindow(TWindow*parent,char far*title):TFrameWindow(parent,title)
{
FileData=new TOpenSaveDialog::TData
(OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,
"graficheskoe izobragenie (*.bmp)|*.bmp|", 0, "", "bmp");
JustOpened=1;
AssignMenu(IDM_MENU1);
Attr.X=40; Attr.Y=40;
Attr.W=640; Attr.H=480;
Attr.AccelTable=IDM_MENU1;
}

public:
picWindow(TWindow*parent,const char far*title);
~picWindow()
{
delete Bitmap;
delete DIB;

}
DECLARE_RESPONSE_TABLE(picWindow);
};
//============================================================================
void picWindow::FileOpen()
{
if ((TFileOpenDialog(this,*FileData,0,"shozanah??")).Execute()==IDOK)
{
DIB=new TDib(FileData->FileName);
DIBPalette=new TPalette(*DIB);
JustOpened=0;
Invalidate();
Bitmap=new TBitmap(*DIB,DIBPalette);
}
else
{
char msg[20]="nichego ne otkrito";
MessageBox(msg,"WARNING", MB_OK|MB_ICONWARNING);
}
}
//=============================================================================
void picWindow::Ext()
{
if(MessageBox("really exit??\n",
"BMP Viewer v0.1",MB_YESNO|MB_ICONQUESTION)== IDYES)
{CloseWindow(0);}
}
//=============================================================================
void picWindow::Paint(TDC&dc,bool,TRect&)
{
TMemoryDC MDC(dc);

if(!JustOpened)
  { if(Bitmap->Width()>GetClientRect().Width()
        ||Bitmap->Height()>GetClientRect().Height())
           {
           Attr.Style |= WS_VSCROLL | WS_HSCROLL;
           Scroller = new TScroller (this, 10, 10,
           Bitmap->Width()-GetClientRect().Width(),Bitmap->Height()-GetClientRect().Height());

           MDC.SelectObject(*Bitmap);
           dc.StretchBlt(0,0,Bitmap->Width(),Bitmap->Height(),MDC,0,0,
           Bitmap->Width(),Bitmap->Height(),SRCCOPY);
           dc.RestoreObjects();
           }
            else {UpdateWindow();
        MDC.SelectObject(*Bitmap);
dc.StretchBlt(0,0,Bitmap->Width(),Bitmap->Height(),MDC,0,0,
Bitmap->Width(),Bitmap->Height(),SRCCOPY);
dc.RestoreObjects();}
}
}
//=============================================================================
DEFINE_RESPONSE_TABLE1(picWindow,TWindow)
EV_COMMAND(102,FileOpen),
EV_COMMAND(108,Ext),
EV_WM_CREATE,
EV_WM_CLOSE,
EV_WM_SIZE,
END_RESPONSE_TABLE;
//============================================================================

class  MyApp:public  TApplication{
public:
virtual void InitMainWindow();
};

void MyApp::InitMainWindow(void)
 {
picWindow* myWin=new picWindow(0,"BMPwiever");
SetMainWindow(myWin); }
 int OwlMain(int,char*[]){
MyApp myApp;
return myApp.Run( ); }

-----------------------------------------------------------------------------------

файл klif.h
#define IDM_MENU1   1


-----------------------------------------------------------------------------------
файл klif.rc
#define  IDM_MENU1    1


IDM_MENU1 MENU
{
 POPUP "menu"
 {
  MENUITEM "open file", 102
  MENUITEM SEPARATOR
  MENUITEM "exit", 108
 }
}
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines