Wrox Programmer Forums
Go Back   Wrox Programmer Forums > C# and C > C++ and Visual C++ > Visual C++
|
Visual C++ Questions specific to Microsoft's Visual C++. For questions not specific to this Microsoft version, use the C++ Programming forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the Visual C++ section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old July 8th, 2006, 05:20 PM
Friend of Wrox
 
Join Date: Mar 2005
Posts: 264
Thanks: 0
Thanked 0 Times in 0 Posts
Default Help calling and using a functions in visual c++ 6

Hi all i am very new to visual c++ . I am using visual studio 6 . So i might ask some simple questions but since i am new i consider you guys bare with me.

I have the following 2 block of codes and i want to be able to call the first one like this :

int pos=-1;
pos=GetPosByNick("name");


I am making a form with a textbox and a button. On the click of the button i want to take the input and place it instead of name in above function call and get the pos value and then use that in my second block of code instead of zero :

(WPARAM)0


so i be happy if an expert tell me step by step what do i need to do to be able to use these blocks of codes. Where to place them , what do i need to declare. Since it is my first attempt to do a program in visual c++ i be happy if an expert give me step by step instrcutions. Thanks



Code:
int GetPosByNick(CString szNick) 
{ 

HWND hList=NULL;  // List View identifier 

HWND parent,child; 
 parent=NULL; 
 child=NULL; 
 parent = ::FindWindow("My Window Class",NULL); 
CString c; 

child =::FindWindowEx(parent,0,"WTL_SplitterWindow",NULL); 
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL); 
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL); 
child =::FindWindowEx(child,0,"ATL:0053C8D0",NULL); 
hList=::FindWindowEx(child,0,"SysListView32",NULL); 


HWND hwnd=parent; 
HWND listview=hList; 

   int count=(int)::SendMessage(listview, LVM_GETITEMCOUNT, 0, 0); 
   int i; 

   LVITEM lvi, *_lvi; 
   char item[512]; 
   char *_item; 
   unsigned long pid; 
   HANDLE process; 

   GetWindowThreadProcessId(listview, &pid); 
   process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid); 

   _lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE); 

   _item=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT, PAGE_READWRITE); 


   lvi.cchTextMax=512; 


   for(i=0; i<count; i++) { 
      lvi.iSubItem=2; 
      lvi.pszText=_item; 
      WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL); 
      ::SendMessage(listview, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi); 


      ReadProcessMemory(process, _item, item, 512, NULL); 
      //ReadProcessMemory(process, _subitem, subitem, 512, NULL); 
       if(item==szNick) 
      { 
         VirtualFreeEx(process, _lvi, 0, MEM_RELEASE); 
          ::CloseHandle(process); 
         return i; 
      } 

   } 
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE); 
 ::CloseHandle(process); 
return -1; 

}

Second block of code:


Code:
HWND listview=NULL;  // List View identifier 
 HWND parent,child; 
 parent=NULL; 
 child=NULL; 
 parent = ::FindWindow("My Window Class",NULL); 

 child =::FindWindowEx(parent,0,"WTL_SplitterWindow",NULL); 
 child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL); 
 child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL); 
 child =::FindWindowEx(child,0,"ATL:0053C8D0",NULL); 
 listview=::FindWindowEx(child,0,"SysListView32",NULL); 

 LVITEM lvi, *_lvi; 
 unsigned long pid; 
 HANDLE process; 

 GetWindowThreadProcessId(listview, &pid); 
 process=OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, pid); 
   if(process) 
   { 

   _lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); 
   lvi.mask = LVIF_STATE; 
   lvi.state =15; 
   lvi.stateMask = LVIS_SELECTED | LVIS_FOCUSED; 

   WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL); 
   ::SendMessage(listview, LVM_SETITEMSTATE, (WPARAM)0, (LPARAM)_lvi); 
   VirtualFreeEx(process, _lvi, 0, MEM_RELEASE); 
   } 
 ::CloseHandle(process);





Similar Threads
Thread Thread Starter Forum Replies Last Post
calling functions form another window geogomez Javascript How-To 2 November 29th, 2005 07:20 AM
Calling functions ejmichaud Access VBA 2 July 16th, 2004 10:03 AM
calling functions with conditions Toka1 Javascript How-To 2 February 5th, 2004 09:29 AM
Calling functions in Windows? jacob C# 0 November 5th, 2003 03:57 PM
Calling subs & Functions Zooker Beginning VB 6 4 August 20th, 2003 07:09 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.