|
Dear All
I want to write one DLL. for this purpose, I add one static library to project.
When I compile the program I get following link error.
INK : fatal error LNK1104: cannot open file "nafxcwd.lib"
Error executing link.exe.
But when I add the path of nafxcwd.lib to my lib file paths I get 716 errors.
Do you know how I can remove this problem.
Regards
Monhi
|
|
|
|
|
What version of Visual Studio?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I want to highlight part of the text in a static control. I subclassed an existing dialog which can do the trick to one of it's built in controls. However, changing the functionality of the dialog box requires me to do it myself.
The resource code for the control:
CONTROL "", 1027, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 21, 103, 190, 69
Spying on the control under normal operation does only reveal the messages WM_GETTEXT,WM_SETTEXT and WM_GETTEXTLENGTH. Although the intended highlighting is actually visible in the control, no other messages are received, which is very confusing to me.
|
|
|
|
|
I think if you use of CEdit control is better than to CStatic but if you want on the CStatic you can derived CStatic.
|
|
|
|
|
Thank you.
I cannot use CEdit, because I use a 3rd party dialog, and the control is already there.
The only thing I can think of now is creating another control right above it, but only as a last resort.
|
|
|
|
|
So I think easy way is use of a CStatic derived then you can use of WM_ERASEBKGND or WM_PAINT for show values of control then if you need to highlight a section of text use of SetBkMode (in fact you work with four function SetTextColor/SetBkColor/DrawText/SetBkMode).;)
|
|
|
|
|
You can create derive class of CStatic and do following:
1. Add in the message map
<br />
ON_WM_CTLCOLOR_REFLECT()<br />
2. Change Text color in handling function
<br />
HBRUSH CMyStatic::CtlColor(CDC *pDC, UINT uiCtlColor)<br />
{<br />
pDC->SetTextColor();<br />
pDC->SetBkMode(TRANSPARENT);<br />
<br />
return (HBRUSH) GetStockObject(NULL_BRUSH);<br />
}<br />
Good luck.
Henky Purnawan
henky@online-resource.org
|
|
|
|
|
Hi
I am trying to split the MDI client window(not child).Like this GUI:
http://www.smidgeonsoft.com/images/PEBrowsePro945x689.jpg
In the left side there is a treeview and the right side there are MDI windows.
I can use splittter in SDI application wtih this code and it can split:
<br />
class CMainFrame : public CFrameWnd<br />
{<br />
...<br />
protected:<br />
CSplitterWnd m_wndSplitter;<br />
...<br />
};<br />
<br />
<br />
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, <br />
CCreateContext* pContext) <br />
{<br />
CSize minWindow(10, 10);<br />
<br />
int nRows = 2, nColumns = 1;<br />
<br />
return m_wndSplitter.Create(this, nRows, nColumns,<br />
minWindow, pContext);<br />
}<br />
But this doent work with MDI application.
I can't divide MDI client window. I tried this:
<br />
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)<br />
{<br />
CSize minWindow(10, 10);<br />
<br />
int nRows = 2, nColumns = 1;<br />
<br />
m_wndSplitter.Create(this, nRows, nColumns,<br />
minWindow, pContext);<br />
<br />
return CMDIFrameWnd::OnCreateClient(lpcs, pContext);<br />
}<br />
But it gives run time error about ASSERT(pContext != NULL);
How can i divide MDI client window with splitter so i can insert left side a treeview(static/locked) and in the left side i can show view windows..
I couldnt find the solution.
I am looking for your answers.
Thanks...
|
|
|
|
|
I found this(it is what i looked but it is wtl):
http://www.codeproject.com/wtl/mdisplit.asp
But i don't understand the code.
Is there a way to this with MFC?
|
|
|
|
|
If you send me an email, I'll send you (and anyone else interested) a VS2005 project that does this.
I was going to submit it as an article but it's simple and I can't think of anything to write about it.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi
Thank you very much.
I am looking for your e-mail.
-- modified at 2:21 Monday 6th August, 2007
|
|
|
|
|
Mark Salsbery wrote: an email, I'll send you (and anyone else interested) a VS2005 project
And for VS2003 email isnt work?;)
|
|
|
|
|
|
|
hi
i exactly follow what in KernelIoControl function's description in MSDN and elsewhere. i know that i've done no mistake. but it gives me the same Preset ID's and Platform ID's for more than one device. please don't tell me the same things in the documentations. just tell me what may be the problem. maybe a fault of manufacturer?
thx
|
|
|
|
|
In the resource edit box,what is the unit of the size which is shown at the bottom?
|
|
|
|
|
ifqf wrote: control the size of Dialog
Do you need to WM_SIZE ?
ifqf wrote: edit box
Do you need to MoveWindow ?
|
|
|
|
|
i'm not sure what your after?
size control is done via overriding WM_SIZE
which is called when the dialog is created and when its size is changes (takes Sizing events, minimise maximise etc).
in resource editor (in VS 05) you can find the size of the dialog or control you have selected in the bottom right conor by default which is in pixels.
does that cover the your question?
-- modified at 12:05 Sunday 5th August, 2007
|
|
|
|
|
ifqf wrote: In the resource edit box,what is the unit of the size which is shown at the bottom?
try handlling WM_GETMINMAXINFO
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Hello everyone,
The return value of CoCreateInstance is -2146232576, which is un-documented in MSDN.
http://msdn2.microsoft.com/en-us/library/ms686615.aspx
What does it mean? What is wrong with my code?
<br />
HRESULT hr = CoCreateInstance(CLSID_MyDriver,<br />
NULL,<br />
CLSCTX_INPROC_SERVER,<br />
IID_IMyDriver,<br />
reinterpret_cast<void**>(&driver_interface));<br />
<br />
if (FAILED(hr))<br />
{<br />
if (hr == REGDB_E_CLASSNOTREG)<br />
{<br />
printf("Couldn't create the instance!... 0x%x\n", hr);<br />
}<br />
else if (hr == CLASS_E_NOAGGREGATION)<br />
{<br />
printf("Couldn't create the instance!... 0x%x\n", hr);<br />
}<br />
else if (hr == E_NOINTERFACE)<br />
{<br />
printf("Couldn't create the instance!... 0x%x\n", hr);<br />
}<br />
else if (hr == S_OK)<br />
{<br />
printf("Couldn't create the instance!... 0x%x\n", hr);<br />
}<br />
else<br />
{<br />
printf("Couldn't create the instance!... 0x%x\n", hr);<br />
}<br />
}<br />
thanks in advance,
George
|
|
|
|
|
Interesting error
Maybe some clues here[^]
That's the most I could find.
MArk
*edit* fixed link
Last modified: 12mins after originally posted --
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks Mark,
I have tried to register into GAC, but the error message is still the same. Any ideas?
regards,
George
|
|
|
|
|
/*
Try putting your CLSID and GUID in there
and see if this gets you going
*/
IMyDriver driver_interface;
// Class ID (GUID)
IID IID_IMyDriver;
::IIDFromString(L"{12345678-1234-1234-1234-123456789012}",
&IID_IDriver_Interface);
// CLSID
CLSID CLSID_IMydriver;
::CLSIDFromString(L"{98765432-9876-9876-9876-987654321098}",
&CLSID_MyDriver);
// When using CoCreateInstance
hr=CoCreateInstance(CLSID_IMydriver,NULL,CLSCTX_INPROC_SERVER,
IID_IMyDriver,(void**)&driver_interface);
if (SUCCEEDED(hr)) {
// Do something with driver_interface
}
|
|
|
|
|
Thanks bob16972,
I have tried your new method, but the error is the same. I suspect the DLL (which implements MyDriver class) is not loaded correctly. Do you think so? What is the check list?
regards,
George
|
|
|
|
|
Here are some ideas/questions based on past experiences with COM...
When you register/unregister the dll using "regsvr32.exe" from a "cmd" window, what message do you get?
Have you verified that the item shows up in "OLE View"? If you are using Visual C++ 6.0, "OLE View" is in the "Microsoft Visual C++ 6.0 Tools" in the program list.
You can also search HKCR (HKEY_CLASSES_ROOT) to verify the ProgID, CLSID, and classes are all there.
How did you create your MyDriver class in Visual C++?
Did you verify the CLSID and the class GUID are correct in your code? Always copy and paste them from "OLE View" to avoid any miskeying when not using the ProgID.
|
|
|
|