Windows編程學習筆記 lesson3 窗口創建

消息類型

Windows程序中分爲很多消息,不同的消息可能屬於不同的類型

窗口消息 :與窗口相關的消息

命令消息:用於處理用戶請求,以WM_COMMAND表示的消息

控件通知消息:統一由WM_NOTIFT表示

用戶自定義消息。可以傳遞更復雜的消息


postmessage和sendmessage的區別

sendmessage 和postmessage都是把消息放到消息隊列

sendmessage是阻塞的, 會等發送這個消息處理完成才返回

postmessage是非阻塞的,只管把消息發送出去,處不處理都返回


菜單

使用資源視圖增加菜單

菜單名相當於id號,選中菜單名點擊屬性可以修改id名稱

修改每一個菜單名的ID

在函數MyRegisterClass()中修改

wcex.lpszMenuName = MAKEINTRESOURCEW(IDR_MYMENU);//更換菜單ID,替換成菜單的ID

增加關閉和移動效果

在函數WndProc(HWND, UINT, WPARAM, LPARAM)swicth case中在增加


case ID_CloseWnd: //ID名
	PostQuitMessage(0);
	break;
case ID_MoveWnd:
	MoveWindow(hWnd, 1122, 109, 100, 100, TRUE);//移動到1122,109,大小變爲100x100,重繪
	break;

使用代碼創建菜單

InitInstance(HINSTANCE, int)

HMENU hMenu = CreateMenu();//菜單句柄
HMENU hPopMenu = CreatePopupMenu();//創建出一個彈出菜單

AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hPopMenu, L"test");
AppendMenu(hPopMenu, MF_STRING, /*id號*/2525, L"彈出個對話框");


HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, hMenu, hInstance, nullptr);

在函數MyRegisterClass()中修改

wcex.lpszMenuName =NULL; 

控件

window程序中,一個控件就相當於是一個Window所以可以通過創建窗口的形式創建控件。

常用控件:

按鈕、文本框、下拉列表、列表框等


創建控件

在函數: InitInstance(HINSTANCE, int)裏創建

//window標準控件其實也是一個窗口
//創建按鈕
 HWND hBtn = CreateWindow(_T("Button"), _T("點我"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 100, 100, 100, 50, hWnd,/*id號*/(HMENU)1024, hInstance, NULL);
// 可見,子窗口,按鈕類型
//創建文本框 HWND g_hEdit  
     g_hEdit = CreateWindow(_T("Edit"), _T("我是一個文本框"), WS_CHILD | WS_VISIBLE | ES_MULTILINE|ES_READONLY, 100, 200, 300, 30, hWnd, (HMENU)111, hInstance, NULL);


增加事件

在函數WndProc(HWND, UINT, WPARAM, LPARAM)的swicth case中在增加

case 2525:
	MessageBox(NULL, L"彈出了個對話框",L"aaa",MB_OK);
	break;
case 1024:
	//MessageBox(NULL, L"點擊了BUTTON", L"aaa", MB_OK);
	SetWindowText(g_hEdit, L"aaaa ");
	SetWindowText(hWnd, L"我的窗口");
	WCHAR sz[100];
	GetWindowText(g_hEdit, sz, 99);
	break;

修改顏色創建畫刷

在函數: MyRegisterClass()中修改

HBRUSH BRU = CreateSolidBrush(RGB(0, 255, 0));
wcex.hbrBackground = BRU;



在窗口中增加文字

TextOut(hdc, 152, 203, L"+", 1);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章