|
I have created a toolbar with a number of bitmap buttons. Can anybody tell me the best way to create a pointer to any given button? For example if i declare a CBitmap pointer ( e.g. CBitmap *pBM ) how do I assign something like
pBM = &IDB_BITMAP1?
Thanks...
Ozzy
|
|
|
|
|
CBitmap *pBM = new CBitmap;
pBM->LoadBitmap(IDB_BITMAP1); Don't forget to delete pBM when you've finished with it.
Hope this helps,
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Hello,
This is a dumb question.. I usually program GUI type apps not console apps.. My question is how do I display a "Press any key to continue" prompt and make the app wait? I'm sure this is probably super easy
Thanks in advance,
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Getch();
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Hi,
Can anybody help me out with an algo for non recursive Traversal of all the items in a Tree Control in MFC?
You people RULE,
Binayak
Binayak
|
|
|
|
|
Hi,
In my program I'm using this recursive function which takes nodes from tree control and adds to the xml document. The first node is created properly, from the second call
HRCALL(pXMLDom->createElement(bstr,&pe),""); //fails
this line fails and generates error (i have checked in the debugger the values of bstr and pe are highlighted).
If I call createElement number of times from the same call of the function it works, but, recursively it fails.
Please help.
void CMfcTree::BuildXML(HTREEITEM hItem, IXMLDOMDocument * pXMLDom, IXMLDOMElement *pRoot)
{
CString strRoot = m_nTree.GetItemText (hItem);
HRESULT hr;
BSTR bstr = NULL;
BSTR bstr_wsn = SysAllocString(L"\n");
BSTR bstr_wsnt= SysAllocString(L"\n\t");
BSTR bstr_wsntt=SysAllocString(L"\n\t\t");
IXMLDOMElement *pe=NULL;
//AddWhiteSpaceToNode(pXMLDom, bstr_wsnt, pRoot);
// Create a <node1> to hold text content.
bstr = strRoot.AllocSysString();//SysAllocString(L"node1");
HRCALL(pXMLDom->createElement(bstr,&pe),""); //fails
SysFreeString(bstr);
bstr=NULL;
bstr=SysAllocString(L"some character data");
HRCALL(pe->put_text(bstr), "");
SysFreeString(bstr);
bstr=NULL;
AfxMessageBox(strRoot);
if (strRoot.Find("Hierarchy")!= -1)
{
//hier
AppendChildToParent(pe, pRoot);
AfxMessageBox("3a");
}
else if (strRoot.Find("Attribute")!= -1)
{
//attribute
/* HTREEITEM hParent = m_nTree.GetParentItem( hItem ) ;
CString parentText = m_nTree.GetItemText(hParent);
AfxMessageBox("3b");
for (IXMLDOMNodePtr tempNode = ptrDocIP->documentElement->firstChild;tempNode != NULL; tempNode = tempNode ->nextSibling)
{
if (parentText.Compare(tempNode->nodeName) == 0)
tempNode->appendChild ( DOMNodePtr[i]);
}*/
}
else if (strRoot.Find("Root")!= -1)
{
AppendChildToParent(pe, pRoot);
AfxMessageBox("3c");
}
// Append <node1> to <root>.
// AppendChildToParent(pe, pRoot);
pe->Release();
pe=NULL;
for ( hItem = m_nTree.GetChildItem( hItem );hItem!=NULL; hItem= m_nTree.GetNextSiblingItem( hItem ))
{
BuildXML (hItem,pXMLDom,pRoot );
}
clean:
;
}
Binayak Bhattacharyya
|
|
|
|
|
If you enter this into HTML code, and run it:
<object classid="clsid:41f17733-b041-4099-a042-b518bb6a408c"
codebase="http://a1540.g.akamai.net/7/1540/52/20030530/qtinstall.info.apple.com/bonnie/us/win/QuickTimeInstaller.exe" width="0" height="0">
It will start the automatic installation of Quicktime, this is the same code that is on their website. Now, How do I make my program's installation do this? I notice that the exe of theirs (the QuicktimeInstaller.exe) has a digital signature, is that all I need?
Please give me some info on this, thanks.
|
|
|
|
|
Hi,
I am looking for a tool to create Bitmaps.
I don't need an elaborate package.
Do you have suggestion?
Claude
|
|
|
|
|
Visual Studio
Microsoft Paint
|
|
|
|
|
Hi,
I want to show tool tips when the mouse is over normal button controls (ie. *not* a toolbar, just on buttons) in my dialog-based app (using the WinAPI with *no MFC*). I have searched here, CodeGuru, Google and MSDN, but all I come up with are ways of doing this in MFC. Does anybody know of a non-MFC way to do this? The only post I found on this gave this code, but I can't get it to work:
// Create a tool tip class and set its parent to the Parent Window
ToolTipWnd = CreateWindow(TOOLTIPS_CLASS, NULL, WS_POPUP, 0,0,0,0, hWnd, NULL, NULL, 0);
if ( ToolTipWnd != NULL )
// Send this message to Activate ToolTips for the window:
SendMessage(ToolTipWnd, TTM_ACTIVATE, TRUE, 0);
// Pass a FALSE when you wish to deactivate the tool tip.
//To assign a tool tip to a control do the following:
TOOLINFO toolinfo; // Tool Tip Info structure
memset(&toolinfo, 0, sizeof(TOOLINFO));
toolinfo.cbSize = sizeof(TOOLINFO);
toolinfo.hwnd = hWnd;
toolinfo.uFlags = TTF_SUBCLASS | TTF_IDISHWND;
toolinfo.uId = IDC_EXEBROWSE;
toolinfo.hinst = NULL;
toolinfo.lpszText = "Select executable"; // Text you wish displayed
SendMessage ( ToolTipWnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfo );
I placed this in WM_INITDIALOG, with no joy. I have tried sending messages via WM_NOTIFY, as you would with a toolbar, like this:
case WM_NOTIFY:
{
//handle tooltip text:
NMHDR FAR *tem=(NMHDR FAR *)lParam;
switch(tem->code)
{
case TTN_NEEDTEXT:
LPTOOLTIPTEXT Tooltip = LPTOOLTIPTEXT(tem);
switch(wParam)
{
case IDC_EXEBROWSE:
Tooltip->lpszText="Select executable";
//............etc...
But all to no avail.
If anybody could tell me a way of getting tool tips working on my button controls using the standard Windows API with no MFC, I would be really grateful.
Many thanks,
KB
|
|
|
|
|
You need to pass all messages being sent to the dialog to the tooltip too, so it can track the mouse position. Send the tooltip ctrl a TTM_RELAYEVENT message in your message loop.
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
Latest art~!@#2rDFA#@(#*%$Rfa39f3fqwf--=
NO CARRIER
|
|
|
|
|
Hi,
Many thanks for your reply, I have been looking into how to use TTM_RELAYEVENT, but unfortunately I couldn't get it to work. I forgot to say in my first post that I'm a novice programmer, so I'm sorry if I'm being slow. This is my callback function as it stands, trying to use TTM_RELAYEVENT and set up tool tips for buttons:
HWND ToolTipWnd;
BOOL MainDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
TOOLINFO toolinfo; // Tool Tip Info structure
switch(uMsg)
{
case WM_INITDIALOG:
ToolTipWnd = CreateWindow(TOOLTIPS_CLASS, NULL, WS_POPUP, 0,0,0,0, hWnd, NULL, NULL, 0);
if ( ToolTipWnd != NULL )
SendMessage(ToolTipWnd, TTM_ACTIVATE, TRUE, 0); // Send this message to Activate ToolTips for the window
// Pass a FALSE when you wish to deactivate the tool tip.
//To assign a tool tip to a control do the following:
memset(&toolinfo, 0, sizeof(TOOLINFO));
toolinfo.cbSize = sizeof(TOOLINFO);
toolinfo.hwnd = hWnd;
toolinfo.uFlags = TTF_SUBCLASS | TTF_IDISHWND;
toolinfo.uId = IDC_EXEBROWSE;
toolinfo.hinst = NULL;
toolinfo.lpszText = "test this"; // Text you wish displayed
SendMessage ( ToolTipWnd, TTM_ADDTOOL, 0, (LPARAM)&toolinfo );
return TRUE;
//some code I found to use the TTM_RELAYEVENT, though I've obviously got it wrong...
case WM_MOUSEMOVE:
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
{
MSG msg;
HWND hWndTT;
msg.lParam = lParam;
msg.wParam = wParam;
msg.message = uMsg;
msg.hwnd = hWnd;
hWndTT = (HWND)SendMessage(ToolTipWnd, TB_GETTOOLTIPS, 0, 0);
SendMessage(hWndTT, TTM_RELAYEVENT, 0, (LPARAM)(LPMSG)&msg);
//so I also tried this on the off-chance (doesn't work either):
SendDlgItemMessage(hWnd,IDC_EXEBROWSE,TTM_RELAYEVENT,0,0);
break;
}
case WM_COMMAND:
return MainDialog_OnCommand(hWnd, LOWORD(wParam), HIWORD(wParam),(HWND)lParam);
case WM_CLOSE:
EndDialog(hWnd,0);
return TRUE;
}
return FALSE;
}
If you (or anyone) can tell me where I'm going wrong, I'd be really grateful - I'm bound to be doing something very stupid.
Many thanks,
KB
|
|
|
|
|
That's almost right. You don't use TB_GETTOOLTIPS because you're not using a toolbar. You need to save the HWND of the tooltip control when you create it, and send TTM_RELAYEVENT to that window.
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
Latest art~!@#2rDFA#@(#*%$Rfa39f3fqwf--=
NO CARRIER
|
|
|
|
|
Thanks for the help.
By searching for "TOOLTIPS_CLASS" on Google I finally found an MSDN article that covers what I want to do here:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp
Thanks again,
KB
|
|
|
|
|
I am working on establishing a connection with a telnet server that is inside a hardware device I'm trying to communicate with. Is there any extra negotiation that needs to occur so that I can successfully establish a two way communication or can I just simply create a socket and start sending messages back and forth?
I've actually tried the socket approach with Perl but it didn't work too well. I'm new with Perl so that may be the reason. My final application needs to be in C++ anyway so I thought I'd ask around here.
thanks in advance.
--Erick
|
|
|
|
|
lightyear wrote:
Is there any extra negotiation that needs to occur so that I can successfully establish a two way communication or can I just simply create a socket and start sending messages back and forth?
You need to create a socket and connect to the server, and then follow the standard Telnet protocol (see RFC0854 for details). Basically, the server will query your application to see what it supports - you can safely tell the server you don't support anything. After this negotiation, you can pass data back and forth.
Hope this helps,
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
malloc ?
I want to allocate a memory block (such as 150 bytes) with all chars are initialize with "A"
this is my way:
char* p;
p=(char*)malloc(150)
//if( p == NULL )
// errhanlder("Insufficient memory available");
free(p);
// All okay but all chars are disorder, not "A"
but when I reset all chars in my string to "A" .....
ErrMessageBox is shown
char* p;
p=(char*)malloc(150)
//if( p == NULL )
// errhanlder("Insufficient memory available");
_strset('A'); // set all char to "A"
free(p); // Error in this line, if delete this line, it runs okay
Why when I try to free memory block, Error MessageBox show ?
>> when I debug , I get info:
// _msize(p) => return 150 but
// strlen(p) => return 154 ???????
// I try to set p+150 = 0x0(nullchar) but Error still show
// strcpy(p+150,0x0)
help me~
and is there a way to create StrArray[a][b] with a, b are variable
example :
StrArray[1][1] point to a string "hello"
StrArray[1][2] point to a string "bye"
StrArray[2][1] point to a string "good"
StrArray[2][2] point to a string "very long string ...."
........
thanks
|
|
|
|
|
_strset has the form
_strset(p, 'A');
and the string also needs to be NULL terminated...so try
p[149] = '\0';
_strset(p, 'A');
Gary Kirkham
A working Program is one that has only unobserved bugs
I thought I wanted a career, turns out I just wanted paychecks
|
|
|
|
|
strcpy(p+150-1,"\0");
_strset(p,'A');
>> when I debug:
_msize(p)=150
strlen(p)=149
and Error MsgBox isn't shown
thank youuuu
|
|
|
|
|
_skidrow_vn_ wrote:
strcpy(p+150-1,"\0");
Per Check's suggestion on the MFC newsgroup, try:
*(p + 149) = '\0';<br />
_strset(p, 'A');
|
|
|
|
|
Do it like Gary told you, instead of strcpy use p[149] = '\0';
modified 12-Sep-18 21:01pm.
|
|
|
|
|
That won't work since you are hoping that bytes 0-148 are not NULL.
memset (p, 'A', 149);
p [149] = 0;
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
You are correct...I was explaining why _strset was bombing.
Gary Kirkham
A working Program is one that has only unobserved bugs
I thought I wanted a career, turns out I just wanted paychecks
|
|
|
|
|
Here is what I would do :
#define MY_BLOCK_SIZE 150
char *p = calloc( MY_BLOCK_SIZE, sizeof(char) );
if( p )
memset( p, 'A', MY_BLOCK_SIZE-1 );
calloc allocated and zeros the block of memory.
The Ten Commandments For C Programmers
|
|
|
|
|
Hi,
I'm working on a video tracking project wherein I am capturing video frames using a frame grabber and viewing iti on a GUI application developed in VC++. Now, the idea is, whenever there is a breach, we need to send 3 frames from this video to a Pocket PC over a 802.11b network . Also, we need to record a video file(15 frames)and send it to the PDA. Is it good to store the frames on the hard disk and then send them to the Pocket PC or write an encapsulated VC++ class to send raw video frames to the Pocket PC without saving it hard disk? Can anybody suggest me a code for this?
Chikka
|
|
|
|
|