用这个函数自己打开我自己定制的窗口 ,但是我想得到窗口中的控件的句柄,但是我怎么也得不到函数很简单:
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
InitCommonControls(); DialogBoxParam(hInstance, (LPCWSTR )IDD_About, NULL, WndProc, NULL); // Run the message pump
while( GetMessage( &msg, NULL, 0, 0 ))
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return (int) msg.wParam;
}
// Message handler for about box.
INT_PTR CALLBACK WndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{ HWND bri_slider=NULL;
HWND zom_slider=NULL;
///看下面的得到控件的操作 这里得到的bri_slider 就是等于NULL
//如果改成bri_slider=GetDlgItem(hDlg,IDC_BRIGHTNESS_SLIDER)结果还是一样
//我用GetWindlong得到hdlg的ID并不等于IDD_About, 而bri_slider的控件就是在IDD_About的窗口中
// 我如何才能得到 IDC_BRIGHTNESS_SLIDER的控制的句柄呢? 谢谢
bri_slider=GetDlgItem(GetDlgItem(hDlg,IDD_About),IDC_BRIGHTNESS_SLIDER);
if(bri_slider== NULL)
RETAILMSG(1,(L"bright slider is error\n"));
switch (message)
{
case WM_INITDIALOG:
RETAILMSG(1,(L"-WM_INITDIALOG \n"));
int DlgWidth, DlgHeight; // dialog width and height in pixel units
// SHFullScreen(m_hWndViewfinder, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON); DlgHeight=GetSystemMetrics(SM_CXSCREEN);
DlgWidth=GetSystemMetrics(SM_CYSCREEN);
MoveWindow(hDlg, 0, 0, DlgHeight, DlgWidth, TRUE);
return (INT_PTR)TRUE; case WM_COMMAND:
RETAILMSG(1,(L"-WM_COMMAND \n"));
if ( LOWORD(wParam) == IDC_Close)
{
EndDialog(hDlg, LOWORD(wParam));
PostQuitMessage(0);
return TRUE;
}
break; case WM_CLOSE:
RETAILMSG(1,(L"-WM_CLOSE \n"));
EndDialog(hDlg, message);
PostQuitMessage(0);
return TRUE; }
return (INT_PTR)FALSE;
}我如何才能得到 IDC_BRIGHTNESS_SLIDER的控制的句柄呢? 谢谢
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
InitCommonControls(); DialogBoxParam(hInstance, (LPCWSTR )IDD_About, NULL, WndProc, NULL); // Run the message pump
while( GetMessage( &msg, NULL, 0, 0 ))
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return (int) msg.wParam;
}
// Message handler for about box.
INT_PTR CALLBACK WndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{ HWND bri_slider=NULL;
HWND zom_slider=NULL;
///看下面的得到控件的操作 这里得到的bri_slider 就是等于NULL
//如果改成bri_slider=GetDlgItem(hDlg,IDC_BRIGHTNESS_SLIDER)结果还是一样
//我用GetWindlong得到hdlg的ID并不等于IDD_About, 而bri_slider的控件就是在IDD_About的窗口中
// 我如何才能得到 IDC_BRIGHTNESS_SLIDER的控制的句柄呢? 谢谢
bri_slider=GetDlgItem(GetDlgItem(hDlg,IDD_About),IDC_BRIGHTNESS_SLIDER);
if(bri_slider== NULL)
RETAILMSG(1,(L"bright slider is error\n"));
switch (message)
{
case WM_INITDIALOG:
RETAILMSG(1,(L"-WM_INITDIALOG \n"));
int DlgWidth, DlgHeight; // dialog width and height in pixel units
// SHFullScreen(m_hWndViewfinder, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON); DlgHeight=GetSystemMetrics(SM_CXSCREEN);
DlgWidth=GetSystemMetrics(SM_CYSCREEN);
MoveWindow(hDlg, 0, 0, DlgHeight, DlgWidth, TRUE);
return (INT_PTR)TRUE; case WM_COMMAND:
RETAILMSG(1,(L"-WM_COMMAND \n"));
if ( LOWORD(wParam) == IDC_Close)
{
EndDialog(hDlg, LOWORD(wParam));
PostQuitMessage(0);
return TRUE;
}
break; case WM_CLOSE:
RETAILMSG(1,(L"-WM_CLOSE \n"));
EndDialog(hDlg, message);
PostQuitMessage(0);
return TRUE; }
return (INT_PTR)FALSE;
}我如何才能得到 IDC_BRIGHTNESS_SLIDER的控制的句柄呢? 谢谢
后第一次运行窗体未初始化会得不到,第二次就可以了
我在成功的时候也打印信息
bri_slider=GetDlgItem(GetDlgItem(hDlg,IDD_About),IDC_BRIGHTNESS_SLIDER);
if(bri_slider== NULL)
RETAILMSG(1,(L"bright slider is error\n"));
else
RETAILMSG(1,(L"bright slider is OK \n"));
而且把这句话放在
case WM_INITDIALOG:
的情况 也根本没有打印出来
bright slider is OK 而是 只有error所以你认为这样的是不对的