|
Thank you very much.
but there is still a problem.
the bmp that saved have a black background.
how could I change the back colour into what ever I want??
And It is much better that you don't use CxImage.
-- modified at 7:57 Friday 25th August, 2006
|
|
|
|
|
Tcpip2005 wrote: the bmp that saved have a black background.
how could I change the back colour into what ever I want??
You mean to say, you want to change BMP, is it?
Tcpip2005 wrote: And It is much better that you don't use CxImage.
??
|
|
|
|
|
Yes,change the backgroud colour.
change black background into red,for example.
|
|
|
|
|
I'm not sure, if its possible.
|
|
|
|
|
Its possible(he needs a little work for it)
|
|
|
|
|
WhiteSky wrote: Its possible(he needs a little work for it)
ya tru, its more than little.
|
|
|
|
|
DrawIcon(you need to calculate x from icons in your listimage,0,m_ImageList->ExtractIcon(i))
Tcpip2005 wrote: It is much better that you don't use CxImage
?!CImage
|
|
|
|
|
void CSaveBmpToFileDlg::GetImageFromList(CImageList *lstImages, CBitmap* destBitmap)
{
CImageList tmpList;
tmpList.Create(lstImages);
IMAGEINFO lastImage;
tmpList.GetImageInfo(0,&lastImage);
CDC dcMem;
dcMem.CreateCompatibleDC(GetWindowDC());
CRect rect (lastImage.rcImage);
destBitmap->CreateCompatibleBitmap (this->GetWindowDC(),
rect.Width () * tmpList.GetImageCount(), rect.Height ());
CBitmap* pBmpOld = dcMem.SelectObject (destBitmap);
for (int i=0;i<tmpList.GetImageCount();i++)
{
tmpList.DrawIndirect (&dcMem, i, CPoint(i*rect.Width (), 0),
CSize (rect.Width (), rect.Height ()), CPoint (0, 0));
}
dcMem.SelectObject (pBmpOld);
}
I got this code. the bmp itself was nice.but still,the back was black
|
|
|
|
|
In this example we have a 32x32 and if you calculate x for x for draw function then your problem solve but if you want to get x& y from icons in CImageList see ImageList_GetIconSize(yourlist,x,y) and then insert x to current position in DrawIcon if you test this code and your problem is slove i glad but if you have previous error reply to me
|
|
|
|
|
Thank you sir.
I tried to do as what you have said.
the bmp file was saved correctly.
but the background was still black.
I want to change the background into RGB(255,0,255).
How could I do so?
Thank you very much.
|
|
|
|
|
for black background dc.DrawIcon(x/*32*/, 0, m_ImageList->ExtractIcon(i)); i used 32x32 for your icons you need to calculate x and y
for change background you can use from:
you need to two CDC objects one for draw icon and another for draw previous dc in new dc(for change color)
1-create two dc(dc1,dc2)and create two bitmap
2-in dc1 you draw icon
3-in dc2 you need to set color for bitmap and draw dc1 to dc2
4-then save this dc
it seems that its hard but when you start to this work its not hard also you can find examples for this purpose in bitmap i think i see examples for example you need to draw many pictures to a picture if you write this program then its very helpful in your programming.
|
|
|
|
|
You can try this
HBRUSH hbr;
hbr = ::CreateSolidBrush(RGB(255,255,255)); //this will draw white BackGround before drawing ICON onto it.
DrawIconEx(hDC,0,0,hIcon,0,0,0,hbr,DI_DEFAULTSIZE);
Matt
|
|
|
|
|
Hi Gurus
Couple of questions.
1) While using ReportEvent function to log an event, do we have to provide user id explicitly if we have to retrieve the user name when reading data from the event log? If so any sample code on how to get the current user id to use in ReportEvent function.
2) Any code sample to how to retrieve userid from ReadEventLog function and converto sid to username.
Thanks
C++beginer
|
|
|
|
|
Is there a function like fgets() but to read repeatedly every line from a string array like this?
char buf[] = "line1\n
line2\n
line3\n
...
";
9ine
|
|
|
|
|
9ine wrote: Is there a function like fgets() but to read repeatedly every line from a string array like this?
char buf[] = "line1\n
line2\n
line3\n
...
";
You have to write your own function, using eg. strchr to find the \n
see also: strchr[^]
|
|
|
|
|
use std::istringstream::getline() and tell it to use '\n' as a delimiter...
|
|
|
|
|
toxcct wrote: use std::istringstream::getline() and tell it to use '\n' as a delimiter...
Since when is istringstream::getline() a C function?
|
|
|
|
|
If you aren't concerned with the '\n' character, strtok is what you are looking for.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
If you're using C++ (and probably even if you're using C) using strtok is bad form. It modifies the input string and isn't thread safe for a start. Avoid it like the plague. Here's how I'd do it in C++:
#include <iostream>
#include <string>
#include <sstream>
int main(int argc, char* argv[])
{
using namespace std;
const char message[] = "Line 1\nLine 2\nThe third and last line\n";
istringstream iss(message);
string line;
while (getline(iss, line))
{
cout << line << endl;
}
return 0;
}
Steve
|
|
|
|
|
Hey everybody
I'm not sure if I'm asking in the right place, so if not, please let me know .
I'm a c# programmer and I user to program a LONG LONG LONG in c++ just a little little bit.
so I have a very basic question because the compiler is shouting at me and I really don't get why.
I wrote an Employee class (just for a little trainning)
and thats what I wrote (I'm using VS2005):
Employee.h :
class Employee<br />
{<br />
public:<br />
int ID;<br />
float wadge;<br />
float hours;<br />
float overtime;<br />
<br />
Employee()<br />
{<br />
printf("initiallizing an Employee");<br />
}<br />
<br />
void show();<br />
<br />
private:<br />
<br />
double calcSalary();<br />
}
and my Employee.cpp:
<br />
#include <stdio.h><br />
#include "Employee.h"<br />
<br />
double Employee::calcSalary()<br />
{<br />
return (Employee::hours*Employee::wadge) + (Employee::overtime*Employee::wadge*1.5);<br />
}<br />
<br />
void Employee::show()<br />
{<br />
printf("Employee's ID: ", Employee::ID);<br />
}
but for some reason I'm getting these compiling errors:
1. 'Employee' followed by 'double' is illegal (did you forget a ';'?)
Where did I wrote "Employee" and than "double"???
2. 'Employee Employee::calcSalary(void)' : overloaded function differs only by return type from 'double Employee::calcSalary(void)'
as far as I understand I did not defined any "Employee Employee::calcSalary(void)" function.
3. error C2371: 'Employee::calcSalary' : redefinition; different basic types
huh?!
as you can see, I'm pretty lost!
help anyone???
Thanks!
|
|
|
|
|
Green Fuze wrote: class Employee
{
public:
int ID;
float wadge;
float hours;
float overtime;
Employee()
{
printf("initiallizing an Employee");
}
void show();
private:
double calcSalary();
}
you forget ";" after class declaration, it could be like this,
class Employee
{
public:
int ID;
float wadge;
float hours;
float overtime;
Employee()
{
printf("initiallizing an Employee");
}
void show();
private:
double calcSalary();
};
|
|
|
|
|
I didn't know I should've done that
Thanks!
|
|
|
|
|
One of the nasty little differences between C# and C++.
Kevin
|
|
|
|
|
Moving this thread to the Visual C++ forum!
|
|
|
|
|
Hi,
I have a progress bar and I set the range using
m_datprog.SetRange(0,Prog)
The problem I have is that the progress bar is full before it reaches the maximum limit (prog). Any help would be appreciated.
Thanks,
DS
|
|
|
|