Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Не прорисовывается PageControl


Автор: Alca 16.8.2006, 22:19
Сворачиваю форму в трей, потом восстанавливаю. Получается, что при переходе по закладкам их содержимое не прорисовывается (видна только одна)?

Автор: BreakPointMAN 16.8.2006, 22:28
Код в студию.

Автор: Alca 16.8.2006, 22:35
//восстанавливаю
Код

void __fastcall TfrmMain::CoolTrayIconDblClick(TObject *Sender){
    Application->Restore();
}


Автор: Alca 20.8.2006, 15:50
Поменял код:

Код

void __fastcall TfrmMain::CoolTrayIconDblClick(TObject *Sender){
    Application->Restore();
}


на следующий:

Код

void __fastcall TfrmMain::CoolTrayIconDblClick(TObject *Sender){
    Application->Restore();
    frmMain->Show();
}


PageControl прорисовывается, но при сворачивании формы в левом углу экрана (над кнопкой "Пуск") 
иногда "проскакивает" свернутая форма (её заголовок).
Как это убрать? 



Автор: Romikgy 20.8.2006, 18:08
может вместо 
Цитата(Alca @  20.8.2006,  14:50 Найти цитируемый пост)
frmMain->Show();

сделать frmMain->Repaint(); // or Refresh();

Автор: Alca 21.8.2006, 20:57
Не помогло...

Автор: 586 21.8.2006, 22:08
Цитата(Alca @  20.8.2006,  16:50 Найти цитируемый пост)
PageControl прорисовывается, но при сворачивании формы в левом углу экрана (над кнопкой "Пуск") 
иногда "проскакивает" свернутая форма (её заголовок).
Как это убрать? 

Каким образом ты её сворачиваешь? Какие сообщения перехватываешь? Каким образом скрываешь форму (или приложение) (возможно ты скрываешь и показываешь форму разными способами)

Автор: Alca 22.8.2006, 20:28
Сворачиваю кнопкой "Свернуть" (в заколовке окна), 
восстанавливаю кликом по иконке, который в трее:

Код

void __fastcall TfrmMain::CoolTrayIconDblClick(TObject *Sender){
    Application->Restore();
}

Автор: 586 22.8.2006, 21:39
Цитата(Alca @  22.8.2006,  21:28 Найти цитируемый пост)
CoolTrayIcon

У меня такого компонента нет. Может, компонент пытается что либо сделать.

Код
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------

#define WM_LBUTTONDBLCLICK 0x203

FARPROC pMainWndProc;
NOTIFYICONDATA nid;

int __stdcall MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, long lParam)
{
 switch(uMsg)
 {
 case WM_USER+1:
  if(lParam==WM_LBUTTONDBLCLICK)
  {
   Application->Restore();
  }
  break;
 }
 return CallWindowProc(pMainWndProc, hWnd, uMsg, wParam, lParam);
}

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 nid.cbSize=sizeof(NOTIFYICONDATA);
 nid.hWnd=Handle;
 nid.uID=1;
 nid.uFlags=NIF_ICON | NIF_MESSAGE;
 nid.hIcon=Application->Icon->Handle;
 nid.uCallbackMessage=WM_USER+1;
 Shell_NotifyIcon(NIM_ADD, &nid);
 pMainWndProc=(FARPROC)SetWindowLong(Handle, GWL_WNDPROC,(long)::MainWndProc);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 Shell_NotifyIcon(NIM_DELETE, &nid);
}

У меня этот код нормально работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)