|
I have tried this. It does remove the thich frame, and replace it with a thin frame, about have the thickness.
I still cannot get the edge of the MDI window to be just rasied rather than a frame.
The CFormView has no border in the resource editor.
Any ideas?
Thanks,
Giles
|
|
|
|
|
Oh, I understand now what you want to get!
You can't do anything from the dialog editor, because the CFormView is child of your CChildFrame window. I had a demo project that turned a from into a dialog, but I can't find it anymore.
However, try removing WS_EX_CLIENTEDGE from the extended style of the frame window.
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
I tried both
cs.style &= ~WS_THICKFRAME;
cs.style |= WS_DLGFRAME;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
and just
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
by itself, but no luck.
I'm sure it must be simple, but it feels like I've been though all the permutations.
Giles
|
|
|
|
|
Yes, it doesn't work because of:
BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
if (cs.lpszClass == NULL)
{
VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));
cs.lpszClass = _afxWndFrameOrView;
}
if ((cs.style & FWS_ADDTOTITLE) && afxData.bWin4)
cs.style |= FWS_PREFIXTITLE;
if (afxData.bWin4)
cs.dwExStyle |= WS_EX_CLIENTEDGE;
return TRUE;
}
Try to do that in OnCreate(), using ModifyStyle().
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Still no luck. The frame border is still there. I wanted to use this for a database app, which I am converting from Access. I wanted something that had a forms like in Access with no frame.
If you do see an example of this in the future I would be grateful if you could tell me how?
Thanks once again,
Giles
|
|
|
|
|
It was the view...
void CDemoView::OnInitialUpdate()
{
ModifyStyleEx(WS_EX_CLIENTEDGE, 0);
}
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
The correct way:
CMyView::OnInitialUpdate()
{
ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
CFormView::OnInitialUpdate();
}
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Great!!!!!!
Your a genius.
Thanks for all your help!
Giles
|
|
|
|
|
I'm only hard-headed ...
I already did that once, so I should be able to do it again
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Brilliant Paolo!
Nish
[Signature temporarily down]
|
|
|
|
|
For the whole thread, or just the last sentence?
However, thanks!
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Paolo Messina wrote:
For the whole thread
Yes. More than the solution, it was your approach which I thought was amazing! Slowly moving towards the goal.
Joaquin had posted this link in one of his posts today [Mar 7th 2002]. That's why I actually replied to a thread that's almost half an year old
Nish
[Signature temporarily down]
|
|
|
|
|
hi, ok first of all, this project is pure win32, no MFC involved. I'm making a server that can accept multiple clients, when a client sends some data, the server sends it back to all connections. I'm using the sockets in asynchronous mode, i've already made the client but i'm having problems with the server and i've been trying to firgure it out for so long, i thought i'd try here. I can't find any example on the net of this, and i'm starting to believe there isn't one, all i could find was a server that used threads and echoed the data back to the connection the data was sent from.
This is what i have so far:
First i create a socket that listens for incoming connections, this socket is called "sd". then i have an array of 50 sockets: ac[50]
i initialize all these sockets with a loop from one to 50 giving them the value "NULL"
This is the code that is executed when the listening socket posts the FD_ACCEPT message to accept any incoming connection:
case FD_ACCEPT:
sockaddr_in sinRemote;
nAddrSize = sizeof(sinRemote);
ac[conn] = accept(sd, (sockaddr*)&sinRemote, &nAddrSize);
MessageBox (NULL, "Accepted incoming connection." , "Accepted", 0 + MB_ICONASTERISK);
conn = conn + 1;
break;
This works fine and multiple connections are accepted. The conn integer keeps up with the number of connections established.
Now here's the problem: every incoming connection is accepted by the ac socket, the first one by ac[0], the second one by ac[1] and so on and so on... till 50.
I used WSAAsyncselect on all ac sockets from 0 to 50 so when they are ready to receive data they post a message. Now what is supposed to happen is that somehow the received data is sent back to all connections, here's what i have now:
case FD_READ:
c = 0;
do
{
bytes_read = recv(ac[c], buf, sizeof(buf),0);
buf[bytes_read] = NULL;
c = c + 1;
}
while(bytes_read<=0);
for (y=0;y<=50;y++)
{
if (ac[y]!=NULL)
{
Len = strlen(buf);
if (send(ac[y], buf, Len, 0) == SOCKET_ERROR)
{
MessageBox (NULL, "error echoing data" , "Error", 0 + MB_ICONHAND);
}
}
}
break;
I tried to make multiple telnet connections and it worked but when i sent something, it got echo'd for the first connection but then it gave me the "error echoing data" messagebox...
Can anyone please tell me how to handle FD_READ so the server sends the data back to all connected clients???
Thanks...
Kuniva
P.S.: this thing is really startin ta bug me
|
|
|
|
|
Maybe more things are wrong in your code, but take a look at that:
case FD_READ:
c = 0;
do
{
bytes_read = recv(ac[c], buf, sizeof(buf),0);
buf[bytes_read] = NULL;
c = c + 1;
}
while(bytes_read<=0);
Since the sockets are asynchronous, there is a good chance that recv(..) will return SOCKET_ERROR for most of the sockets (the ones in which there is no pending data). SOCKET_ERROR equals to -1. Which means that your
buf[bytes_read] = NULL;
statement will overwrite some memory... In debug build there are good chances you won't even notice it - but there is a good chance that in Release build the program will crash.
That would probably also damage the results of your
Len = strlen(buf)
line.
Anyway, whenever you get a SOCKET_ERROR result, check the value returned from WSAGetLastError(). If this value equals WSAEWOULDBLOCK then it means the operation will complete later. I recommend reading Windows Sockets Network Programming by Bob Quinn (I think he's the Charles Petzold of Winsock) and Dave Shute, ISBN 0-201-63372-8.
Another note - writing a server that relies on Windows messages (or event Events) is ok for a small-scale server. But in a large one that should handle thousands, and probably even hundreds of simultaneous connections, you'd probably use some other method (like IOCP).
Good luck!
|
|
|
|
|
Hi, I've to invoke an application whose path is not known. I am required to search for it in the application path instead of opening the CFileDialog can you help me how to do it
|
|
|
|
|
Hi,
I'm not sure to understand what you're trying to do, but you may look at these API:
- SearchPath()
- SearchTreeForFile()
Cheers,
Paolo
------
"airplane is cool, but space shuttle is even better" (J. Kaczorowski)
|
|
|
|
|
Thanks for your suggestion. as for the Usage I am using it to Invoke other applications Like Word Excel or Some external Reporting tool That can be used for some functionality as a part of my application
|
|
|
|
|
Thanks for your suggestion. as for the Usage I am using it to Invoke other applications Like Word Excel or Some external Reporting tool That can be used for some functionality as a part of my application
|
|
|
|
|
I want to use "Post" to send some paras to a ASP page.When I use Unicode compile mode,the asp can't receive the paras.When I use MBCS compile mode,the asp can received.
Who can give me some advice?
The code is here:
BOOL PostRequest(CString sUrl, CString sContent, CString &sResult)
{
CString strHeaders =
_T("Content-Type: application/x-www-form-urlencoded");
// URL-encoded form variables -
// name = "John Doe", userid = "hithere", other = "P&Q"
//CString accept=
// _T("Accept: */*");
//LPTSTR a=accept.GetBuffer(accept.GetLength());
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
CInternetSession session;
AfxParseURL(sUrl, dwServiceType, strServerName, strObject, nPort);
CHttpConnection * pServer = session.GetHttpConnection(strServerName, nPort);
//CHttpFile *pFile = pServer->OpenRequest(0,
// strObject,NULL,1,(LPCTSTR*)&accept,NULL,INTERNET_FLAG_EXISTING_CONNECT);
if (pServer==NULL)
return false;
CHttpFile *pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,
strObject);
if(pFile==NULL)
return false;
try
{
BOOL result = pFile->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)sContent, sContent.GetLength());
}
catch (CInternetException e)
{
//MessageBox(NULL,_T("Internet Exception"),_T("Error"),MB_OK);
return false;
}
catch(...)
{
return false;
}
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
}
|
|
|
|
|
|
hai i am a new user of MFC
As soon as i am creating a new dialog initdialog is giving assertion error. than it's dumping core.
Some Dll's are also overlapping ??
Could Any body immediately help me.
Suleman;)
suleman
|
|
|
|
|
Which line is giving the assertion? What does the call stack show?
Michael
|
|
|
|
|
HI
Is there any way to use or accommodate ‘CdialogBar’ with ‘Cdilalog ‘ ?How?
I tried to do this but an error at runtime occurred ,my code like below :
BOOL CmyDlg::OnInitDialog()
{
. .
. . .
m_DialogBar.Create(this, IDD_DLGBAR, WS_VISIBLE|WS_CHILD|CBRS_LEFT, 1);
m_DialogBar.EnableDocking(CBRS_ALIGN_LEFT);
}
Thank you ,,,
AHMAD ALWASHALI
|
|
|
|
|
I'm currently writing a file viewer and I would like to automatically unzip .ZIP files to preview their content. My unzipper is a .dll which uses the zlib library. This is a very important part of the application.
Below is the method which reads a .ZIP file in the .dll. I would like to callback my application and give it a pointer to the buffer (an array) containing each unziped file.
As I've never written any callback I don't really know how to implement this, can someone explain me the howto. Thanks in advance.
void C3DZipLoader::Load(char* fileName) {
char* pszFileName;
unzFile hUzf = unzOpen(fileName.ToPStr());
if (hUzf==NULL) return NULL;
pszFileName = new char[MAX_PATH];
if (unzGoToFirstFile(hUzf)==UNZ_OK) {
while (true) {
ZeroMemory(pszFileName, MAX_PATH);
unzGetCurrentFileInfo(hUzf,
NULL,
pszFileName, MAX_PATH,
NULL, 0,
NULL, 0);
if (unzOpenCurrentFile(hUzf)==UNZ_OK) {
// We read the stream form Zlib and get a buffer
// containing the file then we...
<do_the_callback_call_here>
unzCloseCurrentFile(hUzf);
}
if (unzGoToNextFile(hUzf)!=UNZ_OK) break;
}
}
delete [] pszFileName;
return <something>;
}
Yarp
|
|
|
|
|
how can i convert a .bmp file to .jpg file programmatically?
|
|
|
|
|