|
why don't you import the idl-file where the referenced interface is declared
as you do with normal C++ header?
e.g.
import "YourInterface.idl";
...
...
the you can use it...
interface IOtherInterface : IYourInterface
{
...
};
|
|
|
|
|
I have already done it the way you are saying. I tried to say the same thing in my question. I have imported the "MyInterface.idl" in "OtherInterface.idl". But when I import MyInterface.idl, MIDL compiler goes and compiles "MyInterface.idl" first. Now problem starts here, "MyInterface.idl" also uses "OtherInterface.idl".
Let me write the scenario in the form of code, this might be better understandable.
========================
Start of MyInterface.idl
========================
import "oaidl.idl";
import "OtherInterface.idl";
[
uuid(072C0C51-426B-1ED2-B2DF-0060085FAE21),
dual,
helpstring ("IMyInterface Interface"),
pointer_default (unique)
]
interface IMyInterface: IDispatch
{
[id(0), propget] HRESULT EventID
([out, retval] IOtherInterface** pvKey);
}
======================
End of MyInterface.idl
======================
===========================
Start of OtherInterface.idl
===========================
import "oaidl.idl";
import "MyInterface.idl";
[
uuid(073D0C21-466A-11D2-A2DF-0050485CFE7B),
dual,
helpstring ("IOtherInterface Interface"),
pointer_default (unique)
]
interface IOtherInterface: IDispatch
{
[id(0), propget] HRESULT EventID
([out, retval] IMyInterface** pipSeg);
}
=========================
End of OtherInterface.idl
=========================
Now, you people may know my problem, that both files are needing the other file. This has become a dead-lock. To compile any of the both files I will need to compile the imported file. I hope you understood. Now, can anyone help me out? :'(
Ahsan
|
|
|
|
|
Add forward declarations:
interface IMyInterface; <- to OtherInterface.idl
interface IOtherInterface <- to MyInterface.idl
|
|
|
|
|
I think, I have understood the original problem now. I gave the forward declarations in one of the .idl files. On compiling it gave the error:
========================================================
error MIDL2011 : unresolved type declaration : IOtherInterface [ Parameter 'pipSegment' of Procedure 'get_CSegment' ( Interface 'IMyInterface' ) ]
========================================================
When I double-clicked over the error, to see where exactly it occured. VC++ gave a message box with the text as below:
=======================================================
"C:\MyWorspace\Infrastructure\MyUtils\IMyInterface.idl"
Cannot open file.
File not found.
=======================================================
While this interface file is actually at:
C:\MyWorspace\Business Tier\Objects\IMyInterface.idl
Now, VC is not picking the path correctly. Even I have opened the file in the editor, which is even showing correct directory on clicking "Save As" from File menu).
Now, PLEASE tell me, where do I may correct this path, so that file file may work correctly.
Regards,
Ahsan
Ahsan
|
|
|
|
|
Hi folks,
I have a scenario where in i need to hide the popup that has been already invoked on a list control after a period of sleep. Can anyone guide me as on how to achieve the same?
ciao
Aravindan Premkumar
|
|
|
|
|
You might try sending WM_CANCELMODE to the window that "owns" the popup menu.
Iain.
|
|
|
|
|
Hi all
can someone tell me how a funciton call itself and give me a example?
Thanks
|
|
|
|
|
Are you talking about recursive functions?
Not quite sure what you're on about but here goes:
<br />
void foo(int n)<br />
{<br />
if( n < 0 )<br />
return;<br />
<br />
std::cout<<n<<std::endl;
foo(n-1);
}
|
|
|
|
|
I have a bunch of projects, which I've linked together in a superficial solution. What I'd like to do when all projects have been built, is to perform some actions (mostly copying files). I do not want to pollute the individual projects with these actions, only the top level solution. Got a tip to spare?
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
Add a post build step to the compilation that runs a batch file with all the copy commands in it.
I do this for my sub projects, but no reason why not for just the main project.
Roger Allen
Sonork 100.10016
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003
|
|
|
|
|
Roger Allen wrote:
I do this for my sub projects
The thing is though the build steps are parts of the individual projects, not the solution. I can't find anything remotely close to build steps for the solutions. I think I may have to reiterate and put the actions in the post build step after all.
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
Hi.
I've subclassed the CListCtrl.
You can edit a subitem, and type some text into it. But if you resize the column (making it larger for example) then the editbox need to be redrawn to fill the whole (new) column space.
Mine stays the same, how can i achieve this?
Greetings
Jens
|
|
|
|
|
derive a Class from CEdit and overwite in ON_WM_WINDOWPOSCHANGING...
add a Variable for the Size of the Subitem e.g RECT m_Position;
In the Beginlabeledit-Handler of your ListCtrl SubClass the ListCtrl's EditCtrl with your derived class like this:
OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
// Pseudo Code
CREct Rect;
GetSubItemRect(nItem, nSubItem, LVIR_LABEL, Rect);
HWND hWnd=(HWND)SendMessage(LVM_GETEDITCONTROL);
m_DerivedEdit.SubclassWindow(hWnd);
m_DerivedEdit.SetPosition(Rect);
}
with SetPosition you should set the RECT m_Position of your derived Edit class...
in the ON_WM_WINDOWPOSCHANGING - Handler you can adjust the Position of
the ListCtrl's EditCtrl as follows:
CDerivedEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
lpwndpos->x = m_Position.left;
lpwndpos->y = m_Position.top;
lpwndpos->cx = m_Position.Width();
lpwndpos->cy = m_Position.Height();
}
Hope this helps...
|
|
|
|
|
It should help but
void CMyEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
RECT temp= GetPosition();
lpwndpos->x = temp.left;
lpwndpos->y = temp.top;
lpwndpos->cx = temp.Width();
lpwndpos->cy = temp.Right();
SetPosition(temp);
}
m_position is private, that's why i need a temp one.
I get an error on the temp.Width() and temp.Right():
error C2039: 'Width' : is not a member of 'tagRECT'
error C2039: 'Right' : is not a member of 'tagRECT'
which is kinda normal becz RECT is a structure, not a class.
How can i fix it?
(when to use RECT, and when to use CRect?)
|
|
|
|
|
JensB wrote:
void CMyEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
CRect temp= GetPosition();// use CRect instead of RECT and it will work
lpwndpos->x = temp.left;
lpwndpos->y = temp.top;
lpwndpos->cx = temp.Width();
lpwndpos->cy = temp.Right();
SetPosition(temp);
}
|
|
|
|
|
ok, i've changed the data member to CRect instead of RECT structure but it still doesn't work.
I'll paste what i have done:
in the derived class of CListCtrl
CEdit* CMyListCtrl::EditSubLabel( int nItem, int nCol )
{
...
CRect rect;
//set rect
..
CEdit *pEdit = new CInPlaceEdit(nItem, nCol, GetItemText(nItem, nCol), GetColumnType(nCol), rect);
pEdit->Create......
void CInPlaceEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
//CEdit::OnWindowPosChanging(lpwndpos);
//Positie veranderde!
CRect temp;
temp = GetPosition();
lpwndpos->x = temp.left;
lpwndpos->y = temp.top;
lpwndpos->cx = temp.Width();
lpwndpos->cy = temp.Height();
SetPosition(temp); //positie zetten
//CEdit::OnWindowPosChanging(lpwndpos);
}
i don't see any difference, if i move the column more larger (editbox isn't made langer). what am i still doing wrong?
|
|
|
|
|
change your code To
CRect rect;
//set rect
GetSubItemRect(nItem, nCol, LVIR_LABEL, rect);
CEdit *pEdit = new CInPlaceEdit(nItem, nCol, GetItemText(nItem, nCol), GetColumnType(nCol), rect);
|
|
|
|
|
hello.....
hey do u know how to disable the user control from resizing the columns of the list control......
plz reply if u have any idea abt it yaar
thanks in advance
Adi
|
|
|
|
|
yes, check:
http://www.codeguru.com/listview/no_col_resize.shtml
http://www.codeguru.com/listview/no_col_resize2.shtml
here you go
|
|
|
|
|
CRect rect;
this.GetSubItemRect(nItem, nCol, LVIR_LABEL, rect);
error
->
GetSubItemRect' : is not a member of 'CMyListCtrl'
(class CMyListCtrl : public CListCtrl) although it is a member .. pff i don't understand it anymore
|
|
|
|
|
Hi All!
I'm trying to implement RSA Cipher, for this reason i need to work with really big numbers (around 100 digits long). Does anybody know how to generate such big prime numbers? or generate just random numbers of this size?
Thanks a lot for help
Pawel
|
|
|
|
|
|
Thanks for answering!
I try to get that book, seems to look nice.
I found article about such generation of primes, quite fast, that gives samthing like 99.9999..99% probability that result is really prime.
It is: http://www.codeproject.com/csharp/biginteger.asp?target=big|numbers
there is library that uses big numbers and so on.
Unfortunately i can not assume even such thing that 1 for 10^30 numbers is wrong.
I found that there is such algorithm named AKS, which gives 100% probability that number is really prime. Info about it can be found at:
http://www.tcs.hut.fi/~helger/crypto/link/primality_tests/aks.html
but this algorithm is really incredibble slow. I try make in in assembler, it may speed it up...
thank you!
Pawel
|
|
|
|
|
Pandor wrote:
Unfortunately i can not assume even such thing that 1 for 10^30 numbers is wrong.
Why not? That's what they all do (RSA & co) if I've understood it correctly. Unless you have a scientific requirement, the 100% probability doesn't do much in cryptography over the 99.99999.......9% probability. It's still extremely hard to crack stuff like RSA.
Pandor wrote:
but this algorithm is really incredibble slow. I try make in in assembler, it may speed it up...
I hate to be such a party pooper, but I don't think you'll be able to speed it up much. The slowness is in the complexity of the algorithm, not the implementations.
--
Tune your mind, reach inside, peel away
Touch, Taste, Feel, Saturation
|
|
|
|
|
How Microsoft Word Works.?
1]
Is it creates seprate instance when new file is opned?
i.e. If we open two files ,two diffierent instances of Word
are running?
But If we PressCtrl+Alt+Delete it shows only one application running????????
2]
Is it creates another document when new file is opned?
(Document from MFC DOC/View)
i.e. If we open two files ,two diffierent Documents are open but only one instances of Word
But for another view how it shows two diffierent tabs?
Closing one not affects on other .How is this?
3]
Is it uses MultiThreading?
Each thread for each document are running?
Is it possible for each thread having its on window etc?????
Waiting for answers !!!!!!!!!!!1
Hemant
|
|
|
|