#include<windows.h> #include<stdio.h> LRESULT CALLBACK WinSunProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASS wndcls; wndcls.cbClsExtra=0; wndcls.cbWndExtra=0; wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); wndcls.hInstance=hInstance; wndcls.lpfnWndProc=WinSunProc; wndcls.lpszClassName="zhang2012"; wndcls.lpszMenuName=NULL; wndcls.style=CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndcls); HWND hwnd; hwnd=CreateWindow("zhang2012","第一windows窗口",WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL,hInstance,NULL); ShowWindow(hwnd,SW_SHOWNORMAL); UpdateWindow(hwnd); MSG msg; while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WinSunProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch(message){ case WM_PAINT: HDC hDC; PAINTSTRUCT ps; hDC=BeginPaint(hwnd,&ps); TextOut(hDC,0,0,"hello,world",strlen("hello,world")); EndPaint(hwnd,&ps); break; case WM_LBUTTONDOWN: MessageBox(hwnd,"click mouse","little frame",0); HDC hdc; hdc=GetDC(hwnd); TextOut(hdc,0,50,"hello,this is my first frame",strlen("hello,this is my first frame")); ReleaseDC(hwnd,hdc); break; case WM_CLOSE: if(IDYES==MessageBox(hwnd,"close or not","little frame",MB_YESNO)){ DestroyWindow(hwnd); } break; case WM_DESTROY: PostQuitMessage(0); break; case WM_CHAR: char szchar[20]; sprintf(szchar,"char is %d",wParam); MessageBox(hwnd,szchar,"little frame",0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; }
以上程序在VC6.0能运行,因为其字符是ASCII
#include<windows.h> #include<stdio.h> LRESULT CALLBACK WinSunProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASS wndcls; wndcls.cbClsExtra=0; wndcls.cbWndExtra=0; wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); wndcls.hInstance=hInstance; wndcls.lpfnWndProc=WinSunProc; wndcls.lpszClassName=L"zhang2012"; wndcls.lpszMenuName=NULL; wndcls.style=CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndcls); HWND hwnd; hwnd=CreateWindow(L"zhang2012",L"第一windows窗口",WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL,hInstance,NULL); ShowWindow(hwnd,SW_SHOWNORMAL); UpdateWindow(hwnd); MSG msg; while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WinSunProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch(message){ case WM_PAINT: HDC hDC; PAINTSTRUCT ps; hDC=BeginPaint(hwnd,&ps); TextOut(hDC,0,0,L"hello,world",strlen("hello,world")); EndPaint(hwnd,&ps); break; case WM_LBUTTONDOWN: MessageBox(hwnd,L"click mouse",L"little frame",0); HDC hdc; hdc=GetDC(hwnd); TextOut(hdc,0,50,L"hello,this is my first frame",strlen("hello,this is my first frame")); ReleaseDC(hwnd,hdc); break; case WM_CLOSE: if(IDYES==MessageBox(hwnd,L"close or not",L"little frame",MB_YESNO)){ DestroyWindow(hwnd); } break; case WM_DESTROY: PostQuitMessage(0); break; case WM_CHAR: wchar_t szchar[20]; char zchar[20]; sprintf(zchar,"char is %d",wParam); MessageBox(hwnd,szchar,L"little frame",0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; }
可以在VS2008运行,字符集是unicode
MFC 按钮设置:
添加按钮ID_BTN_EDIT 的成员变量 m_btnedit,
按钮不可用(变灰) m_btnedit. EnableWindow (0);
按钮可用 m_btnedit. EnableWindow (1);
按钮不显示 (消失) m_btnedit.ShowWindow (0);
按钮显示 出现 m_btnedit.ShowWindow (0);