|
Thanks! I can get the first part right. But Im confused with the WM_LBUTTONDOWN and WM_LBUTTONUP. Since i want the picture coordinates when the button is down, should i put the codes in OnLButtonDown or OnPicture (picture control)? And just to make sure, OnLButtonDown and OnLButtonUp is in the dlg?
|
|
|
|
|
You must get position on the picture class (if you derived a CStatic class)
|
|
|
|
|
Your picture control is a seperate child window to the dialog, so mouse click message is generated and sent to static window, then the static window send WM_NOTIFY message to the parent dialog window, when ur mouse clicks on static control rather than clicking on dialog window. I recommand u to handle this by overwrite CStatic::OnLButtonDown or handle it by CYourDialog::OnNotify. hope this could help u out.
life is like a box of chocolate,you never know what you r going to get.
|
|
|
|
|
Hello
I have a gradient-like background with an owner drawn button. I use AlphaBlend() to draw button's image. Now, the strange thing is:
Background pixel = RGB(168,168,168)
Source pixel = 0xFFFF0000 (AARRGGBB)
After AlphaBlend() with SourceConstantAlpha=0xff the output is RGB(255,0,0) - that's correct but when I change a bit the source pixel to
Source pixel = 0x00FF0000 (AARRGGBB)
I receive pixel RGB(255,168,168)?!?! I should get RGB(168,168,168) because the source alpha is 0x00?!?!?
After some tests with different RGB values, I noticed that my blending works like it 'thinks' that my background is white (255,255,255)?!? When I make all source pixels to have 0xFF alpha value and just play with SourceConstantAlpha value, it's working fine!?! - my button is drawn with proper transparency?!?
I need to play a bit with the source pixels' alpha value for 'soft' button's border.
Does anyone know what could be wrong?? I'm using winxp/vs2003
Thanks a lot!!
|
|
|
|
|
AlphaBlend() from which class?
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Sorry, I couldn't reply as I was offline for couple of days. I was trying CDC::AlphaBlend(), CImage::AlphaBlend() and global ::AlphaBlend() with the same results.
I discovered that I should premultiply r/g/b values by alpha channel. Now it works fine, but I wonder how to cope with the situation when You have very small r/g/b values and small alpha channel. When You premultiply those small values and divide by 255, You will get zeroes...Now if You want to recover almost transparent pixels by increasing their alpha value, You will get black color instead of original one?!?!?
Am I correct??
Simple example:
Source bitmap: ARGB(10,20,0,0) ; DARK RED
After premultiply: ARGB(10,20*10/255,0,0) = ARGB(10,0,0,0); BLACK
Now try to recover original color by increasing alpha
ARGB(255,0,0,0) and You receive black instead of ARGB(255,20,0,0);
Thanks for Your attention.
|
|
|
|
|
Since you're essentially dividing pixel RGB values by 25.5 then yes, any values less than 25 are
going to end up being 0.
There's still something strange - I'm going to try your original code so I can see it.
I'll be back.
Mark
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Hi...
I have a program written in MVS2005 (C++) - a form application. When I run it, it works just fine. But when I try to run the application on a computer without MVS installed it gives me this error: "This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem".
Now... The computer I'm trying to run the application on has .NET Framework 2.0 installed, and my application has all the .dll-s needed in the same folder. I also tried with a Visual 2005 Redistributable package, but the error still pops up. I searched the internet for a solution and I found out I was supposed to include the dlls in my .exe . I did that, but still no result.
Can anyone please tell me how to make an application compatible with all computers (at least running on XP with SP2 and .NET framework 2 installed)?
|
|
|
|
|
Check the dependency of your executable. For checking dependency you need depends.exe, it can be found at MS VS6.0 installation.
Regards,
Paresh.
|
|
|
|
|
I'm an extreme beginner to C++... how do I clear data that I have the user input? Is there an easy function to do this? If I don't know how to do this should I even bother trying to ever learn C++?
Like you imagined when you were young...
|
|
|
|
|
eRose24 wrote: how do I clear data that I have the user input?
What kind of user input you are talking about ? Can you be a little clear ?
|
|
|
|
|
Can you say more explain what kind input?
|
|
|
|
|
Hello,
I have created a non doc-view application.In this MDI application I have a childview derived from CWnd.The window is created with window styles as WS_VSCROLL | WS_HSCROLL. And so I am getting vertical and horizontal scroll bars along with the window.
If I write the OnVScroll and OnHScroll function the pScrollbar pointer is NULL.
so I cannot handle any functions of pScrollbar .How to attach the pointer of CScrollbar to the scrollbar that I have with the window.
Prithaa
|
|
|
|
|
You can use CWnd::GetScrollInfo()/CWnd::SetScrollInfo() to manipulate the window's scrollbars.
Mark
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Hello,
Yes I have been to the Scrolling functions of CWnd class but once the window is made how are the pointers for the scroll bars attached to the scroll bars that I can see with the window.
It seems that the pointer is NULL for CScrollbar *pScrollbar which comes up when I call the function ONHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
And if I want to access the SetScrollRange in the OnCreate
function I get access violation error
Prithaa
with
|
|
|
|
|
For built-in scrollbars (WS_HSCROLL/WS_VSCROLL):
You don't use the CScrollbar pointer (obviously, since it's NULL).
For the CWnd::GetScrollRange/CWnd::SetScrollRange/CWnd::GetScrollInfo/CWnd::SetScrollInfo/etc.
methods, use SB_HORZ/SB_VERT for the nBar parameter to access the appropriate scrollbar.
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Hi all,
I'm trying to get the input from the user. I'm trying the following:
<code.
<pre>
char strBuffer[100];
printf("Please enter a string to send to the server:\n");
cin >> strBuffer;
</pre>
But when debugging I saw that at every space the word gets chopped off. For example: If I entered "Hallo There"
<code>strBuffer would be Hallo
.. second loop cycle ..
strBuffer then it would be There
Please help ...
Thanx
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
This works ....
string test;
getline(cin,test);
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Programm3r wrote: printf("Please enter a string to send to the server:\n");
cin >> strBuffer;
Why aren't you using cout instead of printf() ? Yeah, printf() works just fine, but it seems silly to mix C and C++ in this fashion.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: Why aren't you using cout instead of printf()? Yeah, printf() works just fine, but it seems silly to mix C and C++ in this fashion
I agree: definitely avoid mixing, definitely avoid the bad companions cin/cout
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
CPallini wrote: definitely avoid the bad companions cin/cout
Why ? Is there any particular reason ?
|
|
|
|
|
Yes & No. Mainly was a Joke, but anyway, cin is buggy [^].
(...hope to get another 1.0...)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Only if you're still using Microsoft Visual C++ 6.0. If you are (which I still am at work) then this bug is the least of your worries. If you are using MSVC 6 you should have updated your standard library by now from here[^]!
Steve
|
|
|
|
|
I don't worry about, Microsoft C++ 6.0 is quite good.
(another 1.0!?)
Cheers
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Some advice:
Don't use char arrays like you're doing. If the string is too long you'll overflow the array and corrupt the stack. Debugging stack corruptions is hard. Instead use std::string s. e.g.
#include "StdAfx.h"
#include <string>
#include <iostream>
int main()
{
using namespace std;
string s;
cout << "Please enter your name: ";
cin >> s;
cout << "Hello " << s << "!" << endl;
return 0;
}
If you must use raw char s the use the setw manipulator. i.e.
#include "StdAfx.h"
#include <iostream>
#include <iomanip>
int main()
{
using namespace std;
char s[4];
cout << "Please enter your name: ";
cin >> setw(sizeof(s)) >> s;
cout << "Hello " << s << "!" << endl;
return 0;
}
Steve
|
|
|
|