不要用无模式对话框。
解决方案 »
- vs2005配置vtk
- 程序的结构
- 请教:SDI和非模态对话框问题
- 如何从程序中设置BUTTON的EXTENDED STYLES为CLIENT EDGE属性?
- ~~~~~~~~~~~~简单错误~~~~~~~~~~~~~~~~~~~~这俩错误什么意思??
- 如何执行返回参数的存储过程
- 如何在VC中实现下拉图片列表??各位高手帮帮忙!!!
- 小问题,大家帮帮忙
- 窗口被覆盖后重新显示,系统会产生哪些消息?
- 自定义函数的参数能不能有"对象参数"?如果可以,那么怎么声明?
- 如何得到dialog主窗口的当前画面,并将该画面存到一个文件(bmp),有分100!
- 如何才能实现象qq的换肤功能?(100分)结果满意可以再加
2)用线程
3)看看这个
BCB_FANS(四大名捕之追杀令)
当MessageBox对话框显示的时候,主窗口将失去焦点,知道了这一点,问题就很简单了。下面是我的C++Builder代码。//替换主窗口的窗口过程(我不知道VC怎样办到这一点,反正原理就是这样)void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
TForm::WndProc(Message); //失去焦点之前
if(Message.Msg == WM_NCACTIVATE)
{
}
//失去焦点之后
else if(Message.Msg == WM_ACTIVATE)
{
if(LOWORD(Message.WParam) == WA_INACTIVE)
{
HWND hWnd;
char ClassBuf[64]; hWnd = (HWND)Message.LParam;
GetClassName(hWnd,ClassBuf,sizeof(ClassBuf)); //首先判断是否是MessageBox对话框,
if(AnsiString(ClassBuf) == "#32770")
{
//再判断这个窗口是否是本身程序的窗口(因为别的程序弹出窗口时,你的主窗口也同样失去焦点)
DWORD dwProcessID;
GetWindowThreadProcessId(hWnd,&dwProcessID);
if(dwProcessID == GetCurrentProcessId())
{
//移动窗口的位置
MoveWindow(.......);//或者调用 SetWindowPos(...)
//替换左边的标题栏图标(如果有的话)
SetClassLong(hWnd,GCL_HICON,(long)Image1->Picture->Icon->Handle); //重新设置按钮的文本(比如把确定改为“OK 007”)
HWND hTemp; hTemp = GetDlgItem(hWnd,1);
SetWindowText(hTemp,"New Text For Button"); //.........其他操作
}
}
}
}
}