重庆同济汽车上班时间:接收不到SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING ,0,LPARAM("OK"));发出的LB_ADDSTRING消息
来源:百度文库 编辑:查人人中国名人网 时间:2024/04/20 18:42:25
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK DialgProc (HWND, UINT, WPARAM, LPARAM) ;
HINSTANCE g_hInst;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wc ;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.lpfnWndProc = WndProc ;
wc.cbClsExtra = 0 ;
wc.cbWndExtra = 0 ;
wc.hInstance = hInstance ;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1) ;
wc.lpszClassName = szAppName ;
if (!RegisterClass (&wc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("ShutDown"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
g_hInst = hInstance;
while (GetMessage (&msg, NULL, 0, 0))
{
"" if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
"" {
"""TranslateMessage (&msg) ;
""" DispatchMessage (&msg) ;
"" }
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
" case WM_COMMAND:
"" {
""" switch(LOWORD(wParam))
""" {
""" case IDM_SHUTDOWN:
"""" DialogBox(NULL,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,(DLGPROC)DialgProc);
""" }
"" }
"" break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
LRESULT CALLBACK DialgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
"switch(message)
"{
""case WM_INITDIALOG:
"""MessageBox(hwnd,"ok","ok",MB_OK);
""break;
""case WM_CREATE:
"""SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING ,0,LPARAM("OK"));
""case WM_COMMAND:
"""{
""""switch(LOWORD(wParam))
""""{
""""case IDC_CANCEL:
"""""{
""""""EndDialog(hwnd,TRUE);
"""""}
""""}
"""}
""break;
"}
"return 0;
}
我的目的是在显示对话筐时,完成对它上面控件的初始化如combox.list等.
#include "resource.h"
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK DialgProc (HWND, UINT, WPARAM, LPARAM) ;
HINSTANCE g_hInst;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wc ;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.lpfnWndProc = WndProc ;
wc.cbClsExtra = 0 ;
wc.cbWndExtra = 0 ;
wc.hInstance = hInstance ;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1) ;
wc.lpszClassName = szAppName ;
if (!RegisterClass (&wc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("ShutDown"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
g_hInst = hInstance;
while (GetMessage (&msg, NULL, 0, 0))
{
"" if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
"" {
"""TranslateMessage (&msg) ;
""" DispatchMessage (&msg) ;
"" }
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
" case WM_COMMAND:
"" {
""" switch(LOWORD(wParam))
""" {
""" case IDM_SHUTDOWN:
"""" DialogBox(NULL,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,(DLGPROC)DialgProc);
""" }
"" }
"" break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
LRESULT CALLBACK DialgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
"switch(message)
"{
""case WM_INITDIALOG:
"""MessageBox(hwnd,"ok","ok",MB_OK);
""break;
""case WM_CREATE:
"""SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING ,0,LPARAM("OK"));
""case WM_COMMAND:
"""{
""""switch(LOWORD(wParam))
""""{
""""case IDC_CANCEL:
"""""{
""""""EndDialog(hwnd,TRUE);
"""""}
""""}
"""}
""break;
"}
"return 0;
}
我的目的是在显示对话筐时,完成对它上面控件的初始化如combox.list等.
我觉得可能是:
在dailog解手到wm_create的时候,list还没有创建
wm_create是发送到(窗口)控件所在的窗口过程
windows.wm_create ----> wndproc
dialog.wm_create ----> dlgproc
list.wm_create -----> listproc