Någon som har något bra exempel på hur jag skapar en dialog ruta utan att använda MFC..?
Dialog ruta.
10 svar · 405 visningar · startad av roj
Ä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;
}
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
Hur har du skapat projektet? Console eller win32 app?
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?
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".
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
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.. :)
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.