已有代码改造.
代码中使用了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);
代码中使用了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);
使用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;
}
使用SendMessage(hwndTab, WM_SETFONT,hFont ,0)这个么?你这是设置字体,你要先创建HFONT字体以后,才能设置字体
我的问题是我现在不知道在什么时间或者那个位置去通知PropertySheet,改变tab页标题的字体。