Erhard Henkes schrieb:
Vielleicht sollte man diesen Beitrag (evtl.noch ergänzt) in die FAQ legen.
Gern.
Ich lass ihn trotzdem erstmal in den Keller rutschen, damit alle was gesagt haben, die was sagen wollten.
... funktioniert bestens... vielen dank
RECT myRect;
GetWindowRect(&myRect);
if(400 < (myRect.bottom - myRect.top)) // meine Maske ist ausgeklappt 462 groß
{
GetDlgItem(IDC_BUT_1)->EnableWindow(false);
GetDlgItem(IDC_BUT_2)->EnableWindow(false);
GetDlgItem(IDC_BUT_3)->EnableWindow(false);
GetDlgItem(IDC_BUT_4)->EnableWindow(false);
GetDlgItem(IDC_BUT_5)->EnableWindow(false);
// um 170Pixel verkleinern, damit die Buttons IDC_BUT_1 bis ICD_BUT_5 nicht mehr zu sehen sind
//SetWindowPos(NULL, myRect.left, myRect.top, myRect.right - myRect.left, myRect.bottom - myRect.top - 170, SWP_SHOWWINDOW);
MoveWindow(myRect.left, myRect.top, myRect.right - myRect.left, myRect.bottom - myRect.top - 170, true);
}
else
{
// um 170Pixel vergrößern, damit die Buttons IDC_BUT_1 bis ICD_BUT_5 wieder zu sehen sind
MoveWindow(myRect.left, myRect.top, myRect.right - myRect.left, myRect.bottom - myRect.top + 170, true);
Show(); // ist ne eigene Funktion welche statusabhängig Buttons enabled etc. ...
}
Das FlexGrid funktioniert doch.
Es muß nämlich zuerst manuell bei WinXP registriert werden.
Dies geschieht durch folgende Schritte:
- MS-DOS-Eingabeaufforderung öffnen
- in das Verzeichnis wechseln, wo sich das ActiveX-Steuerelement auf dem eigenen Rechner befindet
- den Befehl regsvr32 ausführen. Als Argument der Befehlszeile den Namen des ActiveX-Steuerelements angeben. Soll z.B. das o.a. Steuerelement Msflxgrd.ocx registriert werden, das sich im Verzeichnis C:\Windows\System befindet, folgenden Befehl an der MS-DOS-Eingabeaufforderung eingeben:
C:\WINDOWS>CD system
C:\WINDOWS\SYSTEM>regsvr32 MSFLXGRD.OCX
WinXP weiß jetzt, wo das ActiveX-Steuerelement steht und wie es heißt.
habe die funktion gefunden, so sieht sie aus:
// Taskleiste verstecken:
ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);
De- / Aktivieren natürlich auch kein problem.
die funktion stammt von CodeGuru: http://www.codeproject.com/win32/AntonioWinLock.asp
AndRo67 schrieb:
Wäre das nicht etwas für die FAQ, eventuell als Zusatz zu:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39084.html ??
Da ich diesen Thread da nicht einfach anhängen kann, habe ich ihn mal verlinkt.
Anmerkung: Sobald das Fenster ein Menü hat, sollte man nur CSingleLineCaption verwenden, da das Menü sonst nicht mehr angezeigt wird.
Da dann aber größere Schrift unten abgeschnitten wird, muss man nachbessern:
////////
// Calculate the caption text clipping rect
//
CRect CCaption::GetTextRect()
{
CRect textRect = GetCaptionRect();
textRect.left += GetIconWidth();
textRect.right -= GetButtonsWidth() + 4;
// textRect.top -= 2;
textRect.top -= 6;
return textRect;
}
Außerdem muss man das Icon von Hand nochmal mit SetIcon festlegen.
Damit der code von Jochen läuft, muss man noch einige Includes ergänzen:
#include "Winsock2.h"
#include "Iptypes.h"
#include "Iphlpapi.h"
Und die Iphlpapi.lib einbinden.
Besten Dank! Hat funktioniert. Ich habe dann auch noch mal mit nem Project verglichen wo ich es gleich eingestellt hatte. Da gehören nämlich auch noch die eine oder andere Registry-Funktionen in in die Initinstance für die Shell u.s.w.
Funktioniert jetzt tadellos.
thx,
moskito
Hey, super, danke. Aber man sollte lieber alles Dateien anzeigen lassen, denn sonst wird die dll herausgefiltert.
Gut zu wissen, dass soetwas möglich ist.
MfG,
Paul.