Προς το περιεχόμενο

Δημιουργια Παραθυρου στη C++


thanospr

Προτεινόμενες αναρτήσεις

Γεια σας παιδια.Τις τελευταιες μερες ψαχνω να δω πως μπορω να κανω μια εφαρμογη σε παραθυρο.Τελικα καταφερα και εκανα κατι απλα πραγματα οπως textbox button που παιρνουν στοιχεια απο τα textbox και κανουν καποιες πραξεις.Τωρα θελω στο μενου να παταω ενα κουμπι open και να μου ανοιγει ενα αλλο παραθυρο.Πως μπορω να το φτιαξω αυτο;

Ευχαριστω για τον χρονο σας...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κατ αρχην σ ευχαριστω για την απαντηση σου.Ενα project φτιαχνω στο Cοdeblocks και με καποιες συναρτησεις φτιαχνεις το παραθυρο.Αυτο που μου εγραψες φιλε δεν δουλευει...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κατ αρχην σ ευχαριστω για την απαντηση σου.Ενα project φτιαχνω στο Cοdeblocks και με καποιες συναρτησεις φτιαχνεις το παραθυρο.Αυτο που μου εγραψες φιλε δεν δουλευει...

Η c++ δεν εχει καποιο "στανταρακι"framework για παραθυρα, για αυτο καλο ειναι να αναφερεις σε τι framework εισαι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

4.0.Δεν το ηξερα.Εχετε καταλαβει τι θελω να κανω; Το λεω μηπως δεν το χω γραψει καλα.Ας πουμε οταν σε ενα προγραμμα παταω file και μετα open με βγαζει ενα πλαισιο για να βρω καποιο αρχειο.Κατι τετοιο θελω να κανω αλλα πιο απλο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εχετε καταλαβει τι θελω να κανω;

 

Οχι. Πρεπει να μας πεις σε τι framework/api εισαι. Ειναι σα να σε ρωταω πως θα εκτυπωσω hello world στην κονσολα, και εσυ να μου λες cout<<"hellow world" και εγω να σου λεω οτι δεν εχω cout (αλλα ConsoleWriteLineForTheWinApi)

 

κανε paste αυτα που εχεις γραψει μπας και κταλαβουμε σε τι γραφεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>
#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
			 HINSTANCE hPrevInstance,
			 LPSTR lpszArgument,
			 int nFunsterStil)
{
HWND hwnd;			 /* This is the handle for our window */
MSG messages;		 /* Here messages to the application are saved */
WNDCLASSEX wincl;	 /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;	 /* This function is called by windows */
wincl.style = CS_DBLCLKS;				 /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;				 /* No menu */
wincl.cbClsExtra = 0;					 /* No extra bytes after the window class */
wincl.cbWndExtra = 0;					 /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
 return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
	 0,				 /* Extended possibilites for variation */
	 szClassName,		 /* Classname */
	 "Windows App",	 /* Title Text */
	 WS_OVERLAPPEDWINDOW, /* default window */
	 CW_USEDEFAULT,	 /* Windows decides the position */
	 CW_USEDEFAULT,	 /* where the window ends up on the screen */
	 544,				 /* The programs width */
	 375,				 /* and height in pixels */
	 HWND_DESKTOP,	 /* The window is a child-window to desktop */
	 NULL,			 /* No menu */
	 hThisInstance,	 /* Program Instance handler */
	 NULL				 /* No Window Creation data */
	 );
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
 /* Translate virtual-key messages into character messages */
 TranslateMessage(&messages);
 /* Send message to WindowProcedure */
 DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}

/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)				 /* handle the messages */
{   
case WM_CREATE:


   CreateWindow(TEXT("BUTTON"),TEXT("Button"),
    WS_CHILD | WS_VISIBLE,
   350,40,80,20,
   hwnd, (HMENU) ID_BUTTON, NULL, NULL

  );
 case WM_DESTROY:
	 PostQuitMessage (0);	 /* send a WM_QUIT to the message queue */
	 break;
 default:					 /* for messages that we don't deal with */
	 return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Α μαλιστα. Μιλας για win gdi.

Ωραια πες μας τωρα τι ακριβος θελεις.

 

υγ εχεις ενα bug στην switch. Μετα απο το createwindow (button) βαλε brake αλλιως θα τερματιζει η εφαρμογη

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

εχω απλα ειχα φτιαξει κι αλλα κουμπια και ξεχασα το break που το ειχα στο τελος.Εχω φτιαξει και μενου με την AppendMenu και θελω οταν παταω σε μια απο τις επιλογες του μενου να μου βγαζει ενα αλλο παραθυρο...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τα πιανεις τα message του menu; ( wm_command klp klp)

 

Το αλλο παραθυρο θα το φτιαξεις οπως εφτιαξες το κυριο (νεα wndclassex νεα wndproc κλπ) η μονη διαφορα ειναι οτι για να το εμφανισεις θα πρεπει να το φτιαξεις με createwindow (με parent hwnd να ειναι το κυριο).

Υπαρχει το dialog αλλα θες resource editor

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Που'σε, επειδη δουλευεις πανω σε winapi, στο googlarisma θα βαζεις και το winapi. πχ εχεις απορια για το πως φτιανεις ενα button. Πας google και βαζεις button winapi και οχι c++ button. Καλη συνεχεια.

 

 

αα και οταν εχεις απορια για συνρατηση του winapi βαζε στο googlarisma το msdn πχ. CreateWindow msdn και μπαινεις εδω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...