Windows环境下32位汇编程序设计C版code--第五章(三)
(三)窗口子控件
?
#include <windows.h> #include "resource.h"HINSTANCE hInst; TCHAR szBuffer[128]; HBITMAP hBmp1 = 0, hBmp2 = 0, hTemp = 0; static int iScrPos = 2; BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch(uMsg){case WM_INITDIALOG:SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, MAKEINTRESOURCE(IDI_MAIN)));SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_ADDSTRING, 0, (LPARAM)TEXT("Hello World!"));SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_ADDSTRING, 0, (LPARAM)TEXT("你看到標題欄變化了嗎?"));SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_ADDSTRING, 0, (LPARAM)TEXT("自定義"));SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_SETCURSEL, 0, (LPARAM)0);EnableWindow(GetDlgItem(hDlg, IDC_CUSTOMTEXT), FALSE);hBmp1 = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_1));hBmp2 = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_2));CheckDlgButton(hDlg, IDC_SHOWBMP, BST_CHECKED);CheckDlgButton(hDlg, IDC_ALOW, BST_CHECKED);CheckDlgButton(hDlg, IDC_MODALFRAME, BST_CHECKED);SendDlgItemMessage(hDlg, IDC_SCROLL, SBM_SETRANGE, 0, 100);return TRUE;case WM_CLOSE:DeleteObject(hBmp1);DeleteObject(hBmp2);EndDialog(hDlg, 0);return TRUE;case WM_COMMAND:switch(LOWORD(wParam)){case IDCANCEL:DeleteObject(hBmp1);DeleteObject(hBmp2);EndDialog(hDlg, 0);return TRUE;case IDOK:hTemp = hBmp1;hBmp1 = hBmp2;hBmp2 = hTemp;/*hBmp1 == (HBITMAP)SendDlgItemMessage(hDlg, IDC_BMP, STM_GETIMAGE, IMAGE_BITMAP, (LPARAM)0) ?SendDlgItemMessage(hDlg, IDC_BMP, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp2) :SendDlgItemMessage(hDlg, IDC_BMP, STM_SETIMAGE, IMAGE_BITMAP,(LPARAM)hBmp1);*/SendDlgItemMessage(hDlg, IDC_BMP, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp1);return TRUE;case IDC_ONTOP:if(BST_CHECKED == IsDlgButtonChecked(hDlg, IDC_ONTOP))SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);elseSetWindowPos(hDlg, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);return TRUE;case IDC_SHOWBMP:if(IsWindowVisible(GetDlgItem(hDlg, IDC_BMP)))ShowWindow(GetDlgItem(hDlg, IDC_BMP), SW_HIDE);elseShowWindow(GetDlgItem(hDlg, IDC_BMP), SW_SHOW);return TRUE;case IDC_ALOW:if(BST_CHECKED == IsDlgButtonChecked(hDlg, IDC_ALOW))EnableWindow(GetDlgItem(hDlg, IDOK), TRUE);elseEnableWindow(GetDlgItem(hDlg, IDOK), FALSE);return TRUE;case IDC_MODALFRAME:SetWindowLong(hDlg, GWL_STYLE, ~WS_THICKFRAME & GetWindowLong(hDlg, GWL_STYLE));return TRUE;case IDC_THICKFRAME:SetWindowLong(hDlg, GWL_STYLE, WS_THICKFRAME | GetWindowLong(hDlg, GWL_STYLE));return TRUE;case IDC_TITLETEXT:if(CBN_SELENDOK == HIWORD(wParam))if(2 == SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_GETCURSEL, 0, 0)){EnableWindow(GetDlgItem(hDlg, IDC_CUSTOMTEXT), TRUE);}else{SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_GETLBTEXT, SendDlgItemMessage(hDlg, IDC_TITLETEXT, CB_GETCURSEL, 0, 0), (LPARAM)szBuffer); SetWindowText(hDlg, szBuffer); EnableWindow(GetDlgItem(hDlg, IDC_CUSTOMTEXT), FALSE);}return TRUE;case IDC_CUSTOMTEXT:GetDlgItemText(hDlg, IDC_CUSTOMTEXT, szBuffer, sizeof(szBuffer)/sizeof(TCHAR));SetWindowText(hDlg, szBuffer);return TRUE;}break;case WM_HSCROLL:switch(LOWORD(wParam)){case SB_LINELEFT:iScrPos = --iScrPos;break;case SB_LINERIGHT:iScrPos = ++iScrPos;break;case SB_PAGELEFT:iScrPos = iScrPos - 10;break;case SB_PAGERIGHT:iScrPos = iScrPos + 10;break;case SB_THUMBPOSITION:case SB_THUMBTRACK:iScrPos = (int)HIWORD(wParam);break;}if(iScrPos < 0)iScrPos = 0;else if(iScrPos > 100)iScrPos = 100;SetDlgItemInt(hDlg, IDC_VALUE, iScrPos, FALSE);SendDlgItemMessage(hDlg, IDC_SCROLL, SBM_SETPOS, (WPARAM)iScrPos, (LPARAM)TRUE);return TRUE;}return FALSE; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) {hInst = hInstance;DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DlgProc, 0);return 0; }
總結
以上是生活随笔為你收集整理的Windows环境下32位汇编程序设计C版code--第五章(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows环境下32位汇编程序设计C
- 下一篇: NS2安装错误系列(1)