|
I am trying to resize my application based on the size of a loaded file. First I tried to use SetWindowPos() this worked, but did not resize the frame. So I have attempted to use MoveWindow() to do this, and it works.. but not as expected. For example if somebody could review this code fragment and tell me whats up. The file I am loading is a video, and lets say the size is 320 x 480 the frame resizes to a really tiny window.
CRect winRect;
CRect tmpRect;
GetClientRect(tmpRect);
if(!m_media.GetVidSize(winRect))
DoError("Unable to receive size");
GetParentFrame()->MoveWindow(tmpRect.Width(),tmpRect.Height(),winRect.Width(), winRect.Height());
CString str;
str.Format("Video Width: %d\nVideo Height: %d\n",
winRect.Width(), winRect.Height());
TRACE(str);
I can verify that GetVidSize() is returning correct results based upon the TRACE statment wich outputs
320 and 480.
Thank you
|
|
|
|
|
You have made mistake in the following function call :
GetParentFrame()->MoveWindow(tmpRect.Width(),tmpRect.Height(),winRect.Width(), winRect.Height());
First parameter should be X coordinate and second one should be Y coordinate of the screen. So in your case it should be tempRect.TopLeft().x & tempRect.TopLeft().y respectively
Regards
C.R.Naik
|
|
|
|
|
Thank you for the correction Chintan, I realized that something was not right with the first two values. However these values reflect were the x,y orgin of the window is if I'm correct in saying that. In my actual code I was using 0,0 and just putting the frame in the upper left corner.
Anyways thank you again. You have prolly saved me a little research on how to get the correct coordinates
|
|
|
|
|
What Kind of application you are developing ? SDI,MDI ? let mw know..
Vikram
|
|
|
|
|
Developing an SDI Application.
|
|
|
|
|
The reply from naik is correct. Just check it out...
|
|
|
|
|
Not exactly what I am looking for. The frame still resizes to a very tiny view. I have tried setting the SetMapMode() to different values.. but that has not worked out very well either.
|
|
|
|
|
If you are tring in CMainFrame then just use this->MoveWindow(...);
else if it is in View use AfxGetMainWnd()->MoveWindow(..);
|
|
|
|
|
That is the code that I am using
MoveWindow(...)
::MoveWindow(...)
GetParentFrame()->MoveWindow(...)
AfxGetMainWind()->MoveWindow(...)
all produce the same results. The window is resized, but not of the correct size. the CRect structure will have correct numbers for the Width and Height.. however I don't understand how those numbers are being mapped. It seems like 320 is being mapped to 320 mini micro half pixels.
|
|
|
|
|
I think this must be issue between player output coorinates and the co-odinates you are setttig..i think you need to set the View's size ..Is it so?and not whole Window..
|
|
|
|
|
Hmmmm.. Using DirectX9 VMR to display a video.. If I use MoveWindow(...) on the view and don't call it through the parent frame .. it sets to the correct size. However the view is never "updated" wether I call Invalidate() or not. so It appears that a Video has plopped on top of the CView window, and will overwrite the status bar, and what not.
If I call the funtion through the Frame Window.. It resizes the whole window.. but makes the window tiny.
|
|
|
|
|
see actually the size of the FrameWindow you are considering while resizing.and actually the View needs to be of that size.so just take the framewindows rectangle and view rectangle and fine out what exactly the size you want. that meant your main windows is slightly bigger. and view will be of exact size.In short you need to manipulate the width and height of main window ...by finding the exact difference between upper left and top coordinates of view and Mainframe.
|
|
|
|
|
hmm.. that is understandable.. makes scence I guess.. For now I have moved on .. automaticly resizing the default video widht and height isn't a need to have feature I guess, since the user can simply drag the window to whatever size he/she wants.
|
|
|
|
|
In order to register a COM dll we use regsvr32. But suppose the COM component is not in the form of dll but in the form of exe then how to register this exe on the client machine. I tried regsvr32 on exe but it immediately give error that it can only register OCX or dll and not exe
|
|
|
|
|
|
As far as I know this comes down to the implementation of the server exe. But, the ones generated using the AppWizard allow a switch to be passed to the exe to register it, such as
MyExe.exe /regsvr
Can't remember what the switch is that is used by the appwizard - you could try knocking up a sample app and looking in the code (I think it's in the main cpp file) where the switches are handled.
Hope this helps
|
|
|
|
|
shame on me...
In MDI project how open new document ?
i have a TreccCtrl and when i click on item and all window are closed i want to open new window ! like click on File->New.
|
|
|
|
|
CWinApp::OpenDocumentFile() should do the trick!
|
|
|
|
|
Martyn Pearson wrote:
CWinApp::OpenDocumentFile()
is not foe open an existing document ?
|
|
|
|
|
Try this:
AfxGetApp()->OnCmdMsg(ID_FILE_NEW, 0, NULL, NULL);
Gary Kirkham
A working Program is one that has only unobserved bugs
I thought I wanted a career, turns out I just wanted paychecks
|
|
|
|
|
Yes thank you very much, that works perfectly.
|
|
|
|
|
Proper way is CDocTemplate::OpenDocumentFile(0).
You have to find appropriate DocTemplate , use GetFirstDocTemplatePosition/GetNextDocTemplate for it
|
|
|
|
|
thx you for your help but the Gary's solution work great and that is enough for me.
thx again !
|
|
|
|
|
Hello, I am using MSXML to get HTTP response from a webserver. The problem is when I use
pIXMLHTTPRequest.CreateInstance("Microsoft.XMLHTTP");
it always goes to error and can't continue to open the connection.
Can someone tell me where possibly the problem is, and why should I create the instance?
Many thanks in advance.
*****************************************
BOOL CAPIDlg::MakeRequest()
{
BOOL bRetVal=FALSE;
BSTR Result=NULL;
try{
MSXML::IXMLHttpRequestPtr pIXMLHTTPRequest;
HRESULT hResult;
hResult = pIXMLHTTPRequest.CreateInstance("Microsoft.XMLHTTP");
//Test the connection
if ( FAILED(hResult) ) {
MessageBox("Fail to create the connection");
return bRetVal;
}
MessageBox("Continue anyway");
//Open the connection
pIXMLHTTPRequest->open("POST",(_bstr_t)"www.yahoo.com");
//Send the request
pIXMLHTTPRequest->send();
MessageBox("Success to open");
//Get the result
Result=pIXMLHTTPRequest->responseText;
if(Result)
//Display the result
{m_Result.SetWindowText((_bstr_t)Result);
}
else
//Report error
MessageBox("Can't make the connection");
}
catch(...) {
//Report error
MessageBox("Can't initialize the HTTP request");
}
return true;
}
|
|
|
|
|
In some headers I see macros like following
<code>
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
</code>
What is this mean? and where could I learn much about these things?
karanba
|
|
|
|