|
MessageBox is an API function. Unfortunately, the dialog it displays isn't customizable through subclassing or through the mechanisms used by the common dialogs. Basic information on MessageBox can be found here[^] in the MSDN.
You can, however, replicate the functionality of MessageBox pretty easily. It's a simple dialog box that displays an icon, text, and up to four buttons. Once you've replicated it, you could customize it as necessary.
Software Zen: delete this;
|
|
|
|
|
If you use MFC you can use the AfxMessageBox() function instead. Then you can change the behaviour in CWinApp::DoMessageBox() to whatever.
|
|
|
|
|
You can`t subclass MessageBox, it`s API
<italic>Work hard and a bit of luck is the key to success.
You don`t need to be genius, to be rich.
|
|
|
|
|
Hi everybody, I got a short but rather difficult question: does anybody know how the Window SysTray clock can be hidden/replaced by another window? For example a custom window made by the programmer. This has been troubling me for some time...
Thank you!
The Greater Mind Balance
|
|
|
|
|
Hello buddy heer is solution
first using the FindWindow api find the Window that contain systray timer like this.
HWND hWnd=::FindWindow("TrayClockWClass",NULL);
and for hiding
::ShowWindow(hWnd,SW_HIDE)
and for replacing the Timer window,
craete a static value with parent class= ToolbarWindow32
and according to coordinate system of your computer place it over hidden System Tary CLock
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
Hey, thanks for answering Alok. I didn't mention that my current project is in Visual Basic 6. It's more than a year old and back then I wasn't so much into C++ or C# ::- )... anyway, I handle VB6 pretty well and I can use API to call the FindWindow function and the ShowWindow function as well. I got a bit confused by the last thing you told me:
You mean create a window that inherits the ToolbarWindow32 class? That I don't know if I can do in VB6...
And another thing... as we all know, the SysTray clock has a fixed size, but what if I want my window to be a bit larger then that? Let's say I want it of a fixed size of 300 pixels.
Thanks again for helping. Anybody who helps will be in the "thanks to..." list of my program (which is going to be freeware) when I finish it. It's a clock with alarms, internet synchronization, calendar, to do list and lots of other stuff in it. It's gonna have at least 10 great functionalities, but I`m still only 30% done with it... this systray thing is pretty important because not all people have their taskbar on autohide like me ::- )
Have a nice day everybody.
The Greater Mind Balance
|
|
|
|
|
do one thing
first Hide the timer,then using NOTIFYICONDATA create you own icon based on time.
NOTIFYICONDATA strcuture is used in making system tray application.
i think you have to play this trick
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
Yes, but this means adding a separate icon for each digit of the clock, so you can see it. That means at least 4 icons, I think its kind of hard to handle, specially if you think that sometimes some other icons might interfere. For example the sound volume icon could get in the middle of those. Using NOTIFYICONDATA I cannot create a window of ... say... 300 pixels and place it instead of the clock.
I think your first idea is what could help. You said that...
"and for replacing the Timer window,
craete a static value with parent class= ToolbarWindow32
and according to coordinate system of your computer place it over hidden System Tary CLock"
This also restricts me to using the size of the hidden window of the clock, but it does allow me to place there ANY window right? Even a window containing a drawing not limited by the 16x16 pixels of an icon.
What I am really looking for is a way to add there, instead of the clock, some other window of mine except at a biger size, or smaller... customizable!
I saw such a thing running on a Windows 2000 system so I`m sure it is somehow possible, but I really don't understand how it can be done. The window on that Windows 2000 was replacing the clock and it had more than 200 pixels in lenght.
This is a challenging problem to solve... hmmm...
The Greater Mind Balance
|
|
|
|
|
May be ther one more solution,make DeskBAnd like MSoffice provide to user.
if you like youcan mail me at cocokola@rediffmail.com.
looking forward to hear from you
gud day
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
I think I'm gonna have no choice but to port my entire application to Visual C++. This is gonna be hard but I don't even
know if Visual Basic 6 supports changing the parent of a window. Hmm...
By the way, I wrote you an e-mail... will you answer it? ::- )
|
|
|
|
|
YEah Why not,i will definately answer you and may be we become gud friend,i like to help you in your project.
thanks
my email is cocokola@rediffmail.com
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
YEah Why not,i will definately answer you and may be we become gud friend,i like to help you in your project.
thanks
my email is cocokola@rediffmail.com
-----------------------------
"I Think It Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
No no, I was saying that I already sent you an e-mail ::- D. I sent it two days ago or something like that. Maybe you deleted it and thought it was spam ::- )...
The Greater Mind Balance
|
|
|
|
|
Hello!
I have a dialog-based application. The main dialogs shows another dialog before showing itself (think of a login dialog before the main dialog). Now my problem is that the login dialog isn't shown in the taskbar, only the main window shows up when you have logged in.
Now the question: how do I show up the first dialog in the taskbar??
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
If the login dialog doesn't have a caption, it won't show in the taskbar. Could that be the problem?
Software Zen: delete this;
|
|
|
|
|
The dialog actually has a caption...
It has the following flags:
title, system menu, format: context menu, border: dialog border, 3D view, visible, no fail create, centered.
Any more ideas??
Thanks for your reply and best regards,
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
I have same problem, all subdialogs of my dialog don't show in taskbar ... they are all normal CDialogs.
Maybe it could be solved by creating them with parent NULL, or DesktopWindow
|
|
|
|
|
Try a system menu. (Properties dialog of your dialog recource)
|
|
|
|
|
Hey I want to enlist local drives in combo box ...in similar way as in "Look in :" combo box of Search in Windows 2000 professional ....Does any one knows answer..?
Drushti
|
|
|
|
|
hi,
try this Code
Add A Button [OpenFolder]
Edit Box For display Selected File Path[IDC_EDIT_FILEPATH]
-----------------In OnOpenFolderClick function-----------
{
LPITEMIDLIST pidlRoot = NULL;
LPITEMIDLIST pidlSelected = NULL;
BROWSEINFO bi = {0};
LPMALLOC pMalloc = NULL;
TCHAR szDisplayName[MAX_PATH];
SHGetMalloc(&pMalloc);
pidlRoot = NULL;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = pidlRoot;
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = "Choose a folder";
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
bi.lpfn = BrowseCallbackProc;
bi.lParam = 0;
pidlSelected = SHBrowseForFolder(&bi);
if(!pidlSelected)
return;
if(pidlRoot)
{
pMalloc->Free(pidlRoot);
}
pMalloc->Release();
SHGetPathFromIDList(pidlSelected,szDisplayName);
GetDlgItem(IDC_EDIT_FILEPATH)->SetWindowText(szDisplayName);
}
---------------------------------------
------add Below Code For Call Back Fuction. Above the function
-----------------------------------------------
CString g_csDefaultPath = "";
INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg,LPARAM lp, LPARAM pData)
{
TCHAR szDir[MAX_PATH];
strcpy(szDir,(LPSTR)(LPCSTR)g_csDefaultPath);
switch(uMsg)
{
case BFFM_INITIALIZED:
//if (GetCurrentDirectory(sizeof(szDir)/sizeof(TCHAR), szDir))
{
// WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl.
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)szDir);
}
break;
case BFFM_SELCHANGED:
// Set the status window to the currently selected path.
if (SHGetPathFromIDList((LPITEMIDLIST) lp ,szDir))
{
SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);
}
break;
}
return 0;
}
by
baijumax
|
|
|
|
|
|
Hi there,
I've created functions to implement a linked list.
I'll like to know how do i call the destructor in the main.
it has been defined as such in the clist class
cList::~cList()
{
node *tmp = head, *pred;
while(tmp != NULL)
{
pred = tmp;
tmp = tmp -> getNext();
delete pred;
}
delete head;
}
|
|
|
|
|
The destructor gets called automatically if the cList object isn't needed/referenced any more.
If you wish to explicitely call the destructor yourself, you could do something like this:
cList* pList = new cList();
delete pList;
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
Dominik Reichl wrote:
The destructor gets called automatically if the cList object isn't needed/referenced any more.
Hmm.. Too much Java there? If the object is created on the stack, its descructor is called when the object goes out of scope. If the object is created in the heap (with new keyword) its destructor is only called if you delete the object explicitly with delete operator.
|
|
|
|
|
thank you guys!
|
|
|
|