工程如下,由DoPropertySheet生成属性对话框。在建立的过程中没有定义句柄。
后面想对里面的页面操作,需要获得每个page的句柄。应该怎么办呢?
直接GetDlgItem()得不到啊 ?
请帮忙:#include "stdafx.h"
#include "resource.h"
#include <PrSht.h>
#pragma comment(lib,"comctl32.lib")
int CALLBACK PropSheetProc(HWND hDlg,UINT uMsg,LPARAM lParam);HINSTANCE g_hInst;
int DoPropertySheet(HWND hDlg)
{
PROPSHEETPAGE psp[2];
PROPSHEETHEADER psh;
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags =PSP_USETITLE;
psp[0].hInstance = g_hInst;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DIALOG1);
psp[0].pszIcon = NULL;
psp[0].pfnDlgProc =NULL;
psp[0].pszTitle =TEXT("test1");
psp[0].lParam = 0;
psp[0].pfnCallback = NULL;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_USETITLE ;
psp[1].hInstance = g_hInst;
psp[1].pszTemplate =MAKEINTRESOURCE(IDD_DIALOG2);
psp[1].pszIcon = NULL;
psp[1].pfnDlgProc = NULL;
psp[1].pszTitle = TEXT("test2");
psp[1].lParam = 0;
psp[1].pfnCallback = NULL;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE;
psh.hwndParent = hDlg;
psh.hInstance = g_hInst;
psh.pszIcon =NULL;
psh.pszCaption = _T( "Cell Properties");
psh.nPages = sizeof(psp)/sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
psh.pfnCallback = PropSheetProc;
int code=PropertySheet(&psh);
return code;
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
g_hInst=hInstance;
return DoPropertySheet(NULL);
}
HWND page1;int CALLBACK PropSheetProc(HWND hDlg,UINT uMsg,LPARAM lParam)
{
switch(uMsg)
{
case PSCB_PRECREATE:
{
char ptr[]="Good";
page1=GetDlgItem (hDlg,IDD_DIALOG2); //此处不能获得属性页的句柄
SetDlgItemText(page1,IDC_STATIC1,ptr);
if(page1==NULL) //此处page1为NULL
MessageBox(NULL,"ERROR","system warning",MB_OK|MB_ICONEXCLAMATION);
}
break;
default:
return 0;
}
return 0;
}
后面想对里面的页面操作,需要获得每个page的句柄。应该怎么办呢?
直接GetDlgItem()得不到啊 ?
请帮忙:#include "stdafx.h"
#include "resource.h"
#include <PrSht.h>
#pragma comment(lib,"comctl32.lib")
int CALLBACK PropSheetProc(HWND hDlg,UINT uMsg,LPARAM lParam);HINSTANCE g_hInst;
int DoPropertySheet(HWND hDlg)
{
PROPSHEETPAGE psp[2];
PROPSHEETHEADER psh;
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags =PSP_USETITLE;
psp[0].hInstance = g_hInst;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DIALOG1);
psp[0].pszIcon = NULL;
psp[0].pfnDlgProc =NULL;
psp[0].pszTitle =TEXT("test1");
psp[0].lParam = 0;
psp[0].pfnCallback = NULL;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_USETITLE ;
psp[1].hInstance = g_hInst;
psp[1].pszTemplate =MAKEINTRESOURCE(IDD_DIALOG2);
psp[1].pszIcon = NULL;
psp[1].pfnDlgProc = NULL;
psp[1].pszTitle = TEXT("test2");
psp[1].lParam = 0;
psp[1].pfnCallback = NULL;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE;
psh.hwndParent = hDlg;
psh.hInstance = g_hInst;
psh.pszIcon =NULL;
psh.pszCaption = _T( "Cell Properties");
psh.nPages = sizeof(psp)/sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
psh.pfnCallback = PropSheetProc;
int code=PropertySheet(&psh);
return code;
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
g_hInst=hInstance;
return DoPropertySheet(NULL);
}
HWND page1;int CALLBACK PropSheetProc(HWND hDlg,UINT uMsg,LPARAM lParam)
{
switch(uMsg)
{
case PSCB_PRECREATE:
{
char ptr[]="Good";
page1=GetDlgItem (hDlg,IDD_DIALOG2); //此处不能获得属性页的句柄
SetDlgItemText(page1,IDC_STATIC1,ptr);
if(page1==NULL) //此处page1为NULL
MessageBox(NULL,"ERROR","system warning",MB_OK|MB_ICONEXCLAMATION);
}
break;
default:
return 0;
}
return 0;
}
解决方案 »
- 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
- SendMessage和PostMessage都不起作用,求助
- VS2008里SDI项目菜单怎么弄出来?
- 真诚请教各位高手:关于TreeCtrl中拖动子节点的问题.
- 一般的 B/S 是用什么来开发的
- 有谁知道c:\RECYCLER这个目录?
- 关于键盘的处理,高手帮帮忙,很急!应该这种程序很有意义,大家都会用到
- 散分,高程感受:上午的题好难,下午的题还比较简单.
- 谁能告诉我?VC的宏怎么学才能学好?我快疯了!100分呀~~~
- vc中怎样引用设计时已添加的控件...
- 如何不让父窗口截获WM_MOUSEMOVE而让让子窗口响应消息
- 如何调用windows画图功能
你在每个page的onsize或者初始化函数里面用
gHwnd_page= this->m_hWnd;
在你想用这个句柄的其他地方加
extern hwnd gHwnd_page;
然后就可以用了