webForumDet fria alternativet

Dialog ruta.

10 svar · 405 visningar · startad av roj

rojMedlem sedan apr. 2002179 inlägg
#1

Någon som har något bra exempel på hur jag skapar en dialog ruta utan att använda MFC..?

nikoMedlem sedan juni 20022 599 inlägg
#2

Är osäker på om du verkligen menar en dialogruta eller kanske bara en MessageBox?

Dialogruta:
Skapa en dialogruta i resurseditorn (id: IDD_DIALOG1).

#include <windows.h>
BOOL CALLBACK myDlgProc(HWND hwndDlg, 
  UINT uMsg,     
  WPARAM wParam,
  LPARAM lParam) 

{
	switch(uMsg)
	{
	case(WM_INITDIALOG):
	//Kod som utföres när dialogrutan först visas.
	case(WM_COMMAND):
			switch(wParam)
		{
			case(IDOK):
				//Kod som utföres när OK-knappen klickas.
				return true;
				break;
			case(IDCANCEL):
				//Kod som utföres när Cancel-knappen klickas.
				EndDialog(hwndDlg,true);
				return true;
				break;
			default:
				break;
		}
	default:
		break;
	}
	return false;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	//Annan kod.
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, myDlgProc);
	//Annan kod.
	return 0;
}

MessageBox:

#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	//Annan kod.
	MessageBox(NULL,"Ditt meddelande.","Din fönstertitel.",MB_ICONINFORMATION);
	//Annan kod.
	return 0;
}
rojMedlem sedan apr. 2002179 inlägg
#3

Jag menade Dialog ruta.. :) Tack för hjälpen.. Men fick det inte att funka utan fick dessa felen..

C:\Documents and Settings\Administrator\Desktop\External Function Plug-in\Source\FMFunct.cpp(110) : error C2601: 'myDlgProc' : local function definitions are illegal

C:\Documents and Settings\Administrator\Desktop\External Function Plug-in\Source\FMFunct.cpp(140) : error C2601: 'WinMain' : local function definitions are illegal

PeWMedlem sedan juni 200010 432 inlägg
#4

Hur har du skapat projektet? Console eller win32 app?

rojMedlem sedan apr. 2002179 inlägg
#5

win32 antar jag.. Vet inte riktigt det är ett gammalt program som jag ska fortsätta med.. Hur ser man lättast om det är win32 eller console?

nikoMedlem sedan juni 20022 599 inlägg
#6

Det låter som om du har klistrat in koden felaktigt.

myDlgProc är en fristående funktion och ska ligga utanför andra funktioner. Anropet till DialogBox placerar du sen där du vill ha det. Min kod var bara ett exempel. Har du redan en WinMain/Main så ska du inte skapa en ny.

Om du sen kompilerar en console- eller win32app har egentligen ingen betydelse förutom att du inte har tillgång till resurseditorn på samma sätt för en consoleapp. Du måste ju "designa" din dialogruta och då är det mer praktiskt om du valt projekttypen "Win32 Application".

rojMedlem sedan apr. 2002179 inlägg
#7

Hmm har fortfarande problem..

Nu ligger både myDlgProc och winmain utanför alla funktioner..
Men jag får detta felet ändå..

C:\Documents and Settings\Administrator\Desktop\of External Function Plug-in\Source\FMFunct.cpp(900) : error C2065: 'IDD_DIALOG1' : undeclared identifier

nikoMedlem sedan juni 20022 599 inlägg
#8

niko skrev:

Du måste ju "designa" din dialogruta

Insert->Resource->Dialog->New

rojMedlem sedan apr. 2002179 inlägg
#9

Har jag gjort och den heter IDD_DIALOG1

Det e ju det som e konstigt..

rojMedlem sedan apr. 2002179 inlägg
#10

Okej jag hitta vad som var fel.. Nu kan jag kompilera utan
problem men det blir inget fönster. Vilken rad/rader ska jag köra
för att få fram mitt fönster.. Jag vill nu Också kunna göra detta från en funktion. Tack för att ni tar er tid.. :)

nikoMedlem sedan juni 20022 599 inlägg
#11

OK. Du upptäckte att du var tvungen att inkludera "resource.h"?

Varför fönstret inte visas vet jag inte. Det ska räcka med att anropa DialogBox precis var du vill.

Det enda jag kan tänka mig är att du egentligen inte kompilerar resurserna.

Högerklicka på "Resource Files" i fileviewen välj "Add files to folder" och browsa fram till "Script1.rc", om den heter så. Sen ska det funka.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)