|
delete the .cpp and .h, remove the files from your workspace and then delete your project's .clw file.
-c
------------------------------
Smaller Animals Software, Inc.
http://www.smalleranimals.com
|
|
|
|
|
Hey guys
can anyone tell me why i am getting these compiler errors and how to fix them:-
Linking...
Creating library Debug/Software to Sign and Verify Files.lib and object Debug/Software to Sign and Verify Files.exp
Crypto.obj : error LNK2001: unresolved external symbol __imp__CertOpenSystemStoreA@8
Crypto.obj : error LNK2001: unresolved external symbol __imp__CertFreeCertificateContext@4
Crypto.obj : error LNK2001: unresolved external symbol __imp__CertGetCertificateContextProperty@16
Crypto.obj : error LNK2001: unresolved external symbol __imp__CertEnumCertificatesInStore@8
Debug/Software to Sign and Verify Files.dll : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.
Cheeers
Peter
|
|
|
|
|
Hi,
did you specify the crypto API import library in your project settings?
If not - go to project -> settings -> link -> input and add "Crypt32.lib" to list of linked import libs.
Whenever you use specific win32 api functions, you should check the win32 api docs "requirements" section of the functions.
Regards,
A.Focht.
|
|
|
|
|
You are missing a .lib file. I think that you need to link with the crypto32.lib
Cheers
Carlos Antollini.
|
|
|
|
|
Hi,
I've been writing DLL that attaches to any process by using global hook, and I need to handle attach/detach operation. It is working fine except when I abort debugging program with msdev. I'm using Japanese version of msdev so I can't tell you the exact name of menu title to ABORT debugging, but we sometimes do that for various reasons. In that case, DllMain was not called with DLL_PROCESS_DETACH. And it seems DLL is left loaded. (The reason I think so is: I can't delete that DLL file even after I ended my application which unloads all DLLs from memory.) I'm doing this on Win2K. And not that program being debugged with msdev is not a program that loads the DLL and let attach to processes.
Is that a problem by design? If someone knows any documents describing this, please let me know.
Thanks.
Kurotora
|
|
|
|
|
There may be a hint in the TerminateProcess API docs:
TerminateProcess causes all threads within a process to terminate, and causes a process to exit, but DLLs attached to the process are not notified that the process is terminating.
So, if 'End debugging' command is implemented with a call to TerminateProcess, your DLL won't be nofified.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
Tomasz,
Thank you giving me hint. Can you/anyone let me clear that DLLs are unloaded but not just notified to it? Basically it should I hope though I had a problem with never-unloading-dll.
Thanks.
I love Code Project, do you?
Kurotora
|
|
|
|
|
Stupid Question but....
Did you use, the FreeLibrary() function in your Aplication?
Regards
Carlos Antollini.
|
|
|
|
|
Carlos,
Yes. My application unloads my DLLs with FreeLibrary() and do this up to 100 times until GetModuleFileName() returns 0 which means my DLLs are unloaded from memory. Normaly it's working fine.
Can anyone know how to unload DLL perfectly without rebooting system?
Thanks.
I love Code Project, do you?
Kurotora
|
|
|
|
|
Let's say I have an application that has an icon added in IE's toolbar. When I click the icon, I'd like it to open my app along with the current URL so my app can use it. Is there a way to do this?
Thanks!
|
|
|
|
|
My dialog bar has various controls, that don't take up the whole screen. When the main frame resizes, I want these controls to reposition themselves so they are relatively centered. For example, if a control's left side, is 150 left of the center of the main frame, I want it to always be 150 left of the center of the main frame, no matter what size the main frame is. I can't seem to come up with a simple way to do this, whereas I do not want to have to create variables for each control.
|
|
|
|
|
I have built a Wizard Dialog and on the front page have 3 drop down boxes and one edit box at the top.
I am trying to force the edit box to take the focus on initdialog but I am having no luck.
I have an edit Control variable and I am setting it to focus and I am setting the return value of OnInitDialog to false, just like you do with normal dialogs, but the second item which is a dropdown list continues to have the foucs.
Any idea why this problem is occuring.
thanks
|
|
|
|
|
Hello, the codegurus around the world.;)
Generally speaking, your approaches should work only when the dialog is created.
In a wizard dialog, if we click the back button to go back to the first page,
OnInitDialog is never called since the dialog is already created.
So, try to chanage the tab order to make Edit box the number one by the resource editor.
Try to put the code - m_MyEdit.SetFocus() before return FALSE;
Try to put the same code in CMyPropertyPage::OnSetActive() for clicking the back
button.
Have a nice day!
-Masaaki Onishi-
|
|
|
|
|
Hi, I'm wondering if anyone knows how I can get rid of the initial document window that displays when an MFC MDI program first starts up? I am writing a program that would acquire images from a scanner. It would not make sense to have an empty white canvas before acquring any scans.
I believe there's a function OnDocumentClose function I can use, but I have no idea where I can place such a call. Also, how would I create a new canvas? Is there a "OnDocumentOpen" of sort?
Thanks!
Jerry
|
|
|
|
|
You can suppress this 'new file' action with
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
in your apps InitInstance.
Doesn't work for SDI though.
|
|
|
|
|
To answer your second question the way I've always done it is as follows:
1) Find the document template (each template is a different doc/view class - you probably only have one in which case just ignore the last two lines)...
POSITION DocPosition;
DocPosition = GetFirstDocTemplatePosition();
CDocTemplate* first_template = GetNextDocTemplate(DocPosition);
CDocTemplate* second_template = GetNextDocTemplate(DocPosition);
CDocTemplate* third_template = GetNextDocTemplate(DocPosition);
2) Create a new file
CSomethingDoc* newdoc = STATIC_DOWNCAST(CSomethingDoc, first_template->CreateNewDocument());
3) Do any work in the Document class you need to and then show the new file
CFrameWnd* newframe = first_template->CreateNewFrame(newdoc, NULL);
newframe->InitialUpdateFrame(newdoc, TRUE);
Hope that helps.
-Dave
|
|
|
|
|
Hi Dave, it's been a while, but thanks for your posted reply on how to create a new document in CWinApp. I didn't get a chance to implement it until now.
I have a follow up question I hope you can help me with. The code you described to me is for CWinApp class. How would I be able to do the same thing inside MainFrm class? Obiously GetFirstDocTemplatePosition() is only exsistant in CWinApp, and I do not know of a way to acquire a pointer to CWinApp from MainFrm. Would you know a way to do that? I appreciate it. Thank you.
Jerry
|
|
|
|
|
Use AfxGetApp(); This can be called from your main frame class.
HTH
Jignesh
|
|
|
|
|
Worked like a charm!!
Thank you thank you.
|
|
|
|
|
No problem...
Try looking into AfxGetApp()
-Dave
|
|
|
|
|
try replacing your calls with;
SaveModified();
AfxGetApp()->OpenDocumentFile ( _T ( "C:\\your_document.ext" ) );
BTW: OnOpenDocument() should not be called directly, it is used by the framework in response to the File Open command... the framework does allot of initialization before and after it calls this.
Ben Burnett
---------
On the topic of code with no error handling -- It's not poor coding, it's "optimistic"
|
|
|
|
|
I have a function which returns the Window-handle of the foreground-window like this:
CWnd* pWnd = GetForegroundWindow();
Now I want to check whether there's a CEdit-Control within that window.
How can I achieve this?
thanks in advance
|
|
|
|
|
You need to use EnumChildWindows and then GetClassName to check for the EDIT class of window.
|
|
|
|
|
Something seems to be wrong with this code
BOOL CALLBACK FindEdit(HWND hwnd, LPARAM lParam)
{
BOOL ret = TRUE;
HWND child = ::GetWindow(hwnd,GW_CHILD);
if(child != NULL)
{
char classname[128];
GetClassName(child,classname,sizeof(classname));
MessageBox(NULL,classname,"Class",MB_OK);
}
return ret;
}
HWND child always is NULL
Or do I need to do in a different way?
|
|
|
|
|
You need the GetWindow line. The hwnd parameter passed to the callback function is the child window handle. Just call GetClassName on hwnd.
|
|
|
|