|
|
In my view class in the LButtonDown()I have
CPaintDC dc;
CRect c;
GetClientRect(&c);
dc.TextOut(c.Width()/2, c.Height()/2," abc");
I dont see the text when I click.
DO I need a different kind of DC? I was actually trying to do DrawIcon but when i didnt see the icon, I thought I'd see if textout worked....neither does..
thanks,
ns
|
|
|
|
|
Try CClientDC instead of CPaintDC.
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
Thanks! The textout works. But this doesnt still:
dc.DrawIcon( f, w, hIcon3);
Does this need yet some other special DC? Why wasnt PaintDC suitable for TextOut? How do you choose which type of DC to use?
Thanks again,
ns
|
|
|
|
|
Imho drawing in mouse message handler is not a good practice. Does your picture should stay after you release button? Try placing other application above yours, and your picture will be lost.
Igor Green
http://www.grigsoft.com/ - files and folders comparison tools
|
|
|
|
|
ns wrote:
Why wasnt PaintDC suitable for TextOut
It wasn't that the CPaintDC wasn't suitable for a TextOut call it's that it wasn't suitable for where you were using it. CPaintDC should only be used in an OnPaint message handler. The reason behind this, as far as I know, is that it calls some functions (BeginPaint, EndPaint) that set the update region (area you can actually "paint" in) and in your button handler there probably hasn't been any part of your window that's been invalidated, therefore a CPaintDC wouldn't have any valid drawing area.
- Aaron
|
|
|
|
|
在这个论坛上必须发英文吗
I'm sorry!
I can't speak english
CDC* dc;
dc = GetDC();
dc->textout();
d
|
|
|
|
|
I use some structures in an app using pointers, basically everytime the program gets updated these addresses change slightly, I usually get told by someone what the address is.
Basically I want to be able to automatically find the address of the structure in the app, but i'm not sure how to do it.. I think i remember someone saying pattern searching or something.
Any help is appreciated.
|
|
|
|
|
I think I know what you are asking, but your comments make me think otherwise. Have you tried the address-of operator?
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
What do you use the address for ? is it a memeory address or a file offset number ?
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
Your question is not clear.
Gurmeet S. Kochar
If you believe in God, it's because of the Devil
|
|
|
|
|
This question makes no since! What do you mean by "...someone what the address is." Either the code knows what the address is or it doesn't. You might know what the address is at a given run of the program and your debugger might give you the same address every time you rebuild, until you modify the code. But the address may be relitive to the base address of your program or it may be allocated (could be anywhere). You should never need to know the actual address (except maybe when debugging). Pattern searching has nothing to do with finding an address.
struct whatever {...};
struct whatever* pAddr;
or
myfunct(struct whatever* pAddr)
{
}
struct whaterver {...};
whatever* pAddr;
or
myfunct(whatever* pAddr)
{
}
INTP
|
|
|
|
|
Hi:
I want to let the CStatusBar support background bmp(just like CRebar's background).I try to draw the bmp in the onerasebackground() function,but it seems that this way only works in winxp;in win98/me/2000,the background doesn't show correctly.Could you give me any idea or any examplt?
Thanks
Benben
|
|
|
|
|
try OnPaint
Don't try it, just do it!
|
|
|
|
|
|
Hy everybody!
I'm having a little problem in a Windows Service (DOS App)...
I create a CAsyncSocket derived class to work as a server. I use the Listen(), and after that, I wait for a connection on my OnAccept(). Everything works fine... the socket is created, is listening (so I hope)... but when a connection request comes, nothing happens... and don't run the OnAccept mapped function.
(where I'll make Accept() in another socket)
The Unix process (my client) says to me that is connected and begin send data to me... but I even know that I'm connected with it.
Does anybody knows what could be happen?
thanks folks,
cheers!
|
|
|
|
|
Here is a possible cause of your problem:
The OnAccept() method is not called because there is no message pump in your windows service.
Here is my understanding (see MFC source code): When a request comes from a remote program, it is turned into a windows WM_SOCKET_NOTIFY message and posted to an internal window used by CAsynSocket. When the WM_SOCKET_NOTIFY message is processed by MFC, it will invoke the event handlers such as OnAccept, OnReceive, etc. Unless you added a message loop to your windows service, the WM_SOCKET_NOTIFY message will never be processed.
If you cut and paste your code into a MFC dialog based application, assuming there is no other bug, it will work.
If that is confirmed to be the problem, there are at least two relatively easy solutions.
1. Start a separate thread from the windows service. Create the socket in this new thread, call Create/Bind/Listen for the socket, then use a loop to call Accept/Reciev/Send (i.e. don't rely on the OnAccept notification).
2. Move everything to a dialog based application, when the program works, use this special windows service[^] to run your application.
Good luck.
P.S. Solution 1 does not work if multiple clients have to connect to your server simultaneously, in which case you need to add a message pump and rely on the socket events.
My articles and software tools
|
|
|
|
|
Ok, thanks Xiangyang Liu
I'll see if this is the problem, and if so, I'll try one of your sugestions.
Thanks a lot!
cheers!
|
|
|
|
|
The MFC socket classes depend on a message loop to process the notifications properly. Services don't have message loops (normally anyways) so I always use the low level socket routines for services. Check MSDN and they will explain the limitations of CSocket amd CAsyncSocket.
.............................
There's nothing like the sound of incoming rifle and mortar rounds to cure the blues. No matter how down you are, you take an active and immediate interest in life.
|
|
|
|
|
Well, Microsoft Installer (MSI) is a technology (or file format) rather than a tool for authoring installations. InstalShield and Wise produce MSI installations too.
|
|
|
|
|
Hello
Could anyone help me about the "Win 32 error 267" I get when I run a .exe I just correctly compiled with Visual C++?
The associated message is: "Could not execute: invalid directory"
As I'm a beginner, it may be a very stupid mistake....
Thank you in advance
JET
|
|
|
|
|
Is your executable (code) attempting to open a file or a document that does not exist, or does it specify a directory that does not exist ?
That is the apparent reason for the error, so you should check your code throughoghly. Then, set breakpoints into the code and use the debugger to determine the point where this error is caused.
It might also be that your user account has no execution priviledges on the directory where the executable resides. In this case, contact the Systems Administrator for a solution.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Thanks for the answer.
In fact the error happened before the entry point of the program, so no breakpoint could be useful.
It was in fact in options/settings/debug/working directory: as somebody gave me an example of a project, there was something specified that didn't correspond to a real directory on MY computer....
So I erased this line and now I can continue
JET
|
|
|
|
|
I want to ctrl-RClick on a spot and make my cursor change to a custom one (its like a ruler which changes its length depending on which area I click the mouse in). THis cursor image has to be generated on the fly so it cant be part of the resources like an IDI_MYCURSOR. What kind of a file do I need to generate that I can use with SetCursor()? Do I have to "draw" my data into write out a .bmp file onto the hard drive and then reload with ::LoadImage() in my MFC app, to get the handle that I need for ::SetCursor() ? Is there a link on how to make a custom cursor in code somewhere perhaps?
Thanks,
ns
|
|
|
|
|
This sounds very difficult indeed.
Are you certain that it is the cursor length that must change ? Could it be that your cursor can remain a single dot, and then you just purely draw on the device context of the window to achieve your effects ? How about hiding the cursor altogether ?
It is, however, possible to create custom cursor. All you need to do is to create a new, blank icon object and specify two masks for it, AND and XOR. These masks are used to draw the monochrome icon.
For a code example, go to MSDN via this[^] link and expand the second code example there. As you can see, creating run-time icons is a BIG work, but doable.
Read the entire section carefully through before starting, pay especial attention on the truth table used. Then understand that the 4 bytes of each line cover 32 bits of the line (4 * 8 = 32). Then, draw your icon on a paper, and finally, onto the two masks.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|