|
I want to create an array of variable addresses (different types).
e.g.
void * addressArray[20]; // Is void pointer correct?
unsigned status : 4;
short data1;
long data2;
float data3;
double data4;
<br />
addressArray[0] = &status;<br />
addressArray[1] = &data1;<br />
addressArray[2] = &data2;<br />
<br />
<br />
CString formatStr;<br />
<br />
formatStr.Format("Data 1 = %d", *data1);
printf(formatStr); Is this possible, I have heard of a type called variant but never used it.
|
|
|
|
|
|
Thanks for your post. I have spent the day trying the new OleVariant and VARIANT types.
I found that the example project did not do what I required, so I opted for the VARIANT, but have a problem. When I display the data is is always a funny value and when I set it to to 0, then it always remains at 0. I have just concentrated on dealing with a unsigned short at present; but will want to deal with floats, doubles etc later
See code below:-
VARIANT varData[5];<br />
<br />
union<br />
{<br />
unsigned short mess_13_tp1_w01_data1; <br />
unsigned short mess_13_tp1_w03_data2; <br />
unsigned short mess_13_tp1_w02_data_X; <br />
unsigned short mess_13_tp1_w02_data1_X; <br />
unsigned short mess_13_tp1_w02_data2_X; <br />
unsigned short buffer[32];<br />
}mess_13_m_tp1_display;<br />
<br />
<br />
VariantInit(&varData[0]);<br />
varData[0].vt = VT_UI2;<br />
varData[0].puiVal = &mess_13_m_tp1_display.mess_13_tp1_w01_data1;<br />
VariantInit(&varData[1]);<br />
varData[1].vt = VT_UI2;<br />
varData[1].puiVal = &mess_13_m_tp1_display.mess_13_tp1_w02_data_X;<br />
VariantInit(&varData[2]);<br />
.<br />
.<br />
Etc<br />
<br />
for( j = 0; j < message.getNoFields(); j++)<br />
{<br />
m_cSignalList.SetItemText(j , 0, message.details[j].fieldDesc);<br />
m_cSignalList.SetItemText(j , 1, message.details[j].signal);<br />
formatStr.Format(message.details[j].display1,&message.varData[j].uiVal);<br />
m_cSignalList.SetItemText(j, 2, formatStr); formatStr.Format(message.details[j].display2,message.varData[j].uiVal);<br />
m_cSignalList.SetItemText(j, 3, formatStr);<br />
m_cSignalList.SetItemText(j , 4, message.details[j].unitsStr );<br />
}
I use a ListCtrl to display and modify the data, hence the need to use VARIANTS.
Any suggestions to overcome this problem?
grahamfff
|
|
|
|
|
Hello,
I want to save a file in my exe project and
use it (Read and Write),
this file is in my exe file not
in any folder!
Best Wishes,
Thanks.
|
|
|
|
|
Use the CFile class...
Regards
Carlos Antollini
Do you know piFive[^] ?
|
|
|
|
|
Zero_One_ADO wrote:
this file is in my exe file not
Meaning that it is in the exe's resource table? If so, are you wanting to extract the resource and save it to a separate file?
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
save them as resources.
gabby
|
|
|
|
|
Hello,
I have an Owner-Drawn Button.
I want to change the cursor when my
Mouse is Over the Button,
Best Wishes,
Thanks.
|
|
|
|
|
Process the WM_SETCURSOR message.
BOOL CMyView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_BUTTON_1:
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_IBEAM));
or
SetCursor(AfxGetApp()->LoadCursor(IDC_MY_CURSOR));
return TRUE;
break;
case IDC_BUTTON_2:
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
return TRUE;
break;
}
return CFormView::OnSetCursor(pWnd, nHitTest, message);
}
|
|
|
|
|
I'm porting code written in C++ for a Motorola ColdFire chip to Visual C++.
In the original program I have two files which I will call Code.cpp and Code.h
Code.h has the class and member function declarations and Code.cpp has member function definitions and the operative code.
The main class for the program is, let's say, cMain, which has a bunch of nested classes.
Now in my Code.cpp file, after the declarations of the constants, I had the following line
extern cMain Main;
In Visual C++ (VS2003) this throws an LNK2001 error. If I remove the extern the program compiles without error.
Could somebody please explain why this is so? When should an object be instantiated using "extern" in VC++ (VS2003)?
Thanks!
|
|
|
|
|
Linker Tools Error LNK2001
When your writing code you have to label the functions, variables, classes, etc... If you label something that it cannot find or is listed twice you will receive an LNK2001 process error. If that doesn't work try this on the main menu of Visual C++ go to project settings, and click on the C/C++ tab. remove _ATL_MIN_CRT from the preprocessor definitions, although depending on what version of Visual C you are running it may automatically be removed. Most likely however their is a function or variable that is listed twice in the Class tree, which again is causing compilation errors. Although if this doesn't work try looking at the error itself at msdn.
Here is the link
feel free to email me if you have any more questions or are still receiving problems
-Mike
|
|
|
|
|
hi, there.
please help me with this urgent problem i have.
use the wizard to build a regular mfc dll project.
include 2 files in your project:
a.h
int a;
a.cpp
#include "stdafx.h"
#include "a.h"
#include "a.h" in your CWinApp derived class' .cpp file.
why the hell do you get LNK2005??
thank you
Я люблю русский языкь!
|
|
|
|
|
Sorry I do not quite understand what you have written.
Although see here LNK2005[^] for reason why you get LNK2005 errors.
Ant.
I'm hard, yet soft. I'm coloured, yet clear. I'm fruity and sweet. I'm jelly, what am I? Muse on it further, I shall return! - David Williams (Little Britain)
|
|
|
|
|
Hi,
I am trying to place an OwnerDrawn ComboBox on a DialogBar. To do this i create a class derrived from CComboBox, and this works fine on a standard CDialog. But i want the control placed on a CDIalogBar. How do i get MFC to instantiate the ComboBox from the derived class rather than CComboBox. Initially i went to use the ClassWizzard to create a class to represent the CDialogbar, however it doesn't allow you to have a base class of CDialogBar and i believe you can't use CDialog in this situation. Anyone any suggestions?
Thanks in advance
Rich
|
|
|
|
|
Found an MSDN article for this scenario - 185672. What sort of forum is this if you have to reply to yourself!
|
|
|
|
|
Hi All,
I want to trap the ctrl+tab, ctrl+f6 etc. in my MDI app, so I can stop WM_MDINEXT, WM_MDIPREV...
I do not want to get into key trapping if possible.
Anyone got any thoughts.
Thanks
Jay
|
|
|
|
|
Hi All,
I want to trap the ctrl+tab, ctrl+f6 etc. So I can stop WM_MDINEXT, WM_MDIPREV.
I do not want to get into key trapping if possible.
Anyone got any thought.
Thanks
Jay
|
|
|
|
|
I downloaded some code off of this site that has the constant NIIF_NONE in it. This has happened to me before, and now again where my app won't build because it can't find these constants. It says in the documentation for the source that this and the other NIIF_ constants are defined in shellapi.h, but I can't find them there. Any help?
[insert witty comment here]
bdiamond
|
|
|
|
|
I also see now in shellapi.h that the above preprocessor is called. I'm guessing this means if my internet explorer version is higher than 5?? I have IE 6, so I don't know what the problem is. I found the #defines for NIIF_NONE and others, but they're not included (or dwInfoFlags). Anybody know why? Any help is appreciated. Thanks!!!
[insert witty comment here]
bdiamond
|
|
|
|
|
You need to define _WIN32_IE to 0x0500 or greater somewhere in your program or as part of the command line eg.
#define _WIN32_IE 0x0500
Systems AXIS Ltd - Software for Business ...
|
|
|
|
|
The flags are defined in my copy of shellapi.h as follows:
#if (_WIN32_IE >= 0x0500)
#define NIS_HIDDEN 0x00000001
#define NIS_SHAREDICON 0x00000002
// says this is the source of a shared icon
// Notify Icon Infotip flags
#define NIIF_NONE 0x00000000
// icon flags are mutually exclusive
// and take only the lowest 2 bits
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
#define NIIF_ICON_MASK 0x0000000F
#if (_WIN32_IE >= 0x0501)
#define NIIF_NOSOUND 0x00000010
#endif
#endif
Systems AXIS Ltd - Software for Business ...
|
|
|
|
|
duh, I was looking in the wrong place at first, (vc98 include folder) I found them, but now I'm finding that the trouble must be with the IE version defined. I looked it up in the MSDN and found out what it meant, but since I have version 6 of IE, I still don't see what the problem is..Wait, I just got an email where you stated I should define my explorer version. I was just going to ask if I should do that, and will it break something? Oh well, I'm going to try that now. Thanks!!
[insert witty comment here]
bdiamond
|
|
|
|
|
yup, that worked!!! thanks
[insert witty comment here]
bdiamond
|
|
|
|
|
|
Hi,
i tried to modify the codes to display only gray scale image and aslo the original image.So far my program just display a blank bitmap.Anyone can please help me.
void CMy2ndtryView::OnDraw(CDC* pDC)
{
CMy2ndtryDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CDC MemDC;
MemDC.CreateCompatibleDC (NULL);
MemDC.SelectObject (&m_Bitmap);
pDC->BitBlt
(20,
20,
m_BitmapWidth,
m_BitmapHeight,
&MemDC,
0,
0,
SRCCOPY);
CDC resultDC;
CBitmap m_result;
m_result.CreateCompatibleBitmap(pDC,m_BitmapWidth,m_BitmapHeight);
resultDC.CreateCompatibleDC (NULL);
resultDC.SelectObject (&m_Bitmap);
for( int y = 0; y < m_BitmapHeight ; y++ )
{
for( int x = 0; x < m_BitmapWidth ; x++ )
{
//set pixel to color returned by convolve
resultDC.SetPixel(x,y,Convolve(&MemDC,x,y,kernel));
}
}
//Display Result
pDC->BitBlt
(300,
20,
m_BitmapWidth,
m_BitmapHeight,
&resultDC,
0,
0,
SRCCOPY);
}
COLORREF CMy2ndtryView::Convolve(CDC *pDC, int sourcex, int sourcey, float kernel[][3])
{
float rSum = 0, gSum = 0, bSum = 0, kSum = 0;
float grayscale =0;
COLORREF clrReturn = RGB(0,0,0);
for (int i=0; i <= 2; i++)//loop through rows
{
for (int j=0; j <= 2; j++)//loop through columns
{
COLORREF tmpPixel = pDC->GetPixel(sourcex+(i-(2>>1)),sourcey+(j-(2>>1)));
float fKernel = kernel[i][j];
rSum += (GetRValue(tmpPixel)*fKernel);
gSum += (GetGValue(tmpPixel)*fKernel);
bSum += (GetBValue(tmpPixel)*fKernel);
kSum += fKernel;
}
}
if (kSum <= 0)
kSum = 1;
rSum/=kSum;
gSum/=kSum;
bSum/=kSum;
if (rSum > 255)
rSum = 255;
else if (rSum < 0)
rSum = 0;
if (gSum > 255)
gSum = 255;
else if (gSum < 0)
gSum = 0;
if (bSum > 255)
bSum = 255;
else if (bSum < 0)
bSum = 0;
grayscale=0.299*rSum + 0.587*gSum + 0.114*bSum;
rSum=grayscale;
gSum=grayscale;
bSum=grayscale;
clrReturn = RGB(rSum,gSum,bSum);
return clrReturn;
}
Is there something with my formula for grayscale?
grayscale=0.299*rSum + 0.587*gSum + 0.114*bSum;
|
|
|
|
|