首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用propertysheet在屏幕win32应用程序中心定位向导

使用propertysheet在屏幕win32应用程序中心定位向导
EN

Stack Overflow用户
提问于 2013-11-13 14:47:04
回答 1查看 437关注 0票数 0

使用Propertysheetpage在win32应用程序中创建两个页面向导。向导不在屏幕中心。为了将页面放在中心位置,我已经为第一页编写了下面的代码(假设第二页将与第一页的位置一起反映),但它不起作用。我在这里做错什么了吗?

代码语言:javascript
复制
static LRESULT WINAPI sWelcomePageDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

  {

   HWND hwndOwner = NULL;
   RECT rcOwner,rcDlg,rc;

   switch (uMsg) 
    {
        case WM_INITDIALOG:
             hwndOwner = GetDesktopWindow();
             GetWindowRect(hwndOwner, &rcOwner);
             GetWindowRect(hwnd, &rcDlg);
             rc.left = (rcOwner.right - rcOwner.left)/2 - (rcDlg.right - rcDlg.left)/2;
             rc.right = rc.left + (rcDlg.right - rcDlg.left);
             rc.top = (rcOwner.bottom - rcOwner.top)/2 - (rcDlg.bottom - rcDlg.top)/2;
             rc.bottom = rc.top + (rcDlg.bottom - rcDlg.top);
             SetWindowPos (hwnd, NULL, rc.left, rc.top, 0, 0, SWP_NOZORDER|SWP_NOSIZE);
             SetWindowText(GetDlgItem(hwnd, IDC_WELCOMETEXTSTATIC), Info);
             break;

       case WM_COMMAND:
            break;

       case WM_NOTIFY:
            LPNMHDR lpnm = (LPNMHDR)lParam;

            switch (lpnm->code)
            {
              case PSN_SETACTIVE:
                PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_NEXT | PSWIZB_CANCEL);
                break;
              case PSN_WIZNEXT:
                SetWindowLongPtr(hwnd, DWLP_MSGRESULT, IDD_FINISHPAGE);
                break;
            }

      break;
   }

return 0;

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 16:31:01

传递到窗口proc的hwnd是向导页的句柄。要获得向导本身的句柄,请调用GetParent( hwnd )。

顺便说一下,屏幕尺寸也可以通过GetSystemMetrics()、SM_CXSCREEN / SM_CYSCREEN获得。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19956742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档