|
| Radio button Fra : Søren Jensen |
Dato : 27-10-03 17:55 |
|
jeg skal bare kunne disablede og enablede en radio buttom inde fra
programmet.
det er nok noget med BM_SETCHECK, men jeg kan ikke lige se hvordan,
der findes sikkert en nem løsning, jeg kan bare ikke finde den.
på forhånd tak.
Søren
| |
Bertel Brander (27-10-2003)
| Kommentar Fra : Bertel Brander |
Dato : 27-10-03 20:38 |
|
Søren Jensen wrote:
> jeg skal bare kunne disablede og enablede en radio buttom inde fra
> programmet.
> det er nok noget med BM_SETCHECK, men jeg kan ikke lige se hvordan,
> der findes sikkert en nem løsning, jeg kan bare ikke finde den.
>
Du kan bruge BM_SETCHECK hvis din radio-button har enten BS_3STATE
eller BS_AUTO3STATE style.
Du kan sende beskeden vha. SendDlgItemMessage(...).
Ellers kan du bruge SetWindowLong(...) til at sætte/fjerne WS_DISABLED.
Hvilken kompiler?
/b
| |
Søren Jensen (27-10-2003)
| Kommentar Fra : Søren Jensen |
Dato : 27-10-03 22:05 |
|
Visual C++
jeg kan bare ikke se hvordan BM_SETCHECK bruges, jeg mener at der skulle
være en "identifier", men jeg er nok forkert på den, det er nok mere et
grundlæggende problem. Det skal lige siges at jeg kun har programmeret
Visual i 2 måneder.
Tak Søren
PS. Hvis der er nogen der kender en side med små eksempler, må de gerne
smide et link. Tak
| |
Bertel Brander (28-10-2003)
| Kommentar Fra : Bertel Brander |
Dato : 28-10-03 00:22 |
|
Søren Jensen wrote:
> Visual C++
>
> jeg kan bare ikke se hvordan BM_SETCHECK bruges, jeg mener at der skulle
> være en "identifier", men jeg er nok forkert på den, det er nok mere et
> grundlæggende problem. Det skal lige siges at jeg kun har programmeret
> Visual i 2 måneder.
>
> Tak Søren
>
> PS. Hvis der er nogen der kender en side med små eksempler, må de gerne
> smide et link. Tak
>
Hvis du bruger MFC, er din radio button en CButton. Du bruger
GetDlgItem(...) til at få fat i din button, f.ex:
CButton *RadioButton = (CButton *)GetDlgItem(IDC_RADIO1);
IDC_RADIO1 er ID'en på din button. Du kan finde den ved at højre
klikke på knappen i resource editoren (eller ved at kikke i .rc filen).
Derefter checker du om du nu også fik fat i knappen:
ASSERT(RadioButton);
Så kan du disable og enable radio button'en:
if(Enable)
RadioButton->SetCheck(1);
else
RadioButton->SetCheck(2);
Det forudsætter at den linie i .rc-filen der definerer radio button'en
ser ca sådan ud:
RADIOBUTTON "Radio1",IDC_RADIO1,72,145,116,16, BS_3STATE, 0
Jeg kan ikke se hvordan man får sat "BS_3STATE" vha. resource editoren.
Så du er nødt til at åbne .rc filen som en text fil.
/b
| |
Kasper Bo Larsen (29-10-2003)
| Kommentar Fra : Kasper Bo Larsen |
Dato : 29-10-03 08:31 |
|
Nu er jeg vokset op med Borland C++ produkter så MFC er ikke lige mit
speciale, men jeg mener at have hørt at ASSERT macro'en kun "ses"
under _DEBUG så hvis du ønsker at være helt sikker skal koden vist se
sådan ud :
CButton *RadioButton = (CButton *)GetDlgItem(IDC_RADIO1);
if ( RadioButton)
{
if(Enable)
RadioButton->SetCheck(1);
else
RadioButton->SetCheck(2);
}
Med venlig hilsen
Kasper
Bertel Brander <bertel@post4.tele.dk> wrote in message news:<3f9da7c3$0$29358$edfadb0f@dread15.news.tele.dk>...
> Søren Jensen wrote:
>
> Hvis du bruger MFC, er din radio button en CButton. Du bruger
> GetDlgItem(...) til at få fat i din button, f.ex:
>
> CButton *RadioButton = (CButton *)GetDlgItem(IDC_RADIO1);
>
> IDC_RADIO1 er ID'en på din button. Du kan finde den ved at højre
> klikke på knappen i resource editoren (eller ved at kikke i .rc filen).
> Derefter checker du om du nu også fik fat i knappen:
>
> ASSERT(RadioButton);
>
> Så kan du disable og enable radio button'en:
>
> if(Enable)
> RadioButton->SetCheck(1);
> else
> RadioButton->SetCheck(2);
| |
Bertel Brander (29-10-2003)
| Kommentar Fra : Bertel Brander |
Dato : 29-10-03 20:46 |
|
Kasper Bo Larsen wrote:
> Nu er jeg vokset op med Borland C++ produkter så MFC er ikke lige mit
> speciale, men jeg mener at have hørt at ASSERT macro'en kun "ses"
> under _DEBUG så hvis du ønsker at være helt sikker skal koden vist se
> sådan ud :
>
> CButton *RadioButton = (CButton *)GetDlgItem(IDC_RADIO1);
> if ( RadioButton)
> {
> if(Enable)
> RadioButton->SetCheck(1);
> else
> RadioButton->SetCheck(2);
> }
>
Jeg tror at grunden til at man bruger ASSERT(...), som ganske rigtigt
kun checker i debug builds, er, at hvis man kan få fat i radiobutton'en
i debug builds kan man (sansynligvis) også i release builds, så der er
ingen grund til at checke i release builds.
/b
| |
Byrial Jensen (29-10-2003)
| Kommentar Fra : Byrial Jensen |
Dato : 29-10-03 17:34 |
|
Kasper Bo Larsen wrote:
> Nu er jeg vokset op med Borland C++ produkter så MFC er ikke lige mit
> speciale, men jeg mener at have hørt at ASSERT macro'en kun "ses"
> under _DEBUG så hvis du ønsker at være helt sikker skal koden vist se
> sådan ud :
Man kunne også bruge C's standardiserede assert-makro som er defineret i
standard-headerfilen <assert.h>. Så bliver programmet mere portabelt, og
man behøver ikke beskæftige sig med forskellige produkters varianter.
| |
Bertel Brander (29-10-2003)
| Kommentar Fra : Bertel Brander |
Dato : 29-10-03 23:10 |
|
Byrial Jensen wrote:
> Kasper Bo Larsen wrote:
>
>> Nu er jeg vokset op med Borland C++ produkter så MFC er ikke lige mit
>> speciale, men jeg mener at have hørt at ASSERT macro'en kun "ses"
>> under _DEBUG så hvis du ønsker at være helt sikker skal koden vist se
>> sådan ud :
>
>
> Man kunne også bruge C's standardiserede assert-makro som er defineret i
> standard-headerfilen <assert.h>. Så bliver programmet mere portabelt, og
> man behøver ikke beskæftige sig med forskellige produkters varianter.
>
Man kan jo også anlægge den betragtning at hvis man alligevel laver MFC
programmer på Windows platformen, er det lidt ligegyldigt om man bruger
den standardiserede metode eller Microsoft's variant. Koden kan
alligevel ikke porteres til ret meget andet.
Skulle man ønsker at portere til en anden kompiler kan man blot lave en
define i stil med:
#define ASSERT(x) assert(x)
eller:
#define ASSERT(x) std::assert(x)
eller en template funktion med ca. samme effekt.
/b
| |
Per Abrahamsen (30-10-2003)
| Kommentar Fra : Per Abrahamsen |
Dato : 30-10-03 09:54 |
|
Bertel Brander <bertel@post4.tele.dk> writes:
> Man kan jo også anlægge den betragtning at hvis man alligevel laver MFC
> programmer på Windows platformen, er det lidt ligegyldigt om man bruger
> den standardiserede metode eller Microsoft's variant.
Jeg syntes generelt det er en god vane at bruge standard-fasciliteter
når de er tilgængelige, også selvom man er afhængig af andre
ikke-standard biblioteker.
Der gør livet lidt lettere hvis man engang skal programmere til andre
omgivelser.
| |
|
|