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

TabControl se C (Win32)


djapal

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

Kalhspera! H8ela na rwthsw an kapoios exei idea apo C GUI programming, wste na me boh8hsei me to tab control. Thelw na pros8esw as poume ena aplo textbox k ena button se ena tab k gia to button na yparxei ena event wste na emfanizei as poume ena messagebox.

Exw kollhsei ston kwdika pou prepei na xrhsimopoihsw sto na enswmatwsw ta controls se ena tab k na elegxw ta events toys. AN kserei kapoios, tha me boh8ouse para poly!

 

Y.G.: H lysh tou propertysheet de me boh8a :-|

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

Υποθετω μιλας για visual c?

Γιατι το property sheet δεν βοηθα; Σε ενα property page (που ειναι ουσιαστικα τα individual tabs που βαζεις στο propery sheet), μπορεις να βαλεις/βγαλεις controls με το τροπο που το κανεις και στα κανονικα dialogs οας πουμε.

Τι ακριβως θες να κανεις και που κολας;

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

ela file mou, etrexa se nosokomeia k gi'ayto den apanthsa pio nwris. Milaw gia katharh C. To propertysheet apo oso eida to dhlwneis eykola se ena resource kai xwneis mesa controls kai teleiwses. OMWS: sou kotsarei kai ena OK kai ena Cancel se kathe para8yro, ta opoia egw den ta thelw. Gi'auto kollaw me ta propsheets. An k pio eykolo, de me kalyptei dystyxws. Thelw na ftiaksw mia efarmogh pou exw ftiaksei se VC++.NET se katharh C, gia na dw diafora sthn taxythta giati to .NET einai safws pio argo k fysika eksoikeiwsh me th C se tetoia themata logw enasxolhshs se ena project.

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

κατ'αρχην ευχομαι τα νοσοκομεια να μην ειναι για κατι το σοβαρο και περαστικα σε οποιον τα χρειαζεται

 

κατα δευτερον δε μιλω για .ΝΕΤ αλλα για visual c (γνωστη και ως MFC αν προτιμας). Αν τα property sheets για τα οποια μιλας ονομαζονται κατι σαν CPropertySheet τοτε για MFC μιλαμε. By the way, η 'καθαρη' c δεν εχει παραθυρικες δυνατοτητες απο μονη της.

 

Αν τωρα, οντως μιλαμε για αυτα, τοτε το να απαλλαγεις απο τα στανταρ κουμπια που βαζει η MFC στο propery sheet, ειναι σχετικα ευκολο.

Τα στανταρ κοντρολς αυτα (τα κουμπια δηλαδη) εχουν προφανως και στανταρ IDs. Αυτα ειναι

IDOK για το ΟΚ button

IDCANCEL για το Cancel button

IDHELP για το Χελπ μπατον

ID_APPLY_NOW για το ..... καλα το μαντεψατε, apply button

 

θελεις να αφαιρεσεις ενα απο αυτά? Ιδου ο κωδικας

>
CWnd* pWnd = GetDlgItem( id ); //το id του control που θες

if(pWnd)
    pWnd->ShowWindow(FALSE);

//επαναλαμβανεις για οποιο αλλο δεν θες

//αν αργοτερα για καποιο λογο θες να το ξαναεμφανισεις γραφεις
pWnd->ShowWindow(TRUE);

 

αυτος ο κωδικας μπορει να μπει στη μεθοδο OnInitDialog η οποια εκτελειται αυτοματα ακριβως πριν εμφανιστει το παραθυρακι σου (το sheet) στην οθονη. ΜΗΝ το βαλεις στον constructor, το προγραμμα θα κλωτσησει οταν θα πας να το τρεξεις

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

oxi oxi milaw gia katharh c. Parathetw ena aplo paradeigma gia to pws na ftiakseis ena aplo para8yro

 

#include <windows.h>

 

const char g_szClassName[] = "myWindowClass";

 

// Step 4: the Window Procedure

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg)

{

case WM_CLOSE:

DestroyWindow(hwnd);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hwnd, msg, wParam, lParam);

}

return 0;

}

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow)

{

WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

 

//Step 1: Registering the Window Class

wc.cbSize = sizeof(WNDCLASSEX);

wc.style = 0;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wc.lpszMenuName = NULL;

wc.lpszClassName = g_szClassName;

wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

 

if(!RegisterClassEx(&wc))

{

MessageBox(NULL, "Window Registration Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

 

// Step 2: Creating the Window

hwnd = CreateWindowEx(

WS_EX_CLIENTEDGE,

g_szClassName,

"The title of my window",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,

NULL, NULL, hInstance, NULL);

 

if(hwnd == NULL)

{

MessageBox(NULL, "Window Creation Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

 

ShowWindow(hwnd, nCmdShow);

UpdateWindow(hwnd);

 

// Step 3: The Message Loop

while(GetMessage(&Msg, NULL, 0, 0) > 0)

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return Msg.wParam;

}

 

ktl ktl ktl... Ayto ennow. Xwris MFC, just pure C. einai ligo zori to kserw! ;)

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

θελουμε λοιπον plain win32 API.....

 

για να παρεις ενα handle στο control που θες ειναι η GetDlgItem

 

δηλαδη γραφεις πχ

>
HWND hCancelButton = GetDlgItem(hParentHandle, IDCANCEL);

// hParentHandle, εδω ειναι ενα χαντλ στο propetysheet που φιλοξενει το ανεπιθημητο default control

 

αυτο που δεν ξερω, ειναι τα default ids για τα controls. Για την MFC σου τα εγραψα στο προηγουμενο ποστ, πρεπει να ειναι παραπλησια (βασικα η MFC ειναι ενας wrapper για το win32 api, δε κανει κατι παραπανω) ή και ιδια αλλα πρεπει να το ψαξεις.

για να κρυψεις ενα κοντρολ ειναι η ShowWindow

 

px

>
ShowWindow(hCancelButton,SW_HIDE);

 

 

Μετα απ'ολα αυτα πρεπει να σε πληροφορησω οτι δε θα κερδισεις σε ταχυτητα εκτελεσης γραφοντας σε pure win32 api, σε σχεση με την MFC. Η MFC δεν ειναι μια αλλη βιβλιοθηκη, αλλα ενας wrapper, δηλ ενθυλακωνει και απλοποιει τη λειτουργικοτητα του win32 api.

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

Μετα απ'ολα αυτα πρεπει να σε πληροφορησω οτι δε θα κερδισεις σε ταχυτητα εκτελεσης γραφοντας σε pure win32 api, σε σχεση με την MFC. Η MFC δεν ειναι μια αλλη βιβλιοθηκη, αλλα ενας wrapper, δηλ ενθυλακωνει και απλοποιει τη λειτουργικοτητα του win32 api.

 

Sto project me to opoio asxoloumai, den xrhsimopoiountai oi MFC.

 

Tespa, tha to psaksw kai elpizw na brw lysh me ta propsheets giati me to tab control.... trexa gyreye! thnx

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...

Χρησιμοποιούμε  cookies για να απολαμβάνεις το insomnia προσωποποιημένο στις ανάγκες σου αλλά και για την παροχή στοιχείων επισκεψιμότητας για να βελτιώσουμε την ποιότητα των υπηρεσιών μας