|
Sorry, I had no idea that raw mode wouldn't work on 9x....I just assumed that you needed Winsock 2.0 and if it wasn't installed on 9x, you just install it. I had run into an issue before about trying to put a network card into promiscuous mode and that it would only work on Win2K (of course now I could just use the winpcap lib) but I didn't know about the raw mode restriction too.
Maybe something in that WinPCap library could help you accomplish what you want to do. It's at http://winpcap.polito.it/ Winpcap is used in many products one of which is the freeware sniffer/analyzer, ethereal.
|
|
|
|
|
Yea.. thanks for replying, but kind of already use ethereal and Winpcap, don't think u can use winpcap for generating though, but i'll look into it.
But anyways, thanks for replying, and if i ever do get it sorted, i'll be sure to post an article about it here on CP.
P.S.: And i will get it sorted! Grrrrrrrrrr....
Kuniva
--------------------------------------------
|
|
|
|
|
i search the owner draw edit control in codeguruAcodeproject and google web site, but nothing is found, someone give me "FlatEdit",but it call the default drawing function when draw it.
such as:
void CFlatEdit::OnPaint()
{
Default();
~~~~ i want to known how Default function do draw
DrawEdit(FE_MOUSEOUT, m_clrButton, m_clrButton);
}
some Win32 SDK/MFC example or slice code are expected, thanks!
|
|
|
|
|
There's a good reason for the lack of owner draw for the text in the edit control.
It's hard!
There's a lot to worry about. Fonts, insertion points, highlighted (highlit?) sections,
wrapping, caret, etc.
Also, the edit control has been round for a *long* time and is not as well "exposed" as
the more modern ones.
For a replacement which does its own text formatting I would suggest looking at the
crystal edit control[^] here on CP.
Iain.
|
|
|
|
|
thank you very much!
Now I is studying "crystal edit control",i found it solve some problem you note above. But CEdit is so hard to full owner draw? I only need one line single and basic CEdit, search example and other's discussion until I can programme do it myself.
And expect someone can give me more suggest or examples.
C/C++ code fans
|
|
|
|
|
In my project, i just PNG's for the GUI's graphics. I can paint them on the canvas using StretchDIBits. Problem is that my project has some dialogs too, in which i use Static controls to hold a BMP image. Is there a way to convert a DIB image to a BMP handle that i can use in such a dialog other than writing the Dib as a BMP to the harddisk and loading it again?
|
|
|
|
|
The following steps should do it:- Create a bitmap compatible with the screen device context.
- Create a memory device context compatible with the screen.
- Select the bitmap created in step 1 into the DC created in step 2. Be sure to save the return value, so you can restore the original bitmap.
- Draw the PNG into the memory device context using
StretchDIBits , or whatever's appropriate. - Restore the original bitmap into the memory device context. This 'detaches' the bitmap created in step 1 from the memory device context.
The bitmap created in step 1 now contains the image from the PNG, rendered in a fashion that's compatible with the screen. You can then use SetBitmap to display the image in the static controls in your dialog.
Software Zen: delete this;
|
|
|
|
|
well i did it this way:
<br />
HDC hDC = GetDC();<br />
HDC memDC = CreateCompatibleDC ( hDC );<br />
HBITMAP memBM = CreateCompatibleBitmap (hDC,dib->biWidth,dib->biHeight);<br />
HBITMAP memBM2 = CreateCompatibleBitmap (hDC,dib->biWidth,dib->biHeight);<br />
memBM2 = (HBITMAP)SelectObject ( memDC, memBM );<br />
<br />
StretchDIBits(memDC,0,0,dib->biWidth,dib->biHeight,0,0,dib->biWidth,dib->biHeight,lpbits,(LPBITMAPINFO)&dib,DIB_RGB_COLORS,SRCCOPY);<br />
<br />
memBM = (HBITMAP)SelectObject(memDC,memBM2);<br />
ReleaseDC(memDC);<br />
<br />
CStatic temp = GetDlgItem (IDC_LOGO);<br />
temp.SetBitmap((HBITMAP)memBM);<br />
and it only draws a black square...size is ok though...
|
|
|
|
|
You don't need to create the second bitmap, as it is returned by SelectObject() . Also, you're overwriting memBM with the second SelectObject() . Try this:
HDC hDC = GetDC();
HDC memDC = CreateCompatibleDC ( hDC );
HBITMAP memBM = CreateCompatibleBitmap (hDC,dib->biWidth,dib->biHeight);
HBITMAP memBM2;
memBM2 = (HBITMAP)SelectObject ( memDC, memBM );
StretchDIBits(memDC,0,0,dib->biWidth,dib->biHeight,0,0,dib->biWidth,dib->biHeight,lpbits,
(LPBITMAPINFO)&dib,DIB_RGB_COLORS,SRCCOPY);
SelectObject(memDC,memBM2);
ReleaseDC(memDC);
CStatic *temp = (CStatic*)GetDlgItem (IDC_LOGO);
temp->SetBitmap((HBITMAP)memBM);
Also make sure that your BITMAPINFOHEADER is setup correctly. I assume it is because you mentioned you can draw it elsewhere. If the image is 256 colours or less, the BITMAPINFOHEADER structure is NOT equivalent to a BITMAPINFO structure. The BITMAPINFO structure contains a BITMAPINFOHEADER plus the colour table. If the image has more than 256 colours, the colour table is not used and not required. For less than 256 colours it is.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
If you've got a HBITMAP handle for your DIB, then the static control will display it directly.
To create an HBITMAP from DIB data, use CreateDIBitmap() .
Hope this helps
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Nice answer. I had a feeling mine was too complicated .
Software Zen: delete this;
|
|
|
|
|
Thanks. I got a bit confused when he started out talking about PNGs, but then he said his question was how to convert a DIB to a HBITMAP, so that bit was easy . I just assumed the PNG to be a typo or unnecessary information.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
I dont think i can use this sollution because i only have these things handy:
BITMAPINFOHEADER dib;
int dib_size, dib_bits_offs;
char * lpbits;
So i don't see how i can work with that functions...
|
|
|
|
|
That's all you need. The BITMAPINFO structure is simply a BITMAPINFOHEADER followed by a colour table, which I assume you've got. If your image is 16-bit or above, no colour table is needed, so you don't have to worry about it.
For a 16, 24, or 32-bit image, just do this:
BITMAPINFO bi = { dib, 0 };
HBITMAP hbm = CreateDIBitmap(hDC, &dib, CBM_INIT, lpbits, &bi, DIB_RGB_COLORS);
For a 256 or less colour image, you'll need to include the colour table in the BITMAPINFO structure.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Great , it works!
Thank you all 
|
|
|
|
|
Hi,
I made a worker thread in my program, and i used CDaoRecordset::GetFieldValue function in the thread.
But every time i got access violation error
Does CDaoRecordset class support threads ?
It's my source code:
while( !theApp.m_EleTele.IsEOF() )<br />
{<br />
pDlg->dwRecords.Add( theApp.m_EleTele.GetAbsolutePosition() ); <br />
pDlg->m_List.AddString( theApp.m_EleTele.GetFieldStr( pDlg->strField ) );<br />
theApp.m_EleTele.MoveNext();<br />
}
GetFieldStr is made by myself and it returns string.
Regards,
Hadi
|
|
|
|
|
If I want to open a modal dialogue in one of multi-thread app, how can I realize this?
......
dlg.DoModal();
......
Thank you in advance!
LeonOrient
|
|
|
|
|
See this article[^] in the MSDN on creating user-interface threads. You can call dlg.DoModal() in the InitInstance member function of your thread class.
Software Zen: delete this;
|
|
|
|
|
If I want to call DoModal function in my normal funcion of my thread class, how to do with this?
Thank you very much!
|
|
|
|
|
It sounds like you want to display a dialog in a worker thread. That doesn't work, because a dialog, like all windows, needs a message pump, which worker threads don't have.
Software Zen: delete this;
|
|
|
|
|
Can I send a message to handle a modal dialogue?
Can you commend a multi-threads sample for me?
Thank you!
|
|
|
|
|
Hi all,
I have problem, i got some drawings/shapes connected with lines(like network) and I want to drag and drop one shape from one place to another, but with this, the lines (thats are connected) should also be move
any ideas/comments will be appriaciated.
thanks
|
|
|
|
|
I have a static control on a dialog that I want to paint icons onto. So I have overridden the OnPaint method and have the following code.
m_StyleHeaderFrame is the member variable linked to the Cstatic control.
IDB_TOOLBARICONS is my resource handle to my bitmap with icons.
<br />
void CNewCharacterPage5::OnPaint() <br />
{<br />
CPaintDC dc( this );
HICON hIcon;<br />
<br />
CDC memDC;<br />
memDC.CreateCompatibleDC( &dc );<br />
<br />
if(m_hWnd && !PaintOnce)<br />
{<br />
pToolbarImages.Create(IDB_TOOLBARICONS, 14, 2, RGB(255, 0, 255));<br />
PaintOnce = true;<br />
}<br />
<br />
CRect rcClient;<br />
m_StyleHeaderFrame.GetClientRect( &rcClient );<br />
rcClient.OffsetRect(-24, 0);<br />
hIcon = pToolbarImages.ExtractIcon(4); <br />
memDC.DrawIcon(rcClient.right, rcClient.top, hIcon);<br />
rcClient.OffsetRect(-24, 0);<br />
hIcon = pToolbarImages.ExtractIcon(1);<br />
memDC.DrawIcon(rcClient.right, rcClient.top, hIcon);<br />
}<br />
Everytime I run the project the CStatic control paints blank. Does anyone know why?
Thanks!

|
|
|
|
|
You only made the memDC compatible to the "dc". You must bitblt the memDC onto the dc to disply it.
|
|
|
|
|
dumb question, but are you sure? I'm not really dealing with Bitmaps and bitblt deals with bitmaps. I tried using it anyways to see if it would work and it didn't change anything.
I do have one bitmap, but I am extracting out icons from that one bitmap and wanting to display them like one would on a toolbar except for me I want them on a static text control. Exactly like the presentation you see in VC++ when you go to Project->Settings->pre-link step. There you see the four icons on the static text control.
Going after the same thing.
I realize there is code out there that does this very thing but that code is very advanced for me and I'm trying to simplify it the best I can. Unless there really is code out there that is simple to understand for the intermediate designer. I could have sworn I saw something a long time ago that did pretty much I am stuggling to attempt, with ExtractIcon and DrawIcon, but I cannot find that code any longer, my mind totally forgot, and I lost my original code.
Thanks! 
|
|
|
|
|