已有代码改造.
代码中使用了PROPSHEETPAGE来创建TAB。
现在有一个比较BT的要求,就是我要修改属性页的标题的文字font。也就是每个属性页的标题文字的字体。我的代码是要在wince里面跑
网上我搜了一下,都时PC的。而且改动量很大。各位有什么办法么已有的PropertySheet代码。 PROPSHEETPAGE psp[2];
PROPSHEETHEADER psh;
TCHAR szName[32];

ZeroMemory(szName, sizeof szName);
LoadString( hInst, IDS_SETTINGS, szName, sizeof szName );

psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = PSP_DEFAULT;
psp[0].hInstance= hInst;
psp[0].lParam = (LPARAM)hWnd;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DIALOG1);
psp[0].pfnDlgProc = DlgBuzzer; psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE;
psh.hwndParent = hWnd;
psh.hInstance = hInst;
psh.pszCaption = szName;
psh.nPages = 1;
psh.nStartPage = 0;
psh.ppsp = psp;
psh.pfnCallback = PropSheetCallback;

PropertySheet(&psh);

解决方案 »

  1.   

    我在什么时候创建字体?
    使用SendMessage(hwndTab, WM_SETFONT,hFont ,0)这个么?还是那里?我现在通过修改资源文件可以修正窗口内的控件的font。
    但是对于属性页的那个标题我暂时不知道在那里设置。这样就造成了,界面布局不一致。
    tab控件的标题文字是系统的,但是tab页里面空间却是我指定的剩下的代码在这里
    // Buzzer Setting
    BOOL CALLBACK DlgBuzzer(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    NMHDR *nmhdr;
    int i;
    BOOL bRadio;
    HWND hTemp;
    #ifdef WIN32_PLATFORM_PSPC
    SHINITDLGINFO shidi;
    #endif

    switch(message){
    // Initialize BuzzerSetting
    case WM_INITDIALOG:
    #ifdef WIN32_PLATFORM_PSPC
    shidi.hDlg = hDlg;
    shidi.dwMask = SHIDIM_FLAGS;
    shidi.dwFlags = SHIDIF_EMPTYMENU;
    SHInitDialog(&shidi);
    #endif
    InitDlgBuzzer(hDlg);
    return TRUE;
    // Save or Not Save BuzzerSetting
    case WM_NOTIFY:
    nmhdr = (NMHDR*)lParam;
    switch(nmhdr->code){
    case PSN_APPLY:
    TerminateDlgBuzzer(hDlg, TRUE);
    break;
    case PSN_QUERYCANCEL:
    TerminateDlgBuzzer(hDlg, FALSE);
    break;
    /*case PSN_KILLACTIVE:
    break;*/
    }
    break;

    // Enable / Disable Radio Button
    case WM_COMMAND:
    switch(LOWORD(wParam)){
    case IDC_CHECK1:
    case IDC_CHECK2:
    case IDC_CHECK3:
    case IDC_CHECK4:
    bRadio = (BOOL)SendDlgItemMessage(hDlg, LOWORD(wParam), BM_GETCHECK, 0, 0);
    for(i=1; i<4; i++){
    hTemp = GetDlgItem(hDlg, LOWORD(wParam)+i);
    EnableWindow(hTemp, bRadio);
    }
    break;
    // Play Buzzer
    case IDC_BUTTON1: TestBuzzer(hDlg, B_ALARM); break;
    case IDC_BUTTON2: TestBuzzer(hDlg, B_WARNING); break;
    case IDC_BUTTON3: TestBuzzer(hDlg, B_SCANEND); break;
    case IDC_BUTTON4: TestBuzzer(hDlg, B_USERDEF); break;
    }

    break;
    // OwnerDraw Button
    case WM_DRAWITEM:
    DrawButton(hDlg, g_hIcon, (LPDRAWITEMSTRUCT)lParam);
    return TRUE;
    }
        return FALSE;
    }int CALLBACK PropSheetCallback(HWND hDlg, UINT uMsg, LPARAM lParam)
    {
    #ifdef WIN32_PLATFORM_PSPC //BUILD_POCKETPC
    TCHAR tcsTitle[256];
    #endif
    switch(uMsg)
    {
    #ifdef WIN32_PLATFORM_PSPC //BUILD_POCKETPC
    case PSCB_GETTITLE:
    LoadString(g_hInst, ID_CPLCAPTION, tcsTitle, sizeof(tcsTitle));
    wcscpy((TCHAR*)lParam, tcsTitle);
    break; case PSCB_GETVERSION:
    return COMCTL32_VERSION;
    #endif
    }
    return 0;
    }
      

  2.   

    我在什么时候创建字体?
    使用SendMessage(hwndTab, WM_SETFONT,hFont ,0)这个么?你这是设置字体,你要先创建HFONT字体以后,才能设置字体
      

  3.   

    我知道的,先创建HFONT。
    我的问题是我现在不知道在什么时间或者那个位置去通知PropertySheet,改变tab页标题的字体。
      

  4.   

    PropertySheet窗口创建完成,显示之前设置可以就可以了
      

  5.   

    说明一下,这个是SDK的方式去创建PropertySheet窗口