|
You just need to get the path right. Perhaps something like
#include "..\common\Enums....h"
|
|
|
|
|
I tried that also but still iam getting the error...
fatal error C1083: Cannot open include file: '../common/Constants.h': No such file or directory
|
|
|
|
|
What is the relative path from the file that has the #include to the file you want to include?
|
|
|
|
|
Relative path in the sense..I am not clear with your question..but I can sense something that your aksing for the path information..I am just posting the error msgs which I am getting when building the two projects i.e common and ioLib combinedly..
c:\Documents and Settings\Vijayalakshmi\Desktop\ioLib\ioLib\ModelFileIO.cpp(3) : fatal error C1083: Cannot open include file: 'common/Exception.h': No such file or directory
c:\Documents and Settings\Vijayalakshmi\Desktop\RBF\RBF\common\Model.h(7) : fatal error C1083: Cannot open include file: 'ioLib/NmFileIO.h': No such file or directory
|
|
|
|
|
valli_guru wrote: c:\Documents and Settings\Vijayalakshmi\Desktop\ioLib\ioLib\ModelFileIO.cpp(3) : fatal error C1083: Cannot open include file: 'common/Exception.h': No such file or directory
This is the path the compiler is looking for but it does not exist
c:\Documents and Settings\Vijayalakshmi\Desktop\ioLib\ioLib\common\Exception.h
if Exception.h is in this folder
valli_guru wrote:
c:\Documents and Settings\Vijayalakshmi\Desktop\RBF\RBF\common\
Then the #include in ModelFileIO.cpp should be
#include "..\..\RBF\RBF\common\Exception.h"
You should be able to figure out the other one
|
|
|
|
|
Yes, Its working now..thanks ..thanks a lot...
|
|
|
|
|
valli_guru wrote: thanks a lot
You are welcome. Does it link correctly?
|
|
|
|
|
Yes, it does...It is linking perfectly... Thanks
|
|
|
|
|
hi, i've been posting posts asking around questions regarding multithreading, and however my multithreading code never worked, so i'm thinking some other approach.
The problem i having is:
I need to create a MFC dialog with bunch of slider controls, the position of each slider will be stored into a data array.
So if i have 20 sliders, i'll have a array of 20 elements storing the postion of each slider. the data of the array will be transfered to a hardware and outputted.
I want this output to be continuous and can be changed real time. so if changed a slider position and output will be changed correspondingly.
i created a worker thread.
the thread function is:
UINT Start(...){
while(//some condition){
....
GetData();//this is the function store the position into data array
OutputData(Data)//output through hardware
}}
GetData(){
for(int i=0,i<20,i++){
Data[i]=Slider[i].GetPos()
}
there's a problem with this approach which is that my worker thread implicitly query the GUI object which is slider through GetData() function, which cause my program to enter a deadlock and the thread can't be terminated properly.
If I put the Getdata() in the main dialog thread, i could use the CEvent to create some communication between the thread, however, that would require me a loop since the data has to be continously output.
I haven't try this method yet, but i'm afraid the loop will cause the program to freeze.
I have another idea which doesn't involve the GetData()
CMYDlg::OnCustomDrawSlider1(.....){
SuspendThread(...);
Data[0]=Slider[0].GetPos();
ResumeThread(...);
}
CMYDlg::OnCustomDrawSlider2(.....){
SuspendThread(...);
Data[1]=Slider[1].GetPos();
ResumeThread(...);
}
then in the thread function, there's no more GetData() and no accessing GUI object which should be safe, however, i'm not sure the effect of SuspendThread()and ResumeThread() on my worker thread, what if the OutputData() is running and the thread is suspended??
I know this is a long post and thx for the patience for reading it.
Could anyone give me some suggestions on my approach to this program?
|
|
|
|
|
alberthyc wrote: If I put the Getdata() in the main dialog thread,...
I think that is the right way.
To communicate between the thread and the main dialog you can send some messages:
You can send the messages using PostMessage((WM_USER+10??), Param)
You can catch they override PreTranslateMessage or DefWindowProc , and:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
if(message==(WM_USER+10??)){
... do something
return TRUE;
}
Russell
|
|
|
|
|
Should you wait until the user has finished moving the slider control before sending out its position? If so, respond to the TBN_ENDDRAG notification.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hi
I am new with DirectX and I need to get access to a joystick.
So I have written the following code, but I am getting an error when I try to SetCooperativeLevel the return is E_HANDLE. I have checked the sample code and I am doing everything the same, and yet I am getting these error. Can anyone tell me why. I have attached the code:
HRESULT hr;<br />
if ( FAILED( hr = DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**) &di, NULL ) ) ) {<br />
return hr;<br />
}<br />
<br />
<br />
if ( FAILED( hr = di->EnumDevices( DI8DEVCLASS_GAMECTRL, enumCallback, this, DIEDFL_ATTACHEDONLY ) ) ) {<br />
return ;<br />
}<br />
<br />
if ( joystick == NULL ) {<br />
return ;<br />
}<br />
if ( FAILED( hr = joystick->SetDataFormat( &c_dfDIJoystick2 ) ) ) {<br />
return ;<br />
}<br />
<br />
if ( FAILED( hr = joystick->SetCooperativeLevel( this->GetSafeHwnd(), DISCL_EXCLUSIVE | DISCL_FOREGROUND ) ) ) {<br />
int test = 0;
return ;<br />
}
|
|
|
|
|
E_HANDLE
"The HWND parameter is not a valid top-level window that belongs to the process"
What window are you calling this from?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I created a SDI application in MFC and passed in a viewclass's hwnd.
Is this not correct.
Thanks for the help
|
|
|
|
|
It should be a top-level window. The main frame window should work.
One way to get it is AfxGetApp()->GetMainWnd()->GetSafeHwnd()
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
The combo box tutorial says you can change the combo box height at edit time by right-clicking on the arrow and resizing the box. I believe that technique referenced Visual Studio 6.0. I haven't found a way to resize it (at edit time) under Visual Studio 2005. Does anyone know a way?
Wayne King
|
|
|
|
|
Click the arrow. The middle grapple on the bottom edge will highlight.
Then you can drag it down with that grapple.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
That doesn't work in Visual Studio 2005, at least not on mine. Are you using 2005? Maybe my IDE configuration is screwed up.
Wayne
|
|
|
|
|
WayneK100 wrote: Are you using 2005?
Yes, with SP1.
I tried it before posting
For me, the hollow grapples can't be used. The solid grapples are usable.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
If you are unable to do in design, You have the option of doing it through coding. Here is the sample:
CRect rect;
rect.top = 1;
rect.bottom = rect.top + 250;
if(!m_ComboBox.Create(WS_CHILD | CBS_DROPDOWNLIST | WS_VISIBLE |
WS_TABSTOP | WS_VSCROLL, rect, &m_comboToolBar, ID_COMBO)) {
TRACE(_T("Failed to create combo-box\n"));
return FALSE;
}
|
|
|
|
|
I am having a problem extracting the binaries of PNG files and extracting Bitmap files to write to disk. I am using http://www.codeproject.com/win32/binaryresources.asp[^] as a rough guide.
The problem with the PNG is that the extracted PNG files are automatically buffered to have a number of bytes equal to a multiple of TCHAR. For example, one PNG resource I have is 251 bytes long, but when extracted it is 255. These 4 extra bytes seem to be making it an unreadable file. Is there any kind of data type that is a pure bit stream, or is there a way to write the TCHAR byte by byte and leave off those extra 4 bytes?
As for the bitmap files, a similar problem occurs. For this I will post some code:
void BitmapResourceToFile(int resourceId, CString dirToWriteTo)
{
HRSRC resourceInfo;
HGLOBAL loadedResourceHandle;
HINSTANCE instanceHandle;
BITMAPFILEHEADER bitmapFileHeader;
LPBITMAPINFOHEADER bitmapInfo;
UINT bitsPerPixel;
UINT numberOfPixelBytes;
UINT extra;
CStdioFile file;
instanceHandle = ::AfxGetInstanceHandle();
resourceInfo = ::FindResource(instanceHandle,MAKEINTRESOURCE(resourceId),RT_BITMAP);
loadedResourceHandle = ::LoadResource(instanceHandle,resourceInfo);
bitmapInfo = (LPBITMAPINFOHEADER)::LockResource(loadedResourceHandle);
numberOfPixelBytes = (lpBitmapInfo->biWidth * lpBitmapInfo->biBitCount)/8;
extra = numberOfPixelBytes % 4;
if(extra != 0 && extra != 4)
{
numberOfPixelBytes += extra;
}<br>
numberOfPixelBytes *= bitmapInfo->biHeight;
bitmapFileHeader.bfType = 0x4d42;
bitsPerPixel = 1 << bitmapInfo->biBitCount;
bitmapFileHeader.bfSize = (DWORD)(sizeof(bitmapFileHeader) + sizeof(bitmapInfo) + numberOfPixelBytes + bitsPerPixel);
bitmapFileHeader.bfReserved1 = 0;
bitmapFileHeader.bfReserved2 = 0;
bitmapFileHeader.bfOffBits = sizeof(bitmapFileHeader) + sizeof(bitmapInfo);
file.Open(resourceFileDir,CFile::modeCreate | CFile::modeWrite);
file.Write(&bitmapFileHeader,sizeof(bitmapFileHeader));
file.Close();
file.Open(resourceFileDir,CFile::modeNoTruncate | CFile::modeWrite);
file.Write(bitmapInfo,sizeof(bitmapInfo) + numberOfPixelBytes + bitsPerPixel);
file.Close();
}
Every bmp file written to disk is not a valid bmp. What am I doing wrong? Is there a better (and correct) way of doing what I am trying to do? If no one knows an answer, are there any good resources on this subject? (MSDN has not been a good resource )
Thanks for any help!
NOTE: I have left out all of my error checking in the above code to make it more readable. The code compiles and runs, it just does not produce valid bmps or pngs. And sorry about the code being squished together. The forum does not seem to want to preserve my line breaks...
|
|
|
|
|
The BITMAPINFOHEADER has a biSizeImage member so you shouldn't have to calculate it yourself.
If you do choose to calculate it you need to set it to your new value.
You haven't allowed for a color table if the bitmap is <= 8 bitsperpixel.
When writing the file, you write the header and close the file.
Then you reopen the file, truncate it (no more header) and write the rest.
That will invalidate it as a BMP file.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hm ok. I set up the file writing to not truncate (I had thought that "modeNoTruncate" would make it append) and it is making valid bmps, but the bmps are random pixels and furthermore, each time I open a single file the pixels change
How can I access the colortable and write that data?
Thanks!
|
|
|
|
|
|
Awesome, thanks for this. There's a lot of good stuff here that I didn't know about, like with the compression.
|
|
|
|