久々の更新の割には内容がトレーシングペーパー並だったり・・・
まずはC.NET出のウィンドウの作成方法を書いていきますぞ
C.NETだけでなく、C++でも使用できたはずですが
#include "windows.h" #define MYWNDCLASS "ウィンドウサンプル" HINSTANCE g_hInst; LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg){ case WM_CLOSE: if (MessageBox(hWnd,"終了します、よろしいですか?", MYWNDCLASS,MB_ICONQUESTION | MB_OKCANCEL) == IDOK) { DestroyWindow(hWnd); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return(0); } int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow){ MSG msg; WNDCLASSEX wc; HWND hWnd; DWORD dStatus; g_hInst = hInst; ZeroMemory(&wc,sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); wc.lpfnWndProc = (WNDPROC)WndProc; wc.hInstance = g_hInst; wc.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wc.lpszClassName = MYWNDCLASS; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.style &= WS_SIZEBOX; RegisterClassEx(&wc); dStatus = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; //ウィンドウの作成 hWnd = CreateWindowEx(0, MYWNDCLASS, MYWNDCLASS, dStatus, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, g_hInst, NULL); ShowWindow(hWnd, nCmdShow); while(GetMessage(&msg, NULL, 0, 0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } |
VBで作るとどうなるのかな〜と思われる方がもしやいるかもしれません
残念ながらフォームを作成したと同時にほぼこのプログラムが内示的に宣言されますのでいちいちこんな行数のプログラムを書く必要はありません
まぁ、この点がVBは初心者向けといわれる所以ですが