08. februar 2009 - 14:10
Der er
78 kommentarer og 1 løsning
Meget gratis hjælp.
http://www.freeimagehosting.net/uploads/db5741f2e0.jpg Det er det jeg gerne vil ha lavet, eller ha meget hjælp til at lave.
Hvis der er nogen som lige hurtigt kan lave det så sig til fordi så kan i få min e-mail og så kan i bare sende alle filerne til mig, i får selfølig 200 point for det og selfølgeligt en masse ros :)
Hvis der er spørgsmål angående tegningen så sig bare til men er i gang med at finde ud af hvordan den precis ska skal se ud og skal kunne gøre.
Hilsen: Kim Bork
Annonceindlæg fra Computerworld it-jobbank
08. februar 2009 - 16:06
#2
Jeg vil stadig godt hjælpe dig med at lave programmet, men jeg vil ikke lave det for dig. Jeg har først tid sent i aften.
08. februar 2009 - 16:12
#3
okay bertel jeg troede at du ikke gad :) Tak, men ved du ca, hvornår i aften?
08. februar 2009 - 16:16
#4
og kan du ikke lige hurtigt forklare hvorfor bitmap exemplet ikke virker?
08. februar 2009 - 17:49
#5
Den bliver sikkert over 11 inden jeg får tid i aften. Det bitmat eksemplet skal gøre, er at vise en billede fra en fil, filen forventes at hedde sample.bmp og ligge i samme mappe som programmet (eller der hvorfra programmet køres). Du kan naturligvis ændre navnet på filen, men det skal være en .bmp fil. Hvad sker der når du forsøger at køre det? Kan det oversættes? Kører programmet? Og hvis jeg skal hjælpe dig bliver du nødt til at komme med nogle bedre tilbagemeldinger, det hjælper ikke at du bare skriver "det virker ikke", eller "hvad gør jeg så". Og det er ikke god stil at du bare lukker (og tager point tilbage) de spørgsmål du opretter og hvori du har fået god hjælp. Det kan godt være at du ikke fik præcist det du søgte eller at du ikke fik løst hele problemet, men folk har trods alt brugt tid på at svare.
08. februar 2009 - 19:28
#6
okay, Tak Det ska ljeg huske til en anden gang :)
08. februar 2009 - 19:49
#7
http://www.freeimagehosting.net/uploads/bc43fc890f.jpg Så har jeg taget et print screen af den fejl leg får når jeg prøver at kompille din bitmaip Exempel :)
Kode Her --->
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <string.h>
#include <stdio.h>
HINSTANCE hInst;
HWND hwndMain;
HBITMAP Bitmap;
UINT ImageWidth, ImageHeight;
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
HBITMAP LoadBMP(const char *FileName, UINT *Width, UINT *Height)
{
HBITMAP BitMap = (HBITMAP )LoadImage(0, FileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if(!BitMap)
MessageBox(0, "Failed to load image", "BitMap", MB_OK);
else
{
BITMAP BitmapInfo;
GetObject(BitMap, sizeof(BITMAP), &BitmapInfo);
*Width = BitmapInfo.bmWidth;
*Height = BitmapInfo.bmHeight;
}
return BitMap;
}
static BOOL InitApplication(void)
{
WNDCLASS wc;
memset(&wc,0,sizeof(WNDCLASS));
wc.style = CS_HREDRAW|CS_VREDRAW |CS_DBLCLKS ;
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.hInstance = hInst;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "BitmapWndClass";
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
if (!RegisterClass(&wc))
return 0;
Bitmap = LoadBMP("sample.bmp", &ImageWidth, &ImageHeight);
return 1;
}
HWND CreateBitmapWndClassWnd(void)
{
return CreateWindow("BitmapWndClass","Bitmap",
WS_MINIMIZEBOX|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_MAXIMIZEBOX|
WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,
NULL,
NULL,
hInst,
NULL);
}
void OnPaint(HWND hwnd)
{
PAINTSTRUCT PaintStruct;
HDC dc = BeginPaint(hwnd, &PaintStruct);
HDC MemDC = CreateCompatibleDC(dc);
HBITMAP OldBitmap = (HBITMAP )SelectObject(MemDC, Bitmap);
BitBlt(dc, 0, 0, ImageWidth, ImageHeight, MemDC, 0, 0, SRCCOPY);
SelectObject(MemDC, OldBitmap);
DeleteObject(MemDC);
EndPaint(hwnd, &PaintStruct);
}
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
OnPaint(hwnd);
return TRUE;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
{
MSG msg;
hInst = hInstance;
if (!InitApplication())
return 0;
if ((hwndMain = CreateBitmapWndClassWnd()) == (HWND)0)
return 0;
ShowWindow(hwndMain,SW_SHOW);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
08. februar 2009 - 20:17
#8
Ret enkelt, du skal bare linke til biblioteket gdi32, som med Dev-Cpp hedder libgdi32.a, fordi compileren bag Dev-Cpp er g++ Jeg har længst glemt hvordan du gør det med Dev-cpp, men jeg er ret sikker på at du kan finde svaret på google i løbet af et par minutter.
08. februar 2009 - 22:39
#9
Nu har jeg søgt på google i 1 timme og 30 min men kan ikke finde nogte om at linke til biblioteket
08. februar 2009 - 23:02
#10
08. februar 2009 - 23:19
#11
Så viser den et billed :) Er der ikke en måde som ikke fylder så meget kode? og det skal også over i det andet vindue som vi lavede i går og så ska man kunne vælge position og størelse på billedet :)
08. februar 2009 - 23:40
#12
Jeg havde også dette eksempel på lager, det er lidt enklere: #include <windows.h> #define IDC_STATIC_1 1201 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_VISIBLE | SS_BITMAP, // Style 5, 5, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "sample.bmp", IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 150, 150, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
08. februar 2009 - 23:56
#13
Tak :)
09. februar 2009 - 00:06
#15
Hvis du kikker på den dialogbox der er her:
http://damb.dk/dialogtut.php kan du se at den har de elementer du skal bruge, undtagen billedet som vi nu har styr på.
Tutorialen er 9 små afsnit, og til slut i hvert afsnit er der et link til et færdigt program, så det er blot et spørgsmål om at klippe og klistre.
09. februar 2009 - 00:31
#16
Jeg kunne altså ikke lige finde en textbox i dine exempler :)
09. februar 2009 - 01:12
#17
Der er en del enkelt-linie tekstbokse/editbokse, det er ret trivielt at lave dem om til at være multi-linie.
09. februar 2009 - 12:34
#18
Hvis det bare ska lvære en text box hvad ska lder så stå i ID ??? CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 5, 65, 120, 20, // position hwndDlg, // Owner (HMENU)(ResultEditId), // ID InstanceHandle, // The application 0); Kim Bork
09. februar 2009 - 19:31
#19
Alle kontroller i din dialog-box skal have et unikt ID, den static du har, bruger dette ID: #define IDC_STATIC_1 1201 Så det ville nok være logisk at lave et tilsvarende ID til din edit: #define IDC_EDIT_1 1202 Og bruge den når du oprette den: CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 5, 65, 120, 20, // position hwndDlg, // Owner (HMENU)(IDC_EDIT_1), // ID InstanceHandle, // The application 0); Eller du kan bruge en enumerator til at definere dine ID'er
09. februar 2009 - 20:16
#20
Nu har jeg sat den ind en den viser ikke min text box. Hvorfor? #include <windows.h> #define IDC_STATIC_1 1201 #define IDC_EDIT_1 1202 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_VISIBLE | SS_BITMAP, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Head_img.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 500, 300, 300, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT_1), // ID InstanceHandle, // The application 0); } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
09. februar 2009 - 20:58
#21
Du skal nok finde et mere passende sted at oprette din edit-contorl. Den CreateWindowEx der skal oprette den bliver aldrig kaldt. Prøv at læse lidt på switch sætninger i din C++ begynderbog.
09. februar 2009 - 21:15
#22
kan man endre på baggrundsfarven i text boxen så det bliver helt hvidt? Og kan man ikke helt fjærne maximizeboxen så den sledt ikke er der jeg ved godt at man bare kan fjerne WS_MAXIMIZEBOX men så er den der ju stadig man kan bare ike trykke på den?
09. februar 2009 - 21:28
#23
Så det begynder at ligne noget :) Så skal jeg ha 2 knapper
09. februar 2009 - 21:29
#24
Grunden til at editboksen er grå og ikke hvid er at den er read-only, hvis du fjerner ES_READONLY bliver den hvid. Jeg ved ikke om du kan fjerne maximize boksen helt, har du ikke vigtigere problemer? Ellers må du i gang med google.
09. februar 2009 - 21:35
#25
okay jo jeg har viktigere problemer nemlig mine knapper
09. februar 2009 - 21:48
#26
Hvis jeg fjerner readonly så kan man ju slett texten i textboxene :(
09. februar 2009 - 21:57
#27
Så er første side af it program færdigt :)
09. februar 2009 - 21:57
#28
#include <windows.h> #define IDC_STATIC_1 1201 #define IDC_EDIT_1 1202 #define IDC_BUTTON_1 1203 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_VISIBLE | SS_BITMAP, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON_1), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
09. februar 2009 - 22:01
#29
Jeg skal ha knappen "afslut" til at lukke programmet og knappen "acepter" til at åbne et nyt program i samme vindue altså skifte side :)
09. februar 2009 - 22:20
#30
For at få den til at afslutte når du trykker på den rigtige knap kan du tilføje: case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON_1) { DestroyWindow(hwndDlg); } break; IDC_BUTTON_1 skal være ID'en på den knap der får den til at afslutte. Som jeg skrev skal alle kontroller have et unikt ID, begge dine knapper har det samme ID, det går ikke, for så kan man ikke vide hvilken knap der er trykket på. Jeg ved ikke hvad du mener med "at åbne et nyt program i samme vindue altså skifte side "
09. februar 2009 - 22:52
#32
Du kan kalde EnableWindow for at disable de kontroller der er på "side 1" og så oprette de kontroller der skal være på "side 2" med CreateWindow. Du får nok brug for funktionen GetDlgItem.
09. februar 2009 - 22:58
#33
Du har vel ikke et exempel?? Jeg har nemlig ingen anelse om hvordan det skal gøres :) Her er koden ---> #include <windows.h> #define IDC_STATIC_1 1201 #define IDC_EDIT1_1 1202 #define IDC_EDIT2_1 1203 #define IDC_BUTTON1_1 1204 #define IDC_BUTTON2_1 1205 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_VISIBLE | SS_BITMAP, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT1_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT2_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_1), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_1) { DestroyWindow(hwndDlg); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
09. februar 2009 - 23:13
#34
Det er mandag, klokken er mange og jeg er træt, så det er måske på tide at du selv kikker på funktionerne på MSDN og får noget strikket sammen...
09. februar 2009 - 23:20
#35
kay jeg vil selv se idt på det til i morgen aften :)
09. februar 2009 - 23:30
#36
Ok, du skal også finde ud af hvordan du sender en email fra din applikation.
09. februar 2009 - 23:41
#37
Ja, jeg prøver mig frem :) "Google is your friend"
10. februar 2009 - 17:49
#38
Jeg har altså ikke fundet ud af hvordan man skifter vindue :( Men jeg tror at jeg har fundet en e-mal sender :)
10. februar 2009 - 19:59
#39
Hvis du starter med at oprette et andet billede: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test2.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } Det er ca. det samme som det første billede, bemærk dog at det er WS_DISABLED og ikke WS_VISIBLE, og at ID'et er et andet. Så kan du skrifte fra det første billede til det andet med denne kode, som placeres under WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_1), 0, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_2), 0, TRUE); InvalidateRect(hwndDlg, 0, TRUE); } Så skal du bare gøre det samme for de andre kontroller.
10. februar 2009 - 20:02
#40
jamen hvordan får jeg programmet til at slette alt der er i vinduet og erstate det med det andet som skal være der ved at trykke på en knap?
10. februar 2009 - 20:12
#41
Hvor skal jeg sette den kode ind som du skrev og hvor er WM_COMMAND?
10. februar 2009 - 20:18
#42
Hvor skal den kode sætes ind for at virke :) { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); }
10. februar 2009 - 20:22
#43
og skal man lave en #define IDC_STATIC_2 1206?
10. februar 2009 - 21:55
#44
Ideen er at man viser de nye elementer og disabler de gamle, derved skrifter indholdet. Du får lige hele min kode: #include <windows.h> #define IDC_STATIC_1 1201 #define IDC_EDIT1_1 1202 #define IDC_EDIT2_1 1203 #define IDC_BUTTON1_1 1204 #define IDC_BUTTON2_1 1205 #define IDC_STATIC_2 1206 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | SS_BITMAP | WS_VISIBLE, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 1", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test2.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT1_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT2_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_1), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_1) { DestroyWindow(hwndDlg); } if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_1), 0, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_2), 0, TRUE); InvalidateRect(hwndDlg, 0, TRUE); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
10. februar 2009 - 22:02
#45
Tak jeg vil gå videre med det :) Hvis du ved hvordan man skal sende en e-mail fra programet må du godt hjælpe mig med det for jeg har ingen anelse om det.
10. februar 2009 - 22:05
#46
Jeg ved ikke hvordan man sender emails, jeg kunne sikkert godt finde ud af det, men det bliver ikke foreløbigt. Jeg tror Arne ved det, måske skulle du oprette et separat spørgsmål til det.
10. februar 2009 - 22:07
#47
okay men jeg har lige et problem jeg har fundet ud af at den ikke sleter det gamle billed fra programet og setter et nyt ind den sætter bare et nyt billed ovenpå det gamle.
10. februar 2009 - 22:30
#48
Hvad er problemet? Det gamle billede er stadig i programmet, men hvis ikke det kan ses? Du kan evt. prøve at nøjes med at have én static og så skifte billedet med: SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap);
10. februar 2009 - 22:57
#49
det billed jeg skal have på de 2 sider er ens og skal side det samme sted problemet omer bare med text boxene de skal ju ikke være der på næste side :)
10. februar 2009 - 22:59
#50
eller jo der skal være de 2 tet boxe også men d skal bare endre størelse og text :)
10. februar 2009 - 23:34
#51
Metoden til at skifte mellem tekstboxe er den samme som metoden til at skifte mellem billeder. Jeg brugt bare billedet som et eksempel.
10. februar 2009 - 23:41
#52
okay
11. februar 2009 - 22:48
#53
dit exempel sletter ikke det gamle den smider bare noget nyt ovenpå :)
11. februar 2009 - 22:53
#54
Prøv lige at lave et eksempel der ikke virker, så skal jeg få det til at virke. Jeg går ud fra at du med "sletter ikke det gamle" mener at det gamle stadig er synligt?
11. februar 2009 - 23:28
#55
Når man trykker på Acepter knappen skal den slette alt i vinduet og sætte noget nyt ind :)
11. februar 2009 - 23:33
#56
Ja, det har jeg forstået...
12. februar 2009 - 00:23
#57
Kan du så ikke lige lave det for mig fordi jeg tror ikke at jeg forstår hvd du mener
12. februar 2009 - 00:37
#58
Så har vi den igen: "kan du ikke lave"... Det var sådan set meningen at du selv skulle lave det. Anyway, denne linje: SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); skjuler en kontrol, og denne viser en: SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); For at være sikker på at systemet får gentegnet de kontroller man har skjult/vist, laver man en: InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_2), 0, TRUE); Du skal bare vise de nye kontroller og skjule de gamle. Ret enkelt.
12. februar 2009 - 00:56
#59
Prøv at se, hvis størelsen på billedet ikke skal være det samme så kommer problemet. Man kan stadig se det gamle billed under det nye :( #include <windows.h> #define IDC_STATIC_1 1201 #define IDC_EDIT1_1 1202 #define IDC_EDIT2_1 1203 #define IDC_BUTTON1_1 1204 #define IDC_BUTTON2_1 1205 #define IDC_STATIC_2 1206 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | SS_BITMAP | WS_VISIBLE, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 1", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test2.bmp", IMAGE_BITMAP, 494, 100, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT1_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT2_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_1), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_1) { DestroyWindow(hwndDlg); } if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_2), 0, TRUE); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
12. februar 2009 - 01:35
#60
Problemet er at den, afhængig af forholdene, ikke altid får gentegnet vinduet som den skal. Prøv med denne sekvens i stedet: SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE);
12. februar 2009 - 01:42
#61
Mange tak, så er det eneste jeg mangler ju bare e-mail senderen og så er jeg færdig :)
12. februar 2009 - 01:50
#62
Dit exempel virker ikke på text boxene :) #include <windows.h> //Program Side 1 #define IDC_STATIC_1 1201 #define IDC_EDIT1_1 1202 #define IDC_EDIT2_1 1203 #define IDC_BUTTON1_1 1204 #define IDC_BUTTON2_1 1205 //Program Side 2 #define IDC_STATIC_2 1206 #define IDC_EDIT1_2 1207 #define IDC_EDIT2_2 1208 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: //Program Side 1 { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | SS_BITMAP | WS_VISIBLE, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 1", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT1_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT2_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_1), // ID InstanceHandle, // The application 0); } //Program Side 2 { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Test2.bmp", IMAGE_BITMAP, 494, 100, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "overskrift 2", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_EDIT1_2), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box 2", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_READONLY, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_EDIT2_2), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_1) { DestroyWindow(hwndDlg); } if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE); } { SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE); }{ SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
12. februar 2009 - 02:07
#63
Du skal huske at de edit-bokse (og andre kontroller) der skal være på "side 2" ikke skal have WS_VISIBLE når de oprettes, derimod skal de have WS_DISABLED Og så skal du lige have styr på {} så det hele kommer ind under if(...) og du behøver kun SetWindowPos én gang: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT1_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_EDIT2_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE); }
12. februar 2009 - 02:12
#64
Nu virker det men texten bliver grå når man har trykket på Acepter knappen :)
12. februar 2009 - 20:02
#65
Mon ikke du bare skal fjerne dine ES_READONLY ?
12. februar 2009 - 21:52
#66
Det virker ikke prøv selv :) #include <windows.h> //Program Side 1 #define IDC_STATIC_1 1201 #define IDC_OVER_1 1202 #define IDC_TEXT_1 1203 #define IDC_BUTTON1_1 1204 #define IDC_BUTTON2_1 1205 //Program Side 2 #define IDC_STATIC_2 1206 #define IDC_OVER_2 1207 #define IDC_TEXT_2 1208 #define IDC_BUTTON1_2 1209 #define IDC_BUTTON2_2 1210 HINSTANCE InstanceHandle; LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: //Program Side 1 { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | SS_BITMAP | WS_VISIBLE, // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_1), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Head_img.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 1", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "overskrift", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_OVER_1), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box", // Initial Text WS_CHILD | WS_VISIBLE | ES_NUMBER, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_TEXT_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_1), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Acepter", // Button Text WS_CHILD | WS_VISIBLE | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_1), // ID InstanceHandle, // The application 0); } //Program Side 2 { CreateWindow("STATIC", "0", // Initial Text WS_CHILD | WS_DISABLED | SS_BITMAP , // Style 0, 0, 100, 100, // position hwndDlg, // Owner (HMENU)(IDC_STATIC_2), // ID InstanceHandle, // The application 0); HBITMAP Bitmap = (HBITMAP )LoadImage(0, "Head_img.bmp", IMAGE_BITMAP, 494, 150, LR_LOADFROMFILE); if(!Bitmap) MessageBox(hwndDlg, "No Image 2", "---", 0); SendDlgItemMessage(hwndDlg, IDC_STATIC_2, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM )Bitmap); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "overskrift 2", // Initial Text WS_CHILD | WS_DISABLED | ES_NUMBER, // Style 10, 160, 475, 40, // position hwndDlg, // Owner (HMENU)(IDC_OVER_2), // ID InstanceHandle, // The application 0); } { CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Text-Box 2", // Initial Text WS_CHILD | WS_DISABLED | ES_NUMBER, // Style 10, 210, 475, 300, // position hwndDlg, // Owner (HMENU)(IDC_TEXT_2), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Afslut", // Button Text WS_CHILD | WS_DISABLED | WS_TABSTOP, // Style 10, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON1_2), // ID InstanceHandle, // The application 0); } { CreateWindow("BUTTON", "Send", // Button Text WS_CHILD | WS_DISABLED | WS_TABSTOP, // Style 364, 525, 120, 30, // position hwndDlg, // Owner (HMENU)(IDC_BUTTON2_2), // ID InstanceHandle, // The application 0); } break; case WM_KEYDOWN: if(wParam == VK_F4) { PostQuitMessage(0); } break; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_1) { DestroyWindow(hwndDlg); } if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON2_1) { SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_STATIC_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_OVER_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_OVER_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_OVER_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_OVER_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_TEXT_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_TEXT_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_TEXT_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_TEXT_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON1_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON1_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON1_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON1_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON2_1), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON2_1), GWL_STYLE) & ~WS_VISIBLE) | WS_DISABLED ); SetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON2_2), GWL_STYLE, (GetWindowLong(GetDlgItem(hwndDlg, IDC_BUTTON2_2), GWL_STYLE) | WS_VISIBLE) & ~WS_DISABLED ); InvalidateRect(hwndDlg, 0, TRUE); SetWindowPos(hwndDlg, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSIZE); } if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1_2) { DestroyWindow(hwndDlg); } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { InstanceHandle = hInstance; WNDCLASS wc; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", // Caption text WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 500, 600, // Position NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
12. februar 2009 - 22:24
#67
Det lader til at du skal lade være med at bruge WS_DISABLED når du opretter de edit boxe der er på side 2. Du kan også genbruge de samme edit-boxe på begge sider, og bare putte noget nyt tekst ind i dem.
12. februar 2009 - 22:28
#68
hvordan gør man så det det eneste jeg skal ha endret er texten og størelsen :)
12. februar 2009 - 22:36
#69
På et eller andet tidspunkt skal du have kikket på SetDlgItemText og GetDlgItemText, start her:
http://msdn.microsoft.com/en-us/library/ms645489 (VS.85).aspx
Du kan se hvordan du kan ændre fonten her:
http://damb.dk/dialogtut09.php Men ellers kan jeg anbefale dig at sætte dig ind i brugen af punktum og komma ved konstruktion af danske sætninger, de gør det muligt for andre at få et indblik i hvad du mener...
12. februar 2009 - 23:09
#70
Jeg kan altså stadig ikke finde ud af det :(
12. februar 2009 - 23:46
#71
Hvad kan du altså ikke finde ud af?
12. februar 2009 - 23:59
#72
at få text boxene til at skifte størelse og text når jeg trykker Acepter
12. februar 2009 - 23:59
#73
Uden at de bliver grå :)
13. februar 2009 - 00:14
#74
Åh, det er størrelsen på selve tekstboxen du vil have ændret.
Prøvede du lade være med at bruge WS_DISABLED?
Ellers kan du prøve at bruge MoveWindow til at ændre størrelsen på edit-kontrollen:
http://msdn.microsoft.com/en-us/library/ms633534 (VS.85).aspx
HWND parameteren får du med GetDlgItem, som sædvanligt.
13. februar 2009 - 18:20
#75
kan ikke finde ud af det
13. februar 2009 - 18:46
#76
Prøv at skrive lidt mere end "kan ikke finde ud af det". Hvad er det, helt præcist, du ikke kan finde ud af? Hvad har du prøvet? Hvad skete der da du gjorde det? Jeg er på vej ud af døren, og er ikke rigtigt online igen før mandag.
14. februar 2009 - 22:23
#77
Jeg tror bare at jeg gør det på den nemme måde :) Når man trykker Acepter så skal vinduet lukke og så skal der åbne et nydt vindue :)
16. februar 2009 - 13:38
#78
Tak, for hjælpen :(
13. april 2009 - 00:23
#79
.
Kurser inden for grundlæggende programmering