|
typedef struct DOUBLE_MATRIX
{
double **ppdDoubleMatrix;
MIINT32 iRows;
MIINT32 iColumns;
}DOUBLE_MATRIX;
static DOUBLE_MATRIX *New(MIINT32 iRows, MIINT32 iColumns)
{
DOUBLE_MATRIX *pxThis = NULL;
pxThis = calloc(1, sizeof(mxSystemDOUBLE_MATRIX));
if (pxThis && iRows > 0 && iColumns > 0)
{
MIINT32 iRowsCounter = 0;
pxThis->iRows = iRows;
pxThis->iColumns = iColumns;
pxThis->ppdDoubleMatrix = (double **) calloc(iRows, sizeof(double *));
for (iRowsCounter = 0; iRowsCounter < iRows; iRowsCounter++)
{
pxThis->ppdDoubleMatrix[iRowsCounter] = (double *) calloc(iColumns, sizeof(double));
}
}
return pxThis;
}
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Maybe you should make your modal dialog window have the desktop as its parent?
Try calling GetDesktopWindow() and use the returned handle for the parent of the modal dialog and see if that helps.
|
|
|
|
|
Hi!
I am trying to use the registry with win32 api c++.
But I have difficulties using the RegQueryValue functions.
I found some examples on the net but they all use CString and I cant use it because I dont write in MFC...
Can someone write an example? ( if possible the whole thing how to get a value?)
Thanks in advance!
Well... I am a beginner ...
|
|
|
|
|
A very simple example how to get the Windows product name:
HKEY hKey;
TCHAR tszProductName[128];
DWORD dwBufSize = 128;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\CurrentVersion"), 0, KEY_READ, &hKey);
RegQueryValueEx(hKey, _T("ProductName"), NULL, REG_SZ, (LPBYTE)tszProductName, &dwBufSize);
RegCloseKey(hKey);
printf("Windows Product Name: ");
printf(tszProductName);
Hope that helps
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
Scolinks wrote:
But I have difficulties using the RegQueryValue functions.
I found some examples on the net but they all use CString and I cant use it because I dont write in MFC...
There are plenty of MSDN examples that do not use MFC. Here's but one:
#define RTN_UNKNOWN 0
#define RTN_SERVER 1
#define RTN_WORKSTATION 2
#define RTN_NTAS 3
#define RTN_ERROR 13
DWORD GetWindowsVariant(void)
{
#define MY_BUFSIZE 32 // Arbitrary initial value.
HKEY hKey;
TCHAR szProductType[MY_BUFSIZE];
DWORD dwBufLen = MY_BUFSIZE;
LONG lRet;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),
0,
KEY_QUERY_VALUE,
&hKey) != ERROR_SUCCESS) return RTN_ERROR;
lRet = RegQueryValueEx(hKey,
TEXT("ProductType"),
NULL,
NULL,
(LPBYTE)szProductType,
&dwBufLen);
RegCloseKey(hKey);
if(lRet != ERROR_SUCCESS) return RTN_ERROR;
if(lstrcmpi(TEXT("WINNT"), szProductType) == 0)
return RTN_WORKSTATION;
if(lstrcmpi(TEXT("SERVERNT"), szProductType) == 0)
return RTN_SERVER;
if(lstrcmpi(TEXT("LANMANNT"), szProductType) == 0)
return RTN_NTAS;
else return RTN_UNKNOWN;
} Here are some searches returned from Google:
http://www.windowsitlibrary.com/Content/69/07/1.html
http://www.geocities.com/merijn_bellekom/new/win9xcpu.html
http://www.pc-magazin.de/common/forum/forum.php?id=30000624&forum=30&dsp_start=120&expand=1&suchwort=
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Hi !
I have a vector of objects of class B. Class B is derived from class A :
A function in my application is asking for a vector of class A objects.
I want to pass my vector of B objects (which I guess should be possible because B objects are A objects, thus a vector of B objects if also a vector of A objects).
Here is a snippet of what I tried :
class A;
class B : public A;
void foo(std::vector<const A>& vect)
{
}
void main()
{
std::vector<const B> MyVect;
MyVect.push_back(new B);
foo(MyVect);
}
I get a compile error, telling me that it's not possible to convert std::vector<const B> to std::vector<const A>.
How can I solve this ?
Thanks !
Jerome
|
|
|
|
|
Hi Jerome
This cast can't be possible because std::vector< const A > and std::vector< const B > isn't the same class. I think you can do a template function like:
// file foo.h
template< class _T >
inline void foo( std::vector< const _T > &rVector )
{
// in your case you can do
const A &rEntry = ( const A& ) rVector[ nIndex ];
...
...
}
The compiler creates now two methods like:
inline void foo( std::vector< const A > &rVector )
{
const A &rEntry = ( const A& ) rVector[ nIndex ];
...
...
}
and
inline void foo( std::vector< const B > &rVector )
{
const A &rEntry = ( const A& ) rVector[ nIndex ];
...
...
}
cgott
|
|
|
|
|
The solution is to sstore pointers in the vector.
John
|
|
|
|
|
Hi !
I tried, but it doesn't work either. The vector I use look like this :
std::vector<A*> and std::vector<B*>
but the compiler is not able to convert....
Thanks anyway !
Jerome
|
|
|
|
|
The classes need to be derived from the same parent:
class C<br />
{<br />
};<br />
<br />
class A : public C<br />
{<br />
};<br />
<br />
class B : public C<br />
{<br />
};
And then you can have:
std::vector<C *>
And store A's and B's
|
|
|
|
|
The solution by Jonny is the correct way to do this.
John
|
|
|
|
|
hey,
I need help with this program i need to make, ok first off i have one console application written in c# and compiled, its a simple program that should take 2 arguments from the command line e.g.( runApp 2 4 ) and it will take the 2 arguments 2 & 4 and add them together. SIMPLE
Now the hard part is i need another application preferably in C++, can be in C#, and what it has to do is test the first application. So it needs to run it within itself (kinda like a testing script in unix) and give it the arguments it needs, then read the value (i.e. the total sum) and compare it with its own result.
So basically it runs the same function as in the first program, stores the value in a variable, then runs the first program, gets output from it and compares the 2 values.
Hope anyone can help.
Cheers Stan
|
|
|
|
|
Where does the first application send its output? If it's to standard output, read these two articles:
http://support.microsoft.com/default.aspx?scid=kb;en-us;190351
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Try using the exit code of the console process to return the result. Usually, main returns an integer that is the exit code of the process. This can be obtained with the CreateProcess function.
__________________________________________
a two cent stamp short of going postal.
|
|
|
|
|
I created a bitmap image with image editor in VS6 and attached to a CButton. However, there is a problem with showing colors accurately.
I changed light gray - RGB(192,192,192) that was in original palette with RGB(208,208,200) using Adjust Colors... in Image menu, but when the app starts the bitmap's color is the old light gray. What should I do to fix this problem?
|
|
|
|
|
Hi,
I'm developping an SDI app that is able to load custom 'pluggable' toolbars from a DLL. The DLL is an MFC resource DLL and is loaded at runtime (using the path) and must export the function CToolBar * GetToolBar();. In the app's mainwindow and can then load the dll and get the toolbar by setting CToolBar * m_pPluginToolBar = pGetToolBar()... This pointer is then used to create the toolbar using a simple CreateEx(this) function (as any onther toolbar) on the pointer. This all works fine and in the OnCreate of the custom toolbar in the dll I set the images from the resources in the dll and the texts for the buttons.
Strange thing is that the images show up right and I can do anything I want with the toolbar, but the text is not below the buttons. Even if a call a separate exported function in the dll after the CreateEx function is called and in there I call SetButtonText the text will not come under the buttons. If I then call SetButtonText() from within the main window (using the m_p... member) the text DOES appear on the button!!
Can anyone explain this? Make this work from within the DLL?
Any help would be appreciated!!
|
|
|
|
|
Dears:
in MainFrame Toolbar i added new button called Rectangle.
that when i clicked it i can draw rectangle on screen by mouse.
now if i want to add drag and drop functionality to the rectangle button in toolbar like (Visual C++ Controls Dialog),.be able to drag to button to view and when release the mouse the shape drawn automatically with specific size.
is it possible to add Drag/Drop functionallity to Toolbar buttons.
Thanks
|
|
|
|
|
raed wrote:
is it possible to add Drag/Drop functionallity to Toolbar buttons.
In short, yes.
You'll need to look up TBN_DRAGOUT notification message.
Cut-and-pasted-and-in-need-of-adapting-for-your-requirements code:
(This does have dependencies on other stuff, which is why its never been an article!)
class CImcToolBar : public CToolBar, public CImcMenuDropTarget
{
public:
CImcToolBar (int nToolResourceID);
protected:
DECLARE_MESSAGE_MAP();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy( );
afx_msg void OnBeginDragging ( NMHDR * pNotifyStruct, LRESULT* result );
virtual BOOL AcceptsMenuDrag (DRAGMENUITEM *dmi);
virtual CPoint ConstrainDragCoords (CPoint pt);
virtual DROPEFFECT MenuDragDropped (CPoint pt, DRAGMENUITEM *dmi);
int m_nToolResourceID;
};
BEGIN_MESSAGE_MAP(CImcToolBar, CToolBar)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_NOTIFY_REFLECT( TBN_DRAGOUT, OnBeginDragging )
END_MESSAGE_MAP()
CImcToolBar::CImcToolBar (int nToolResourceID)
{
m_nToolResourceID = nToolResourceID;
m_deDrag = DROPEFFECT_NONE;
}
int CImcToolBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CToolBar::OnCreate(lpCreateStruct) == -1)
return -1;
RegisterMenuDragDrop (this, IDB_DRAGTOTOOLBAR, RGB(255,0,255));
return 0;
}
void CImcToolBar::OnDestroy ()
{
RevokeDragDrop (m_hWnd);
}
void CImcToolBar::OnBeginDragging ( NMHDR * pNotifyStruct, LRESULT* result )
{
NMTOOLBARA *nm = (NMTOOLBAR *) pNotifyStruct;
CFrameWnd *pFrame = GetDockingFrame ();
ASSERT(pFrame);
if (!pFrame)
return;
DRAGMENUITEM dmi;
dmi.nID = dmi.ItemInfo.wID = nm->iItem;
dmi.nToolbarID = GetDlgCtrlID ();
UINT nFormat = RegisterClipboardFormat (TEXT("ImcMenuDragData"));
ASSERT(nFormat);
if (!nFormat)
return;
TBBUTTONINFO btnInfo;
memset (&btnInfo, 0, sizeof (btnInfo));
btnInfo.cbSize = sizeof (btnInfo);
btnInfo.dwMask = 0;
int nItem = SendMessage (TB_GETBUTTONINFO, nm->iItem, (LPARAM)&btnInfo);
ASSERT(nItem >= 0);
if (nItem < 0)
return;
TBBUTTON btnOld;
if (!SendMessage (TB_GETBUTTON, nItem, (LPARAM)&btnOld))
return;
if (!SendMessage (TB_DELETEBUTTON, nItem))
return;
pFrame->RecalcLayout ();
pFrame->UpdateWindow ();
HANDLE hData = ::GlobalAlloc (GMEM_MOVEABLE | GMEM_SHARE, sizeof (DRAGMENUITEM));
char *buf = (char*) ::GlobalLock (hData);
memcpy (buf, &dmi, sizeof (DRAGMENUITEM));
::GlobalUnlock (hData);
COleDataSource ods;
CImcDropSource ids;
ods.CacheGlobalData (nFormat, hData);
DROPEFFECT de = ods.DoDragDrop (DROPEFFECT_COPY | DROPEFFECT_MOVE, NULL, &ids);
GlobalFree (hData);
if (de == DROPEFFECT_NONE)
SendMessage (TB_INSERTBUTTON, nItem, (LPARAM)&btnOld);
pFrame->RecalcLayout ();
}
BOOL CImcToolBar::AcceptsMenuDrag (DRAGMENUITEM *dmi)
{
return dmi && !dmi->ItemInfo.hSubMenu;
}
CPoint CImcToolBar::ConstrainDragCoords (CPoint pt)
{
CRect rcClient;
GetClientRect (&rcClient);
pt.y = m_rcDragImage.Height () / 2;
CRect rcItem (-1,-1,-1,-1);
for (int nItem = 0; ;nItem++ )
{
if (!SendMessage (TB_GETITEMRECT, nItem, (LPARAM)&rcItem))
break;
if (rcItem.PtInRect (pt))
break;
}
if (pt.x < rcItem.CenterPoint ().x)
pt.x = rcItem.left;
else
pt.x = rcItem.right;
pt.y = rcItem.CenterPoint ().y;
return pt;
}
DROPEFFECT CImcToolBar::MenuDragDropped (CPoint pt, DRAGMENUITEM *dmi)
{
TBBUTTONARRAY btnArray;
int nButtons = dmi->CreateDroppedButtonArray (btnArray, m_nToolResourceID);
if (!btnArray.GetSize ())
return DROPEFFECT_NONE;
int nItem, nItemMax = SendMessage (TB_BUTTONCOUNT);
CRect rcItem (-1,-1,-1,-1);
for (nItem = 0; ;nItem++ )
{
if (!SendMessage (TB_GETITEMRECT, nItem, (LPARAM)&rcItem))
break;
if (rcItem.PtInRect (pt))
break;
}
BOOL bBefore = pt.x < rcItem.CenterPoint ().x;
if (!bBefore && (nItem != nItemMax))
{
bBefore = TRUE;
nItem++;
}
while (btnArray.GetSize ())
{
if (bBefore)
SendMessage (TB_INSERTBUTTON, nItem++, (LPARAM) btnArray.GetData ());
else
SendMessage (TB_ADDBUTTONS, 1, (LPARAM) btnArray.GetData ());
btnArray.RemoveAt (0);
}
CFrameWnd *pFrame = GetDockingFrame ();
if (pFrame)
pFrame->RecalcLayout ();
return (dmi->nToolbarID == GetDlgCtrlID ()) ? DROPEFFECT_MOVE : DROPEFFECT_COPY;
}
|
|
|
|
|
Thanks ,valuable code.
is it possible to Derived a class From CToolBar and then handling Mouse Event on toolbar after getting its ID or something like that, to add this functionality.
Thanks
|
|
|
|
|
Yes, its possible. Its probably not a good idea though. Users expect standard behaviour from things
that look standard. If you start making it behave in a non-standard way, users will think the soft-
ware is broken. Even if its better!
You can also use message reflection to get NM_RCLICK from the toolbar.
Let it do the work for you!
raed wrote:
Thanks ,valuable code.
Just remember you owe me a drink!
Iain.
|
|
|
|
|
English ability is short and I do not express properly.
We will express therefore in a task sequence which I want.
1, My program execution.
2, The mouse anywhere moves windows.
3, Is there the character in the place which the mouse moves?
4, The transmit to that character my program if has the character.
We try to make almost the program to have such skill.
Which does the utility become API function at?
|
|
|
|
|
2. You may need to hook the mouse
(Check SetWindowsHook and SetWindowsHookEx for that)
3. Having a position you can call GetWindowTextLength and or GetWindowText
4. Consider using Memory mapped files and SendMessage
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
The reply thanks.
This the thing which the answer which I want is not but.
I want to get any all character.
I want to get the character in all windows.
Ex: The content of the document.
The caption of the Component.
Actual character wants to get all except the character to become to the image.
|
|
|
|
|
Then i would suggest
EnumWindows
then on each window
EnumChildWindows
Then on each one GetWindowText
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
The reply thinks really thankfully.
We will try once in the method to inform.
Is the julsu makes probably an example file and there?
A num sense of honor is same being the request not to exist.
^^;
thinks
|
|
|
|
|