//第一个问题:
void CImpulseDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_stic-=1; //m_stic是我在头文件类定义的int类型变量
CString num;
num.Format("%16d",m_stic);
num.TrimLeft();
CWnd *pWnd=this->GetDlgItem(IDC_STATIC_MY); //IDC_STATIC_MY是文本框控件ID
pWnd->SetWindowText(num);
if(m_stic==0)
{
PostMessage(WM_CLOSEWINDOWS_MESSAGE);
}
CDialog::OnTimer(nIDEvent);
}
为什么我在把文本框控件调小一点就显示不出来数字了呢?调得很大的时候没什么问题!//第二个问题
怎么样在一个类中给另外一个类发送消息!请详细说明,用不用加另一个类的头文件等等!
//第三个问题
我在程序中调用ExWindowsEx(EWX_REBOOT,0)和ExWindowsEx(EWX_FORCE,0)电脑都会注销,而不是重新启动或者关闭计算机,而ExWindowsEx(EWX_SHUNDOWN,0)却没什么反应,但我用关闭计算机却可以正常工作,请问这是怎么会事啊?
void CImpulseDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_stic-=1; //m_stic是我在头文件类定义的int类型变量
CString num;
num.Format("%16d",m_stic);
num.TrimLeft();
CWnd *pWnd=this->GetDlgItem(IDC_STATIC_MY); //IDC_STATIC_MY是文本框控件ID
pWnd->SetWindowText(num);
if(m_stic==0)
{
PostMessage(WM_CLOSEWINDOWS_MESSAGE);
}
CDialog::OnTimer(nIDEvent);
}
为什么我在把文本框控件调小一点就显示不出来数字了呢?调得很大的时候没什么问题!//第二个问题
怎么样在一个类中给另外一个类发送消息!请详细说明,用不用加另一个类的头文件等等!
//第三个问题
我在程序中调用ExWindowsEx(EWX_REBOOT,0)和ExWindowsEx(EWX_FORCE,0)电脑都会注销,而不是重新启动或者关闭计算机,而ExWindowsEx(EWX_SHUNDOWN,0)却没什么反应,但我用关闭计算机却可以正常工作,请问这是怎么会事啊?
解决方案 »
- 请教如何获取某一文件夹下所有TXT的名称?
- 请教有关窗口重绘大量数据保存问题
- CFrameWnd中是否可以访问CFormView的子类?
- 哪位高手帮忙看看这段管理系统托盘的代码为什么总是运行不正确???
- 编译问题
- 小问题,请教大家了.链接时警告:LINK : warning LNK4089: all references to "ODBC32.dll" discarded by /OPT:REF
- 用ATL做com时遇到的问题,居然link时要找_main函数
- 求关于基于混合高斯分布的背景建模方法的论文
- 如何获得窗口大小?
- 如何实现在按钮控件中调用OnDraw(CDC* pDC)的内容,或者获得pDC指针也行!!!(分数不多,尽情笑纳)
- 问个窗口消息的问题
- 单文档视图中如果图片超出了800*600范围,如何显示
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
return FALSE; return TRUE;
}
如果第二个类是一个窗口,用SendMessage/PostMessage
如果第二个类是一个线程,用PostThreadMessage
如果第二个类什么都不是,直接调用函数
2:如果晓得另个窗口的句柄,可以用句柄来发消息。(不是类向类发消息,类是不能发消息或收消息的,在有窗口可以)
::SendMessage(HWND,MESSAGE,WPARAM,LPARAM);
eg.
::SendMessage(hWnd,WM_CLOSE,0,0);
3:程序的权限不够,需要自己修改权限。
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
return FALSE; return TRUE;
}