WEB开发网
开发学院软件开发VC 如何有效地使用对话框 阅读

如何有效地使用对话框

 2010-07-01 20:43:00 来源:WEB开发网   
核心提示:2. 对话框的全屏显示对话框的全屏显示可以在OnInitDialog()中用 SetWindowPos 和 HWND_TOPMOST 来实现对话框的重新大小,BOOL CFullScrDlgDlg::OnInitDialog(){CDialog::OnInitDialog();//...int cx, cy;HDC d

2. 对话框的全屏显示

对话框的全屏显示可以在OnInitDialog()中用 SetWindowPos 和 HWND_TOPMOST 来实现对话框的重新大小。

BOOL CFullScrDlgDlg::OnInitDialog()
{
  CDialog::OnInitDialog();
  //...
  int cx, cy;
  HDC dc = ::GetDC(NULL);
  cx = GetDeviceCaps(dc,HORZRES) +
    GetSystemMetrics(SM_CXBORDER);
  cy = GetDeviceCaps(dc,VERTRES) +
    GetSystemMetrics(SM_CYBORDER);
  ::ReleaseDC(0,dc);
  //去除标题和边框
  SetWindowLong(m_hWnd, GWL_STYLE,
    GetWindowLong(m_hWnd, GWL_STYLE) &
  (~(WS_CAPTION | WS_BORDER)));
  // 置对话框为最顶端并扩充到整个屏幕
  ::SetWindowPos(m_hWnd, HWND_TOPMOST,
    -(GetSystemMetrics(SM_CXBORDER)+1),
    -(GetSystemMetrics(SM_CYBORDER)+1),
    cx+1,cy+1, SWP_NOZORDER);
  //...
  return TRUE;
}

3. 如何在2K/xp下使窗口获取焦点

在2K/XP下我们可以用 AttachThreadInput 和SetForegroundWindow来有效的获取焦点。

//捕捉并设置当前焦点窗口为我们的窗口
AttachThreadInput(
  GetWindowThreadProcessId(
    ::GetForegroundWindow(),NULL),
  GetCurrentThreadId(),TRUE);
//置我们的为焦点窗口
SetForegroundWindow();
SetFocus();
//释放thread
AttachThreadInput(
  GetWindowThreadProcessId(
    ::GetForegroundWindow(),NULL),
  GetCurrentThreadId(),FALSE);

4. 使你的对话框位于最顶端

可以直接在 OnInitDialog()中用SetWindowPos来实现。

SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

上一页  1 2 3 4 5 6  下一页

Tags:如何 有效 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接