|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 06.08.2006, 12:23 Titel: "fenster aktualisieren"-damit Programm weitläuft |
|
|
Ich versuche mich grade an "Windows"-Fenster.
Ich wollte einen Wecker programmieren aber mein Problem ist, dass sobald ich den Cursor außerhalb des Fensters positioniere das Programm anhält.
Ich dachte zuerst das das so funktioniert:
Tuts aber nicht.
Als Notlösung habe ich jetzt einfach "message=1" gesetzt.
Dann kann der Benutzer aber keine Eingaben mehr machn.
Habt ihr eine Lösung?
mfg noop |
|
Nach oben |
|
|
Lutz Ifer Grillmeister
Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 06.08.2006, 15:32 Titel: |
|
|
sobald der server wieder läuft, könntest du dir ja mal http://lutzifer.freebasic.de/winapi/ angucken - dort habe ich ein kleines tutorial über die anfänge des programmierens mit der winapi hingestellt.
evtl hat ytwinky noch eine alte unvollständige version dieses tutorials als chm-datei, musst ihn mal fragen.
gruß
Lutz Ifer _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 06.08.2006, 15:55 Titel: |
|
|
Hatter natürlich..
Download lutziferswinapi_tut.chm
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 07.08.2006, 03:00 Titel: |
|
|
ok danke
sobal ich zu Hause stell ich ihn ma online. |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 07.08.2006, 08:02 Titel: |
|
|
sry ich hab die Adresse verlegt wo ich Code hochladen kann.
Sobald ich sie weiß mach ichs.
Hier ist der Code:
http://www.freebasic.de/fbnp/index.php?view=504
Zuletzt bearbeitet von noop am 15.08.2006, 00:47, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 07.08.2006, 18:46 Titel: |
|
|
Juhuu!
Quellcode zum Ausprobieren .
Diese Ausgabe hier sagt schon ein paar Sachen:
Zitat: | Command executed:
"C:\FreeBASIC\fbc.exe" "C:\FreeBASIC\FBIDETEMP.bas"
Compiler output:
C:/FreeBASIC/FBIDETEMP.bas(213) : warning level 0: Passing scalar as pointer, at parameter 1 of FSOUND_STREAM_STOP()
C:/FreeBASIC/FBIDETEMP.bas(214) : warning level 0: Passing scalar as pointer, at parameter 1 of FSOUND_STREAM_CLOSE()
C:/FreeBASIC/FBIDETEMP.bas(216) : warning level 0: Function result was not explicitly set
C:/FreeBASIC/FBIDETEMP.bas(220) : warning level 0: Implicit conversion
C:/FreeBASIC/FBIDETEMP.bas(221) : warning level 0: Passing scalar as pointer, at parameter 2 of FSOUND_STREAM_PLAY()
C:/FreeBASIC/FBIDETEMP.bas(222) : warning level 0: Function result was not explicitly set
Results:
Compilation successful
Generated executable: C:\FreeBASIC\FBIDETEMP.exe
System:
FBIde: 0.4.6
fbc: FreeBASIC Compiler - Version 0.16 for win32 (target:win32)
OS: Windows XP (build 2600, Service Pack 2) |
Also Stream ist ein Pointer:
Code: | stream as any pointer |
Bei function ende fehlt die Rückgabe, mach einfach ein kleines Return 0 oder eine Sub daraus.
So, zum eigentlichen Problem komm ich gleich.
(FMOD runterladen, Bitte warten ...)
Jetzt geht's.
(fmod.dll merken, nette DLL )
So weit bin ich:
Code: |
'Code größsten Teils aus den examples von fb kopiert.
option explicit
#include once "fmod.bi"
#include once "windows.bi"
const POLY_VERTICES = 12
#define DEG2RAD(x) x * (3.141593# / 180#)
dim shared timetogo as single, starttime as single, clockon as integer, stream as any pointer
starttime=timer
clockon=1
timetogo=5
declare sub ende
declare sub music
declare function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
end WinMain( GetModuleHandle( null ), null, Command( ), SW_NORMAL )
sub create_poly (byval x as integer, byval y as integer, _
byval radius as integer, byval vertices as integer, _
byval ang as integer, _
vertTb() as POINT )
dim as integer cx = x - radius, cy = y
dim as integer stp = 180 \ vertices, df = 180 mod vertices
dim as integer diam = radius * 2
dim as integer deg = (ang \ 2) - stp
dim as integer v = vertices
dim as integer i
for i = 0 to vertices
v -= df
if v <= 0 then
v += vertices
end if
deg += stp
dim as double r = diam * cos( DEG2RAD(deg) )
with vertTb(i)
.x = cx + r * cos( DEG2RAD(deg) )
.y = cy + r * sin( DEG2RAD(deg) )
end with
next
end sub
function WndProc ( byval hWnd as HWND, _
byval wMsg as UINT, _
byval wParam as WPARAM, _
byval lParam as LPARAM ) as LRESULT
dim as RECT rect
static as POINT vertTB( 0 to POLY_VERTICES )
function = 0
'======Wecker
if clockon=1 then
locate 1:print cint(starttime), timetogo, cint(timer), cint(timetogo-(timer-starttime)), clockon
wMsg=1
if timer>starttime+timetogo then
music
clockon=0
else
end if
else
end if
'==========
select case( wMsg )
case WM_CREATE
GetClientRect( hWnd, @rect )
create_poly( rect.right \ 2, _
rect.bottom \ 2, _
iif(rect.right < rect.bottom, rect.right, rect.bottom) \ 2, _
POLY_VERTICES, _
0, _
vertTb() )
SetWindowRgn( hWnd, CreatePolygonRgn( @vertTb(0), POLY_VERTICES, WINDING ), TRUE )
exit function
case WM_PAINT
dim as PAINTSTRUCT pnt
dim as HDC hDC
hDC = BeginPaint( hWnd, @pnt )
GetClientRect( hWnd, @rect )
SetBkMode( hDC, TRANSPARENT )
SetTextColor( hDC, BGR( val("&h88"), 127, 255 ) )
DrawText( hDC, _
"Wecker", _
-1, _
@rect, _
DT_SINGLELINE or DT_CENTER or DT_VCENTER )
EndPaint( hWnd, @pnt )
exit function
case WM_LBUTTONDOWN
SendMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL )
case WM_KEYDOWN
if( lobyte( wParam ) = 27 ) then
ende
PostMessage( hWnd, WM_CLOSE, 0, 0 )
exit function
end if
case WM_DESTROY
PostQuitMessage( 0 )
exit function
end select
function = DefWindowProc( hWnd, wMsg, wParam, lParam )
end function
sub remove_caption(byval hwnd as HWND )
dim as RECT rect
dim as integer style = GetWindowLong( hwnd, GWL_STYLE ) and (not WS_CAPTION)
SetWindowLong( hwnd, GWL_STYLE, style )
GetClientRect( hwnd, @rect )
AdjustWindowRect( @rect, style, cast( BOOL, GetMenu( hwnd ) ) )
SetWindowPos( hwnd, 0, 0, 0, rect.Right, rect.Bottom, _
SWP_NOMOVE or SWP_NOZORDER or SWP_FRAMECHANGED or SWP_NOSENDCHANGING )
end sub
function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
dim as MSG wMsg
dim as WNDCLASS wcls
dim as HWND hWnd
function = 0
with wcls
.style = CS_HREDRAW or CS_VREDRAW
.lpfnWndProc = @WndProc
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = hInstance
.hIcon = LoadIcon( NULL, IDI_APPLICATION )
.hCursor = LoadCursor( NULL, IDC_ARROW )
.hbrBackground = GetStockObject( LTGRAY_BRUSH )
.lpszMenuName = NULL
.lpszClassName = @"Wecker"
end with
if( RegisterClass( @wcls ) = FALSE ) then
MessageBox( null, "Failed to register wcls!", "Error", MB_ICONERROR )
exit function
end if
hWnd = CreateWindowEx( 0, _
"Wecker", _
NULL, _
WS_OVERLAPPED, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
300, _
300, _
NULL, _
NULL, _
hInstance, _
NULL )
remove_caption( hWnd )
ShowWindow( hWnd, iCmdShow )
UpdateWindow( hWnd )
while( GetMessage( @wMsg, NULL, 0, 0 ) <> false )
TranslateMessage( @wMsg )
DispatchMessage( @wMsg )
wend
function = wMsg.wParam
end function
sub ende
FSOUND_Stream_Stop stream
FSOUND_Stream_Close stream
FSOUND_Close
end sub
sub music
FSOUND_Init( 44100, 4, 0 )
stream = FSOUND_Stream_Open( "C:\Windows\Media\ringin.wav", FSOUND_MPEGACCURATE, 0, 0 )
FSOUND_Stream_Play( FSOUND_FREE, stream )
end sub |
Das eigentliche Problem konnte ich nicht beheben, Nullahnung von der WinAPI.
Scheinpaar klemmt er an:
Eigentlich Logisch, wenn ich Link lese.
Vielleicht must du eine Neuefunktion deklarieren, die dafür zuständig ist wenn der Mauszeiger drausen ist?
Wie gesagt, ich weiss es nicht genauer. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 07.08.2006, 22:01 Titel: |
|
|
Hi noop,
für dein Problem kann ich dir leider nur einen Hinweis geben,
hier hat Antoni eine Digiclock geprogt:
http://www.freebasic.net/forum/viewtopic.php?p=37117#37117
Er baut sein Prog aber ganz anders auf (für mich etwas undurchschaubar), was mir aber auffiel war die Timer-Funktion die er benutzt
Code: | Sub on_Create(hwnd As hwnd)
....
SetTimer (hwnd, ID_TIMER, 1000, Byval NULL)
... | und
Code: | Sub on_timer(hwnd As hwnd)
InvalidateRect (hwnd,Byval NULL, TRUE)
End Sub | Das wird wohl für die Aktualisierung der Zeitanzeige, auch wenn das Window nicht aktiv ist, sorgen
Gruß Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 08.08.2006, 02:52 Titel: |
|
|
Ok danke erstmal.
Ich werd mir das mal angucken.
Ich muss mich wohl mal ein bisschen mehr mit der Win API beschäftigen.
mfg noop |
|
Nach oben |
|
|
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 12.08.2006, 18:24 Titel: |
|
|
Hallo noop,
du gehst an dieses Programm falsch heran.
Das liegt vermutlich daran, dass du die WinAPI noch nicht so gut kennst.
Wie auch immer. Ich habe dein Programm überarbeitet und hoffe,
dass es so funktioniert, wie du es dir vorstellst.
Du solltest, vor allem wenn du den Source-Code online stellst, immer Kommentare einfügen, da
es sonst immer recht aufwendig ist, den Durchblick zu bekommen.
Ich habe dort, wo ich Änderungen vorgenommen habe, Kommentare eingefügt.
Code: | 'Code größsten Teils aus den examples von fb kopiert.
option explicit
#include once "fmod.bi"
#include once "windows.bi"
const POLY_VERTICES = 12
#define DEG2RAD(x) x * (3.141593# / 180#)
dim shared stream as any pointer
'starttime =timer 'unnötig
'clockon=1
Const timetogo=5 'In Sekunden
declare sub ende
declare sub music
declare sub create_poly (byval x as integer, byval y as integer, _
byval radius as integer, byval vertices as integer, _
byval ang as integer, _
vertTb() as POINT )
declare function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
end WinMain( GetModuleHandle( null ), null, Command( ), SW_NORMAL )
sub create_poly (byval x as integer, byval y as integer, _
byval radius as integer, byval vertices as integer, _
byval ang as integer, _
vertTb() as POINT )
dim as integer cx = x - radius, cy = y
dim as integer stp = 180 \ vertices, df = 180 mod vertices
dim as integer diam = radius * 2
dim as integer deg = (ang \ 2) - stp
dim as integer v = vertices
dim as integer i
for i = 0 to vertices
v -= df
if v <= 0 then
v += vertices
end if
deg += stp
dim as double r = diam * cos( DEG2RAD(deg) )
with vertTb(i)
.x = cx + r * cos( DEG2RAD(deg) )
.y = cy + r * sin( DEG2RAD(deg) )
end with
next
end sub
function WndProc ( byval hWnd as HWND, _
byval wMsg as UINT, _
byval wParam as WPARAM, _
byval lParam as LPARAM ) as LRESULT
dim as RECT rect
static as POINT vertTB( 0 to POLY_VERTICES )
static tmr as uint
function = 0
'#####geändert
'Die Überprüfungen hattten an dieser Stelle der WndProc garnichts zu suchen.
'Die Aufgabe der WndProc ist es ausschließlich Fensternachrichten zu behandeln.
'Erstelle lieber einen Timer. Bei jedem Tick des Timers wird an das Fenster die WM_TIMER-Nachricht gesendet,
'wenn du keine Timerprocedure angiebst.
select case( wMsg )
case WM_CREATE
GetClientRect( hWnd, @rect )
create_poly( rect.right \ 2, _
rect.bottom \ 2, _
iif(rect.right < rect.bottom, rect.right, rect.bottom) \ 2, _
POLY_VERTICES, _
0, _
vertTb() )
SetWindowRgn( hWnd, CreatePolygonRgn( @vertTb(0), POLY_VERTICES, WINDING ), TRUE )
'Hier wird der Timer erstellt, der überprüfen soll, ob der Wecker klingeln soll.
'Er gehört dem Fenster "hWnd", erhält die Kennungsnr. 1 und soll alle 5 Sekunden eine WM_TIMER
'Nachricht an das Fenster senden. Dadurch, dass wir den letzten Parameter "NULL" setzten wird die WM_TIMER
'Nachricht überhaupt gesendet, geben wir hier einen Zeiger auf eine Function an, dann wird diese Function
'bei jedem Tick des Timers aufgerufen.
Tmr = SetTimer(hWnd, 1, timetogo * 1000, NULL)
exit function
case WM_PAINT
dim as PAINTSTRUCT pnt
dim as HDC hDC
hDC = BeginPaint( hWnd, @pnt )
GetClientRect( hWnd, @rect )
SetBkMode( hDC, TRANSPARENT )
SetTextColor( hDC, BGR( val("&h88"), 127, 255 ) )
DrawText( hDC, _
"Wecker", _
-1, _
@rect, _
DT_SINGLELINE or DT_CENTER or DT_VCENTER )
EndPaint( hWnd, @pnt )
exit function
case WM_LBUTTONDOWN
SendMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL )
exit function
case WM_KEYDOWN
if( lobyte( wParam ) = 27 ) then
ende
PostMessage( hWnd, WM_CLOSE, 0, 0 )
exit function
end if
case WM_TIMER
'Der Wecker muss klingeln!
'geändert: Das brauchen wir alles nicht mehr. Der Timer macht das überprüfen überflüssig, da er ja nach 5 Sek. automatisch
' das Fenster benachrichtigt.
'======Wecker
'if clockon=1 then
'locate 1:print cint(starttime), timetogo, cint(timer), cint(timetogo-(timer-starttime)), clockon
'wMsg=1
'if timer>starttime+timetogo then
music 'Klingeln
ShowWindow( hWnd, SW_SHOWNORMAL) ' Das Fenster anzeigen.
'clockon=0
'end if
'end if
'==========
'Nun wird der Timer wieder gelöscht, da der Wecker nur einmal klingeln soll.
KillTimer(hWnd, 1)
case WM_DESTROY
ende 'geändert
PostQuitMessage( 0 )
exit function
end select
function = DefWindowProc( hWnd, wMsg, wParam, lParam )
end function
sub remove_caption(byval hwnd as HWND )
dim as RECT rect
dim as integer style = GetWindowLong( hwnd, GWL_STYLE ) and (not WS_CAPTION)
SetWindowLong( hwnd, GWL_STYLE, style )
GetClientRect( hwnd, @rect )
AdjustWindowRect( @rect, style, cast( BOOL, GetMenu( hwnd ) ) )
SetWindowPos( hwnd, 0, 0, 0, rect.Right, rect.Bottom, _
SWP_NOMOVE or SWP_NOZORDER or SWP_FRAMECHANGED or SWP_NOSENDCHANGING )
end sub
function WinMain ( byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval szCmdLine as string, _
byval iCmdShow as integer ) as integer
dim as MSG wMsg
dim as WNDCLASS wcls
dim as HWND hWnd
function = 0
with wcls
.style = CS_HREDRAW or CS_VREDRAW
.lpfnWndProc = @WndProc
.cbClsExtra = 0
.cbWndExtra = 0
.hInstance = hInstance
.hIcon = LoadIcon( NULL, IDI_APPLICATION )
.hCursor = LoadCursor( NULL, IDC_ARROW )
.hbrBackground = GetStockObject( LTGRAY_BRUSH )
.lpszMenuName = NULL
.lpszClassName = @"Wecker"
end with
if( RegisterClass( @wcls ) = FALSE ) then
MessageBox( null, "Failed to register wcls!", "Error", MB_ICONERROR )
exit function
end if
hWnd = CreateWindowEx( 0, _
"Wecker", _
NULL, _
WS_OVERLAPPED, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
300, _
300, _
NULL, _
NULL, _
hInstance, _
NULL )
remove_caption( hWnd )
'Ich habe es so verstanden, dass das Fenster nur dann angezeigt werden soll, nachdem der Wecker geklingelt hat.
'Das heißt, wir erstellen zwar das Fenster, machen es aber noch nicht sichtbar.
UpdateWindow( hWnd )
while( GetMessage( @wMsg, NULL, 0, 0 ) <> false )
TranslateMessage( @wMsg )
DispatchMessage( @wMsg )
wend
function = wMsg.wParam
end function
sub ende
FSOUND_Stream_Stop stream
FSOUND_Stream_Close stream
FSOUND_Close
end sub
sub music
FSOUND_Init( 44100, 4, 0 )
stream = FSOUND_Stream_Open( "C:\Windows\Media\ringin.wav", FSOUND_MPEGACCURATE, 0, 0 )
FSOUND_Stream_Play( FSOUND_FREE, stream )
end sub |
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 15.08.2006, 09:18 Titel: |
|
|
Danke erstmal für deine Verbesserungen.
Ich war auf einem Ausflug und konnnte deshalb nicht antworten.
Ich werd mir den Code heute mal angucken.
noop
edit:
Nein, der Wecker soll die ganze Zeit angezeigt werden.
Ich musste bloß wMsg=1 setzen damit das Fenster überhaupt eine Nachricht bekommt und mein Programm weiterläuft und der Wecker funktioniert. Deswegen wurde das fenster überhaupt gar nicht angezeigt...weil wMsg ja keine verwertbare Information enthielt...
Sieht aber sonst ganz gut aus, danke.
EDIT2:
Ok funzt jetzt wunderbar.
Hier der Code.
Editiert durch Moderator: Beide Folge-Threads zu einem zusammengefasst. (A.K.) |
|
Nach oben |
|
|
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 16.08.2006, 00:53 Titel: |
|
|
Da der Wecker jetzt die ganze Zeit angezeigt wird, kannst du die folgende markierte Zeile löschen:
Code: |
'Ausschnitt aus der WndProc
# case WM_LBUTTONDOWN
# SendMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL )
# exit function
# case WM_KEYDOWN
# if( lobyte( wParam ) = 27 ) then
# ende
# PostMessage( hWnd, WM_CLOSE, 0, 0 )
# exit function
# end if
# case WM_TIMER
# music 'Klingeln
-----------------------------weg damit---------------------------------------------------
|# ShowWindow( hWnd, SW_SHOWNORMAL) ' Das Fenster anzeigen.|
--------------------------------------------------------------------------------
# 'Nun wird der Timer wieder gelöscht, da der Wecker nur einmal klingeln soll.
# KillTimer(hWnd, 1)
# Tmr = 0
# case WM_DESTROY
# ende 'geändert
# PostQuitMessage( 0 )
# exit function
|
In dem Case-Zweig WM_DESTROY musst du auch noch etwas ändern.
Da man jetzt das Programm vor dem Wecken beenden kann wird der Timer, wenn man das macht, nicht gelöscht.
Deshalb änderst du WM_DESTROY am besten so ab:
Code: |
case WM_DESTROY
ende 'geändert
If Tmr <> 0 Then KillTimer(hWnd, 1) ' Löscht den Timer, falls er noch aktiv ist.
PostQuitMessage( 0 )
exit function
|
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 20.08.2006, 08:59 Titel: |
|
|
Ok.Danke.
Die eine Zeile muss allerdings in etwa stehen bleiben, sonst wird das Fenster nicht angezeigt, wenn es hinter anderen liegt.
Code: |
case WM_TIMER
music 'Klingeln
ShowWindow( hWnd, SW_HIDE) ' Fenster verstecken damit es angezeigt werden kann...sonst bleibt es hinter anderen Fenstern liegen.
ShowWindow( hWnd, SW_SHOW) ' Das Fenster anzeigen.
'Nun wird der Timer wieder gelöscht, da der Wecker nur einmal klingeln soll.
KillTimer(hWnd, 1)
|
Ohne diese Zeile
Code: |
ShowWindow( hWnd, SW_HIDE)
|
funktioniert es allerdings nicht.
Gibt es da vllt. eine bessere Lösung? |
|
Nach oben |
|
|
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 20.08.2006, 21:48 Titel: |
|
|
Ja,
verwende statt den beiden ShowWindow(....) folgendes (1x):
Code: | SetForegroundWindow(hWnd) |
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 22.08.2006, 05:42 Titel: |
|
|
Neues Problem:
Mein Programmname wird in der Taskleiste gar nicht angezeigt.
Auch dem Taskmanager entgeht es unter Programme völlig.
Nur unter Prozesse steht korrekt Wecker.exe.
Ich will es aber eigentlcih nicht verstecken.
Ich denk mal dass es daher kommt, dass die Titelleiste entfernt wird.
Gibt es da eine Lösung, dass es doch einen Namen hat? |
|
Nach oben |
|
|
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 22.08.2006, 23:41 Titel: |
|
|
Du musst deinem Fenster einen Namen geben, sonst wird es nicht im Task-Mager angezeigt.
Code: |
hWnd = CreateWindowEx(WS_EX_APPWINDOW, _
"Wecker", _
NULL, _ 'Hier eine Überschrift für das Fenster angeben.
WS_OVERLAPPED, _
CW_USEDEFAULT, _
CW_USEDEFAULT, _
300, _
300, _
NULL, _
NULL, _
hInstance, _
NULL ) |
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 23.08.2006, 06:56 Titel: |
|
|
Ich dachte darüber hätte man das schon angegeben.
ok, danke.funzt jetzt.
mfg noop |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|