i have a dialog box and a picture control on that dialog box in mfc. I want to create a button on the right of the screen (similar to "Feedback" button seen on various sites). I created a button and positioned it on the right of the screen, but when clicked on any other control of the dialog box, the button hides under the picture control canvas.
I have to show the buttons at the right of the screen. Similar to "Feedback" button we normally see on various sites.
I have one doubt, My computer screen size is larger compared to some others. So I want to ask should I use the GetWindowRect() OR GetClientRect() function to compute the size of the screen, because if I do it according to my screen size and position the buttons at the right of the screen, For a computer with smaller screen size, it will not be properly visible.
From what Richard replied, and re-reading your message, I guess you have a button, and a picture control on your dialog, and they overlap.
What you need is a button which shows its own picture. You can attach an icon to the button from the resource editor, or you can use one of the many picture button controls available here: http://www.codeproject.com/KB/buttons/[^]
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
I have a button and a bitmap. I am using CSkinButton class to set normal & hover state bitmaps on the button. I want to position the button on the right of the screen (similar to "feedback" button we normally see on various websites.) Now my computer screen size is larger, So when I position the buttons on the right side according to my computer screen size, its ok , but if I use this exe on some other computer which has a smaller screen size, button are not visible properly.
I want to place the buttons in the middle-right of the screen.
Just position it somewhere where the controls don't overlap. You can have overlapping controls but it's really not worth the hassle. By the way, you can always get the size and position of your other control and do some math to figure out the proper placement of the button under it (if you're creating the controls at run-time).
Low level of MFC is the Win32 API. Open the context menu by right clicking on a call to CListCtrl::GetItemCount() and choose 'Go to definition'. You will see that it is an inline function that sends the LVM_GETITEMCOUNT message to the list control window. This message is not processed while your GUI thread is blocked.
A general rule is: Never block GUI threads. If you have to wait for events, do this in worker threads.
1) Write a exe program that uses your COM.
2) Launch the exe.
3) Open your COM Project is Visual Studio
4) Attach the already running exe with the Project.
5) Keep the break points and start debugging it.
see am not able to understand the 4th step.
attach in the sense by changing the configuration properties in that debugging and then
command and passing the path of the exe. if this the way then its control not coming to break point or i may be wrong to the exe ....
hi ,thanks ...
one more thing i want to ask how to register the dll .
am getting the error message that DLL has loaded but entry point DllRegisterserver was not found ...
but am wtritten the code for it
HRESULT hr = RegisterServer (AfxGetInstanceHandle(), // handle to dll module
CLSID_CCmpnt, // component CLSID
g_szFriendlyName, // friendly name
g_szVerIndProgID, // version independent prog id
g_szVerDndProgID); // version dependent prog id
its in a function name STDAPI DllRegisterServer(void)
the control not coming in this function what might be cause please reply
ok sorry ..
the code i build in 32 bit its success but when i configure the VS 2010 for 64 bit the error message con not instantiate the
HRESULT IContextMenu::GetCommandString(UINT_PTR,UINT,UINT *,LPSTR,UINT)' : is abstract
see declaration of 'IContextMenu::GetCommandString'
why this conflict
In DLL i have written the code for Context menu in vs2010 using COM
i derived the class CRsEraser : public IContextMenu, public IShellExtInit
this IShellExtInit and IContextMenu is are com class
when use it
CRsEraser *pCmpnt = new CRsEraser;
if (pCmpnt == NULL)
HRESULT hr = pCmpnt->QueryInterface (iid, ppv);
// Release the IUnknown pointer
CRsEraser *pCmpnt = new CRsEraser;this part showing its abstract class .
in 32 bit compile its working fine same when configure to 64 bit its throwing the error what i have mention earlier .
how i configure:
1 Open your Visual C++ Solution
2 Choose Build->Configuration Manager menu
3 Inside the Configuration Manager window, change the ‘Active solution platform’ to x64. If you don’t have any, you would need to create one by selecting the ‘New..’ drop down item. Copy settings from your Win32 platform.
4 Now rebuild your solution.
Error 1 error LNK2019: unresolved external symbol EnterStub referenced in function EnterNaked2
Error 2 error LNK2019: unresolved external symbol LeaveStub referenced in function LeaveNaked2
Error 3 error LNK2019: unresolved external symbol TailcallStub referenced in function TailcallNaked2
How to solve this
Look at the error messages. They are telling you that certain external functions that you reference cannot be found within the project. Find out where these are supposed to be defined and ensure that they are externalised.