|
Hi,
I have a dialog with a colored background (no bitmap) with the controls being transparent. Now I can get the edit boxes to redraw correctly, BUT I cannot get the sliders to redraw correctly.
I have seen custom CSliderCtrl classes that may do this but I am hoping that I can fix the problem with just a small amount of code.
Thanks in advance for any help!
|
|
|
|
|
Jerry Ott III wrote: I have a dialog with a colored background (no bitmap)
Where are you doing the coloring?
Jesus Loves <marquee direction="up" height="40" scrolldelay="1" step="1" scrollamount="1" style="background:#aabbcc;border-bottom:thin solid 1px #6699cc">
--Owner Drawn
--Nothing special
--Defeat is temporary but surrender is permanent
--Never say quits
--Jesus is Lord
|
|
|
|
|
Below is what I have for the OnCtrlColor and the OnEraseBkgnd functions that are in the class with the slider.
I'm still very new to the MFC stuff so basically just found parts of code other people have shown and have used that with hopes of actually learning it so I can make my own things.
Right now I just have the sliders not being transparent or anything so that they redraw correctly.
HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
hbr = (HBRUSH)GetStockObject( NULL_BRUSH );
return hbr;
}
BOOL OnEraseBkgnd(CDC* pDC)
{
CPen myPen[64] ;
int i ;
CRect rect ;
for (i = 0 ; i <= 60 ; i++)
myPen[i].CreatePen(PS_SOLID, 1, RGB (0,0,(i * 4)));
CPen *oldPen = pDC->SelectObject(&myPen[0]) ;
GetClientRect(&rect);
for(i = 0 ; i <= rect.bottom;)
{
pDC->MoveTo(0, i);
pDC->LineTo(rect.right, i);
i++;
pDC->SelectObject (&myPen[i * 64 / rect.bottom]);
}
pDC->SelectObject(oldPen) ;
return TRUE ;
}
|
|
|
|
|
Hi, God Morning/afternoon,
May I know how to work with c files on a visual C++ 6.0 IDE?
Some people say it is easy, howver I am encountering a lot of problems.
examples simple. project.
the c file looks like:
/* ------------- */
/* mon_include.c */
/* ------------- */
#include <stdio.h>
main()
{
#include "mon_include.h"
i = 10 ;
j = 20 ;
k = i+j ;
printf("k = %d\n",k);
}
and the *.h file
/* ------------- */
/* mon_include.h */
/* ------------- */
int i,j ;
int k ;
/* ------------- */
Thanks a lot,
I work on Visual C++ 6.0 introductory edition.
T.
|
|
|
|
|
I think this is what you want to do?
{
FILE *flog;
i = 10 ;
j = 20 ;
k = i+j ;
flog = fopen("c:\\directory\\test.txt", "w");
fprintf( flog,"%s, %d\n","k=",k );
fclose ( flog );
}
If you look in the directory called "directory" you should find your file (test.txt).
|
|
|
|
|
I think this is what you want to do?
Tombo
Would you please tell how that guy can use this, please check before you post something .
Regards,
FarPointer
|
|
|
|
|
thierrypp wrote: ...howver I am encountering a lot of problems.
And what would those problems be?
thierrypp wrote: #include "mon_include.h"
Did you mean to have this statement inside of main() ?
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
thank you, but really, more generally, can a common C programme be compiled on a Visual C++ 6.0 compiler?
and how?
Regards,
T.
|
|
|
|
|
thierrypp wrote: can a common C programme be compiled on a Visual C++ 6.0 compiler?
Certainly. Why wouldn't it?
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
I have a set of C files which can be compiled on a C-compiler, but not at all on Visual C++6.0.
Maybe you could tell me the right procedure to do it.........
Or I can send you examples?
Thank you,
T.
|
|
|
|
|
for example:
/* ---------- */
/* premier2.c */
/* ---------- */
#include <stdio.h>
#include <math.h>
main()
{
int nb, diviseur1, diviseur2,reste ;
int trouve,i ,racinecar,limite ;
int nb_iterations=1;
printf("Entrez un Nombre :");
scanf("%d",&nb);
/* partie entiere de la racine carre+1 */
limite=sqrt(nb)+1;
trouve=0 ;
if (nb != 2) /* 2 est premier */
{
/* on retire le cas des nombres pairs */
reste=nb%2 ;
if (reste == 0)
{
trouve=1 ;
/* on memorise les diviseurs */
diviseur1=2 ;
diviseur2=nb/2 ;
}
else
{
/* teste tous les diviseurs impairs */
i=3;
while ( (! trouve) && (i<=limite) )
{
nb_iterations++;
reste= nb%i ;
if (reste == 0)
{
trouve=1 ;
/* on memorise les diviseurs */
diviseur1=i ;
diviseur2=nb/i ;
}
i+=2 ;
}
}
}
if (trouve)
{
printf("%d n'est pas premier !\n",nb);
printf("il est divisible par %d et %d\n",diviseur1,diviseur2);
}
else
{
printf("%d est un nombre PREMIER !\n",nb);
}
printf("RŽsultat obtenu en %d itŽrations\n",nb_iterations);
}
result:
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/premier2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
premier2.exe - 2 error(s), 0 warning(s)
|
|
|
|
|
What type of project is this .c file a part of? What preprocessor definitions do you have defined? You need _WIN32 and _CONSOLE at a minimum. Also be sure /subsystem:console is one of the linker options.
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
honestly here I am a bit lost....
well ...here is an example of a typical c file, complete!
I have VC++ 6.0 standard edition.
But I am really a newbie in converting c files on VC++ 6.0
Maybe you could tell me how to proceed and which changes?
Usually, I click on the file and immediatelly the VC++ appears..
Thanks,
T
-------->example of a comple c file
/* ------------------ */
/* liste_structure2.c */
/* ------------------ */
#include <stdio.h>
#include <stdlib.h>
#define TAILLE_NOM 20
#define TAILLE_PRENOM 30
/* --- sous-programmes --- */
void saisie() ;
void affichage() ;
struct etudiant *recherche(char nom_recherche[]);
void modification() ;
/* --- variables globales --- */
struct etudiant {
struct etudiant *pred ;
char nom[TAILLE_NOM] ;
char prenom[TAILLE_PRENOM];
int age ;
struct etudiant *succ ;
} ;
struct etudiant *debut_liste,*fin_liste;
int nbeleves=0;
/* ===== PROGRAMME ===== */
main()
{
char choix=' ', ch_saisie[20];
debut_liste = NULL;
fin_liste = NULL;
while (choix!='q')
{
printf("-1- Saisie d'une liste\n");
printf("-2- Affichage\n");
printf("-3- Modification d'un Žlve\n");
printf("-q- quitter\n");
printf("Choix : ");
scanf("%s",ch_saisie);
choix=ch_saisie[0];
switch(choix)
{
case '1' : saisie();
break;
case '2' : affichage();
break;
case '3' : modification();
break;
case 'q' : printf("Au revoir\n");
break;
default : printf("Choix non valide\n");
break;
}
}
}
/* === chargement de la liste === */
void saisie()
{
struct etudiant *nouv_eleve,*eleve_actuel;
int termine = 0 ;
/* --- boucle de saisie --- */
while (! termine)
{
nouv_eleve = malloc(sizeof(struct etudiant));
printf("Entrez un nom ( nom=fin pour terminer):");
scanf("%s",nouv_eleve->nom);
termine=((strcmp(nouv_eleve->nom,"fin"))==0) ;
if (! termine) /* saisie du reste */
{
printf("Entrez un prŽnom:") ;
scanf("%s",nouv_eleve->prenom);
printf("Entrez un ‰ge:") ;
scanf("%d",&(nouv_eleve->age));
nouv_eleve->pred=NULL ;
nouv_eleve->succ=NULL ;
if (debut_liste == NULL)
{ /* Liste vide. C'est le seul element */
debut_liste = nouv_eleve ;
fin_liste = nouv_eleve ;
}
else
{ /* ajout en fin de liste */
fin_liste->succ = nouv_eleve ;
nouv_eleve->pred = fin_liste ;
fin_liste = nouv_eleve ;
}
/* on compte le nombre d'eleves */
nbeleves++ ;
}
}
}
/* === affichage === */
void affichage()
{
struct etudiant *eleve_actuel;
/* --- boucle d'affichage --- */
printf("--- %d Žlves ---\n",nbeleves);
eleve_actuel=debut_liste ;
while (eleve_actuel != NULL )
{
printf("%-10s",eleve_actuel->nom) ;
printf("%-10s",eleve_actuel->prenom);
printf("%3d\n",eleve_actuel->age) ;
eleve_actuel = eleve_actuel->succ ;
}
}
/* === recherche sur critere === */
struct etudiant *recherche(char nom_recherche[])
{
int trouve=0;
struct etudiant *eleve_actuel;
/* --- boucle de recherche --- */
eleve_actuel=debut_liste ;
while ((!trouve) && (eleve_actuel != NULL))
{
trouve=(strcmp(eleve_actuel->nom,nom_recherche)==0);
if (!trouve)
eleve_actuel = eleve_actuel->succ ;
}
if (!trouve)
eleve_actuel = NULL ;
return eleve_actuel ;
}
/* === modification === */
void modification()
{
char nom_modif[TAILLE_NOM];
struct etudiant *eleve_modif;
/* saisie du nom a modifier */
printf("Nom de l'Žlve:");
scanf("%s",nom_modif);
/* recherche */
eleve_modif=recherche(nom_modif);
if (eleve_modif!=NULL)
{
/* affichage */
printf("%-10s",eleve_modif->nom) ;
printf("%-10s",eleve_modif->prenom);
printf("%3d\n",eleve_modif->age) ;
/* modifications */
printf("Nouveau Nom : ");
scanf("%s",eleve_modif->nom);
printf("Nouveau Prenom : ");
scanf("%s",eleve_modif->prenom);
printf("Nouvel Age : ");
scanf("%d",&(eleve_modif->age));
}
else
printf("%s non trouvŽ\n",nom_modif);
}
|
|
|
|
|
There's no need to post all of this code. Most, if not all, of it is irrelevant. Open Visual Studio. Select New from the File menu. Click the Projects tab. Near the bottom of the list, select Win32 Console Application, give the project a name, and click the OK button. On the Step 1 of 1 dialog box, select one of the four radio buttons (e.g., A "Hello World" application). Click the Finish button. Click the OK button. Now open the main .cpp file and paste your code into it, overriding whatever is there. Press F7 to compile and link. Does that help?
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
yes,
but there an error message:
Compiling...
ooooo.cpp
c:\documents and settings\atvd\desktop\new folder00ppp\ooooo\ooooo.cpp(161) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
ooooo.exe - 1 error(s), 0 warning(s)
and when clicking on the error message , it shows the end, after the last }
maybe I should ad a main...? how...?
Thanks a lot!
|
|
|
|
|
The default compiler options needs a pre compiled header.
You should add #include "stdafx.h" to the begining of your code.
Another solution is to remove this option from your compile directive.
Its been a long time since I used VC++6.0 but I think this is what you should do.
1. open project properties from menu or press Alt+F7
2. select the file ooooo.cpp in the tree view
3. select compile options in the right form.
4. select pre compiled header from the combo box
5. set the radio button to disable the use of pre-compiled headers.
codito ergo sum
|
|
|
|
|
same problem.....
C:\Documents and Settings\atvd\Desktop\New Folder00ppp\uuuu\uuuu.cpp(31) : warning C4508: 'main' : function should return a value; 'void' return type assumed
|
|
|
|
|
thierrypp wrote: more generally, can a common C programme be compiled on a Visual C++ 6.0 compiler?
Yes. But...
Visual C++ 6 applies a C++ compiler to files with a .cpp extension, and a C compiler to files with a .c extension.
Do your source files have a .c extension?
What errors are you getting?
|
|
|
|
|
yes, files with a c extension *.c
for example: and result of compilation..
for example:
/* ---------- */
/* premier2.c */
/* ---------- */
#include
#include
main()
{
int nb, diviseur1, diviseur2,reste ;
int trouve,i ,racinecar,limite ;
int nb_iterations=1;
printf("Entrez un Nombre :");
scanf("%d",&nb);
/* partie entiere de la racine carre+1 */
limite=sqrt(nb)+1;
trouve=0 ;
if (nb != 2) /* 2 est premier */
{
/* on retire le cas des nombres pairs */
reste=nb%2 ;
if (reste == 0)
{
trouve=1 ;
/* on memorise les diviseurs */
diviseur1=2 ;
diviseur2=nb/2 ;
}
else
{
/* teste tous les diviseurs impairs */
i=3;
while ( (! trouve) && (i<=limite) )
{
nb_iterations++;
reste= nb%i ;
if (reste == 0)
{
trouve=1 ;
/* on memorise les diviseurs */
diviseur1=i ;
diviseur2=nb/i ;
}
i+=2 ;
}
}
}
if (trouve)
{
printf("%d n'est pas premier !\n",nb);
printf("il est divisible par %d et %d\n",diviseur1,diviseur2);
}
else
{
printf("%d est un nombre PREMIER !\n",nb);
}
printf("RŽsultat obtenu en %d itŽrations\n",nb_iterations);
}
result:
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/premier2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
premier2.exe - 2 error(s), 0 warning(s)
|
|
|
|
|
hi,
when code compiled is with a c++ compiler the code needs to be c++ compiler compatible.
C code is almost 90% compliant to c++ code, but there are some distinct issues that one must
know off.
thierrypp wrote: LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
this error means that the compiler didn't find the main entry point of your code.
you did write
#include <something>
main()
{
you did forget to add a return value for your main function. Some C compilers automatically asume that you meant to write int main(void) but most C++ compilers don't do this automatic translation. Thats way the function main didn't compile hence there is no function to link too -> Unresolved external
The rest of the code looks fine.
codito ergo sum
|
|
|
|
|
yes, right,
#include <stdio.h>
#include <stdlib.h>
but I do not get how to deal with main,
what should be modified?
Thanks,
T.
|
|
|
|
|
hi,
try to change main() to void main()
codito ergo sum
|
|
|
|
|
again error:
C:\Documents and Settings\atvd\Desktop\New Folder00ppp\wwww\wwww.cpp(72) : error C2440: '=' : cannot convert from 'void *' to 'struct etudiant *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Error executing cl.exe.
wwww.exe - 1 error(s), 0 warning(s)
|
|
|
|
|
BadKarma wrote: ...but most C++ compilers don't do this automatic translation.
Visual Studio v6 handles this just fine. He is doing something else wrong as his code compiles fine as a .c file or a .cpp file. I suspect it's the type of project he chose.
"The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: Visual Studio v6 handles this just fine. He is doing something else wrong as his code compiles fine as a .c file or a .cpp file. I suspect it's the type of project he chose.
When I tested the code i wrongfully pasted the code in a .cpp file which led to the unresolved error which I mentioned. I do however used VS2005 to test. When renamed to a .c file everything compiles and links without a problem.
Sorry to add up the confusion
codito ergo sum
|
|
|
|
|