|
I have written a C++ Windows program called MAKEOBJ. It is a CGI mesh handling program. Under Windows Vista it is displaying an odd bug. In it, when I call SetPixel(dc,x,y,color), the pixel seems to be set only if (x&256)==0. This x is relative to the program's window, not to the whole screen. This happens with my MAKEOBJ's old Borland C++ version (which behaved OK under Windows 98 on my old computer) and with my new Visual C++ version. (Line drawing, and copying an image to the screen, work OK.) Please what is happening and how to cure it?
The same also happens with a completely different program that I wrote, to handle 2D graphics images.
modified on Sunday, April 20, 2008 2:55 PM
|
|
|
|
|
Try GetLastError and see what is the error returned from GetPixel, if any?
-Saurabh
|
|
|
|
|
I think may be it comes with compiler problem ..
|
|
|
|
|
|
The cause is not a "compiler issue", because it happens with Visual C and Borland C, as my first message in this thread says.
Could the cause be a replacement screen-driver which I had to download and install? The fault symptoms are relative to the affected program's window, not to the whole screen. Line-drawing and BitBlt and similar seem to run OK.
|
|
|
|
|
I have hacked a temporary solution, thus, but I would prefer a proper permanent solution:
void Set_Pixel(HDC dc,int x,int y,COLORREF c);
#define SetPixel(dc,x,y,c) Set_Pixel(dc,x,y,c)
/*-----*/
void Set_Pixel(HDC dc,int x,int y,COLORREF c){
HPEN p=CreatePen(PS_SOLID,1,c),q; q=(HPEN)SelectObject(dc,p);
MoveToEx(dc,x,y,0); LineTo(dc,x,y+1); SelectObject(dc,q); DeleteObject(p);}
|
|
|
|
|
Thanks a lot. This works !
|
|
|
|
|
Hi, I want to know how to detect USB masstorage device when I insert it (in console application), and then get serial number of device?
|
|
|
|
|
Hi,
I've just started looking at c++ and I'll probably be buying a book in a few days. Right now I'm trying to make a simple Hello World program but I'm not sure how to compile it. I'm using Visual C++ 2008 Express Edition, just created a new .cpp file and wrote the code in it but where do I go from here?
helloworld.cpp:
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int main()<br />
{<br />
cout << "Hello World!\n";<br />
return 0;<br />
}
|
|
|
|
|
The simplest way (AFAIK): create a new project (choose console application), Visual Studio will create header and source files for you. Write your code inside the .cpp one, compile and enjoy it.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Thank you, that worked. But why did it create another 20 files? Is there not a way to compile just one single .cpp-file as it is?
|
|
|
|
|
You could use the command line compiler (run CL.exe , using Visual Studio Command Prompt).
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
|
I am on the west coast of the US, so my time zone is Pacific Time.
Depending on whether I am using a Win2K or WinXP machine, I share or don't share the TZ with Tijuana, Mexico.
I created the following console program
//*****************************************************************************
FILETIME Increment(FILETIME ft, const unsigned long long inc)
{
ULARGE_INTEGER uliTime;
uliTime.LowPart = ft.dwLowDateTime;
uliTime.HighPart = ft.dwHighDateTime;
uliTime.QuadPart += inc;
ft.dwLowDateTime = uliTime.LowPart;
ft.dwHighDateTime = uliTime.HighPart;
return ft;
}
//*****************************************************************************
int _tmain(int argc, _TCHAR * argv[])
{
static const unsigned long long OneThousand = 1000ll;
static const unsigned long long OneSecond = OneThousand * OneThousand * 10ll; // 1000 milliseconds per second * 1000 microseconds per millisecond
static const unsigned long long OneDay = 24 * 60 * 60 * OneSecond;
char Name[45];
SYSTEMTIME sysCreationTime = { 0 };
SYSTEMTIME sysLastAccessTime = { 0 };
SYSTEMTIME sysLastWriteTime = { 0 };
sysCreationTime.wYear = 2007;
sysCreationTime.wMonth = 1;
sysCreationTime.wDayOfWeek = 4;
sysCreationTime.wDay = 11;
sysCreationTime.wHour = 12;
sysCreationTime.wMinute = 0;
sysCreationTime.wSecond = 0;
sysCreationTime.wMilliseconds = 0;
sysLastAccessTime = sysCreationTime;
sysLastWriteTime = sysCreationTime;
sysLastAccessTime.wHour = 1;
sysLastWriteTime.wHour = 2;
FILETIME fileCreationTime;
FILETIME fileLastAccessTime;
FILETIME fileLastWriteTime;
::SystemTimeToFileTime(&sysCreationTime, &fileCreationTime);
::SystemTimeToFileTime(&sysLastAccessTime, &fileLastAccessTime);
::SystemTimeToFileTime(&sysLastWriteTime, &fileLastWriteTime);
fileCreationTime = Increment(fileCreationTime, 480ll * 60ll * OneSecond); // Pacific Std Time is 480 minutes less than UTC. UTC = local time + bias
fileLastAccessTime = Increment(fileLastAccessTime, 480ll * 60ll * OneSecond);
fileLastWriteTime = Increment(fileLastWriteTime, 480ll * 60ll * OneSecond);
for(int i = 0; i < 365; ++i) {
sprintf(Name, "%03d", i);
HANDLE f = ::CreateFile(Name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(f == INVALID_HANDLE_VALUE) {
::fprintf(stderr, "Error CreateFile\n");
} else {
if( ! ::SetFileTime(f, &fileCreationTime, &fileLastAccessTime, &fileLastWriteTime)) {
::fprintf(stderr, "Error SetFileTime\n");
}
fileCreationTime = Increment(fileCreationTime, OneDay);
fileLastAccessTime = Increment(fileLastAccessTime, OneDay);
fileLastWriteTime = Increment(fileLastWriteTime, OneDay);
::CloseHandle(f);
}
}
return 0;
}
Windows Explorer and a console 'dir' both report modified file times of 3 am for all 365 files. This surprises me. I expect a file with a date set 24 hours later than another file, going across when time changed from std time to dst, would be one hour different than the other file. And all files within the DST time period would be an hour different from files outside the DST time period, since every file is set to 24 hrs later then the previous. But all files have the same time!(?)
I must be doing something wrong, but I can't see what is the problem.
Any ideas?
Thanks
Rogue
|
|
|
|
|
I thinking of upgrading from VC Studio 6.0. Is it worth upgrading to VC 2008? I really just use C++. What would be the best... 2005 or 2008? Does the new MFC update work on 2005?
What is the up side and down side to upgrading?
Any opinions?
What about VC C++ Express?
Thanks for your time.
Tim
|
|
|
|
|
|
Member 260880 wrote: What about VC C++ Express?
It is great (because it's free). Anyway it has NO MFC and NO resource editor.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
May as well go for 2008 as that is what's out.
Member 260880 wrote: What about VC C++ Express?
Have a look at the feature comparisons on Microsoft's site. If you have been using MFC or ATL then the Express version is no good.
Also Google on breaking changes in visual C++ and look at what's changed between 6 and 7, 7 and 8 and so on.
Kevin
|
|
|
|
|
Visual Studio 2005 offers a better development environment than VC++ 6.0 and a vastly superior C++ compiler. The MFC support takes a while to get used to and is in some ways worse than with VC++ 6.0. Visual Studio 2008 builds on this, but is still the proverbial bastard step-child for C++ support. One other issue is that if you ship your MFC using DLLs, the SxS (side-by-side) compilation in VS 2005 and 2008 makes deployment a real headache. On top of that, the lastest MFC release DLLs are massively bloated due to the addition of the BCG libraries (this was a very idiotic decision in a long line of stupid decisions by the MFC "architects".)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
hi,
im currently working to create a dialog box application which will connect to my database(MS access). my code is working as far as viewing the field values is concerned but im not finding how to insert or delete or updata the fields of a single record via editbox values . i am having two edit box for one record and OK button. it must insert the values of edit boxes into fields of my table on Ok button . im using VC6++ and MS access 2007 on WINXP
help is appreciated in advance
thanks
|
|
|
|
|
Did you see Database section on the codeproject?
|
|
|
|
|
Hi Hamid!
Do you know any body from "Kermanshah".
I think I know you.
Inform me at info@parasum.com
|
|
|
|
|
Usef Marzbani wrote: Do you know any body from "Kermanshah".
No,but some members on the codeproject are of ir.
Usef Marzbani wrote: I think I know you.
Maybe you asked questions here and I answered to them.
|
|
|
|
|
Here is an example:
I have 2 files
HtmlHelp.h
htmlhelp.lib
in directiry
D:/Develops/VisualCPP/Lib/Microsoft/Help/
I add director
D:/Develops/VisualCPP/Lib/
as "include files" and "library files" in VC options.
so the include can use related path in the way:
#include "Microsoft\Help\HtmlHelp.h"
works well.
(a) but the library file in related path:
#pragma comment(lib,"Microsoft/Help/htmlhelp.lib")
is not working.
I have to use whole absolute path:
#pragma comment(lib,"D:/Develops/VisualCPP/Lib/Microsoft/Help/htmlhelp.lib")
Question:
I hope library file can be used in related path as (a).
Do you know how to do that?
|
|
|
|
|
How to save sound from microphone and video from web camera to one stream?
|
|
|
|
|