
*-- To Tell The Truth --*
Cruz
MAIL
HOME
|
 |
2001年06月22日(金) ■ |
 |
ダイアログからリストビュー表示 |
 |
本日はお仕事編。
悩んでしまったよ。 ダイアログのログイン画面からボタンを押すと、リストビュー画面を表示させるの。 なんとかできたので覚え書。
+++++++++++
まずはダイアログのプロシージャー
LRESULT CALLBACK TopDlgProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HACCEL hAccel; MSG msg;
switch(message) { case WM_DESTROY: EndDialog(hWnd, FALSE); return TRUE;
case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_TOP_WATCH: // ログイン画面を閉じる EndDialog(hWnd, FALSE);
if (!InitApp()) return FALSE; if (!InitInstance(hWnd)) return FALSE;
hAccel = LoadAccelerators( hInst1, MAKEINTRESOURCE(IDR_ALLWATCH_MENU));
while(GetMessage(&msg, NULL, 0, 0)){ if(!TranslateAccelerator(hWnd, hAccel, &msg)){ TranslateMessage(&msg); DispatchMessage(&msg); } } return TRUE;
case IDC_TOP_CONTROL: // ログイン画面を閉じる EndDialog(hWnd, FALSE);
cmn_InitDlg(); DialogBox(hInst1, MAKEINTRESOURCE(IDD_CONTROL_MENU), hWnd, (DLGPROC)ControlProc); return TRUE; ・ ・ ・ 以下略 } break;
} return FALSE; }
// リスト BOOL InitApp() { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = AllMonitorProc; //プロシージャ名 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst1; //インスタンスは外部定義 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = MAKEINTRESOURCE(IDR_ALLWATCH_MENU); wc.lpszClassName = (LPCSTR)szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); return (RegisterClassEx(&wc)); }
//ウィンドウの生成 BOOL InitInstance(HWND hWnd) { HWND hAllLV;
hAllLV = CreateWindow(szClassName, "List Disp", // リストバーに表示される WS_OVERLAPPEDWINDOW, //ウィンドウの種類 CW_USEDEFAULT, //X座標 CW_USEDEFAULT, //Y座標 CW_USEDEFAULT, //幅 CW_USEDEFAULT, //高さ NULL, //親ウィンドウのハンドル、親を作るときはNULL NULL, //メニューハンドル、クラスメニューを使うときはNULL hInst1, //インスタンスハンドル NULL); if(!hAllLV) return FALSE;
ShowWindow(hAllLV, nCmdShow); UpdateWindow(hAllLV); return TRUE; }
そしてリストビュープロシージャで・・・
LRESULT CALLBACK AllMonitorProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int id;
switch(message) { case WM_CREATE: cmn_InitDlg(); hList = CreateWindowEx(0, WC_LISTVIEW, "List View", WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, 0, 0, hWnd, (HMENU)ID_LISTVIEW, hInst1, NULL); break; ・ ・ ・ 以下略 } return 0L; }
どっかで #define ID_LISTVIEW 100 を宣言しておきましょう。
+++++++++++
本日の悩みどころは、ダイアログをマクロ(DialogBox(・・・))で表示させるのと違って、自分でグルグル回って待たせないといけなかったところ。
|
|