|
HBITMAP hBmp;
CBitmap bmp;
CBitmap *pOldbmp;
BITMAP bi;
CDC bmDC;
hBmp = (HBITMAP)::LoadImage(NULL,"E:\\Deharadun.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBmp==NULL)
MessageBox("Bitmap Failed");
bmp.Attach(hBmp);
CClientDC dc(this);
bmDC.CreateCompatibleDC(&dc);
pOldbmp = bmDC.SelectObject(&bmp);
bmp.GetBitmap(&bi);
dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);
bmDC.SelectObject(pOldbmp);
copy same code u can open bitmap file to save bitmap file u have to look for same function as shoown in baove code
|
|
|
|
|
Hi,
May i know how can i reduce the height of CREct....ie rect should be just around the text inside the rect...
|
|
|
|
|
if you pass the outer rectangle to DrawText() function with the DT_CALCRECT flag specified, that function will modify the rectangle and returns you the correct bounding rectangle of the input text.
|
|
|
|
|
GetClientRect(clientRect);
DrawText(_T"testing"), clientRect, DT_SINGLELINE|DT_CALCRECT| DT_END_ELLIPSIS);
when i use the above code the text inside rect became invisible and when i remove the
DT_CALCRECT then it worked fine....
|
|
|
|
|
Try reading the documentation for DrawText / DT_CALCRECT a bit more carefully.
With this flag, you are asking the function to calculate the rectangle it would have used, not to draw the text.
If this was not the case, then you could not do the calculation without leaving graffiti all over the place.
You are allowed to call this function twice, once to calculate your rectangle, and once to actually draw. It is not rationed. Quite a few windows functions work in this way - once to get how bit a chunk of memory you need, and then to use that memory, and so on.
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
we got a pre-written C project and there's a need to make a small addition.
we would like to open a text document (not necessarily ms word) add an image (a company logo) to each document and
add some statistical text after the image.
at the end there will be several documents which have a logo at the beginning and some data.
programmer does not want to deal with COM and OLE since he has C code. Is there an easy way to solve this problem with C?
Thanks.
aysan ethem narman
|
|
|
|
|
alashara wrote: not necessarily ms word
I'll take "not necessarily" as "not".
There is no way to add a logo to any document...
A text file is a document, and notepad can't show pictures.
I could have made a .iain document type, for loading in IainWrite(tm) - you wouldn't have a clue how to add a logo to it without knowing the file format.
So, the answer to your question really depends on what the doc format is.
If it's word, then you're probably stuck telling your programmer to learn COM. You can put screws in with a hammer, but it's not efficient.
Speaking of efficiency... why are *you* asking this question, rather than the programmer?
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
With "not necessarily" I meant it can be some other document types like (open office word etc) which can be converted to ms word later.
I know that we can not add logo to any document and txt files can not show images. And the doc in the subject title was
actually .doc extension which is ms word 97-2003 file (my mistake).
So I am repeating the question in a different way. There is a need to add an image (jpg,gif or sth else) to a document (which can be converted to .doc file in an easy way) and add some text after the image in C. Is this possible?
As I understood he was working with .txt files before and just adding some text data into them. But then they decided to add the company logo to these documents.
>Speaking of efficiency... why are *you* asking this question, rather than the programmer?
I am sure he would if he could.
aysan ethem narman
|
|
|
|
|
alashara wrote: >Speaking of efficiency... why are *you* asking this question, rather than the programmer?
I am sure he would if he could.
???
Interesting Remark!
Why Could he not? do you have him imprisoned, or can he not type on a computer. In case of the latter, I know a few programmers like that too, but I tend to steer clear of those when looking for people to code!
Bram van Kampen
|
|
|
|
|
Yes it is possible in C.
He will have to insert in your text file some RTF tags and (as text) the binary data of your logo (see http://www.snake.net/software/RTF/RTF-Spec-1.7.pdf[^] page 90) , and save the file as .rtf which can be read by MS-Office, OpenOffice, Windows WordPad and many other.
However I would not recommand such costly approach
cheers,
AR
|
|
|
|
|
|
i want to convert a char * to LPWSTR can any body help me out
const char *lpszPSTPath="C:\\rahul";
SPropValue PropVal;
PropVal.Value.lpszW =(LPWSTR)lpszPSTPath;
I tried with above type cast but iam getting square brackets...any help
|
|
|
|
|
You can use MultiByteToWideChar() function to convert a char* to wchar*.
However in the above case, you can directly assign the string to PropVal.Value.lpszW by adding a "L" before the string. like
SPropValue PropVal;<br />
PropVal.Value.lpszW = L"C:\\rahul";
|
|
|
|
|
you can also try mbstowcs api
|
|
|
|
|
i have to list control in a mfc dialog application.
first one is ipList. i want to search an item in the list.
int i = 0;
TCHAR ss[50] = {0};
ipAdd.GetAddress(m_M1, m_M2, m_M3, m_M4);
_stprintf_s(ss, _T("%d : %d : %d : %d"), m_M1, m_M2, m_M3, m_M4);
for(int j=0; j < ipList.GetItemCount(); j++)
{
if(ipList.GetItem(j) != ss)
i=0;
else
i = 1;
}
it gives the error ---
error C2664: 'CListCtrl::GetItem' : cannot convert parameter 1 from 'int' to 'LVITEMW *'
what i should do now ?
btw thanks
|
|
|
|
|
Hi,
GetItem has the declaration like this:BOOL GetItem(LVITEM* pItem) const;
So it can't accept a int type parameter. besides, it return a BOOL value;
I think you must misunderstand the function.
|
|
|
|
|
thanks for the reply.
please tell me how to search an item in list control.
|
|
|
|
|
Use FindItem() to get the index of the list control you want.
int FindItem(LVFINDINFO* pFindInfo, int nStart = -1) const;
ipAdd.GetAddress(m_M1, m_M2, m_M3, m_M4);
LVFINDINFO temp;
temp.flags = LVFI_PARTIAL|LVFI_STRING;
_stprintf_s(temp.psz, _T("%d : %d : %d : %d"), m_M1, m_M2, m_M3, m_M4); //I'm not sure if this would work
int i = ipList.FindItem(&temp);
|
|
|
|
|
this code is giving error ----
_stprintf_s(temp.psz, _T("%d : %d : %d : %d"), m_M1, m_M2, m_M3, m_M4);
error
error C2664: 'int swprintf_s(wchar_t *,size_t,const wchar_t *,...)' : cannot convert parameter 1 from 'LPCWSTR' to 'wchar_t *'
|
|
|
|
|
I'm sorry for that.
You can try the code below.
wchar_t ss[100];
_stprintf_s(ss, _T("%d : %d : %d : %d"), m_M1, m_M2, m_M3, m_M4); //I'm not sure if this would work
temp.psz = ss;
Hope it can run.
|
|
|
|
|
thanks, it is working now.
also,
in the second list control in application, there is check box in first column for ach item. please tell me how to get the items which are checked ?
|
|
|
|
|
But I know you can add 'LVN_ITEMCHANGED' Message handling functions for the CListCtrl, when checkbox's state is changed, the function would be activated, and you can check if the checkbox is be selected in the Message handling functions.
|
|
|
|
|
thanks.
i am facing a new problem. i am trying to save the items of list control which are checked to a text file. here is the code ---
TCHAR ff[100] = {0};
CFile srvc;
srvc.Open(_T("c:\\srvc.txt"), CFile::modeCreate|CFile::modeReadWrite);
for (int nItem = 0; nItem < srvcList.GetItemCount(); nItem++)
{
if (srvcList.GetCheck(nItem))
{
srvcList.GetItemText(nItem, 0, (LPTSTR)ff, 98);
wcscat_s(ff, L"\n");
srvc.SeekToEnd();
srvc.Write(ff, 100);
ZeroMemory(ff, 100);
}
}
the content of the file is not right ---
A e L o o k u p S v c
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþA p p H o s t S v c
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþA V P
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþB F E
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþB I T S
þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ
there is extra space between each letter and the symble 'þ'. there is also no new line even with the use of '\n'.
modified on Saturday, July 18, 2009 11:05 PM
|
|
|
|
|
Hi.
I use
"
CString temp(ff);
srvc.Write(ff, 2 * temp.GetLength() - 1);
"
instead of your "srvc.Write(ff, 100);", and it's works OK in my computer. Maybe you can try it, but it must not be a good solution.
If it couldn't work, tell me and I would try to find another solution.
|
|
|
|
|
now the content of the file is this ----
A p p M g m t A V P B F E
the content should be like this ---
AppMgmt
AVP
BFE
|
|
|
|