翻翻过去那场雪
生产窗体可以使用CreateWindowEx函数。函数功能:该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。函数原型:CreateWindowEx函数创建一个层叠的,自动弹出的(pop-up)或是一个子窗口通过扩展格式。另外这个函数的作用与CreateWindow函数的作用相同。要获得更多的关于创建窗口的信息和关于CreateWindowEx函数参数的详细描述。参见CreateWindowHWND CreateWindowEx(DWOR DdwExStyle, //窗口的扩展风格LPCTSTR lpClassName, //指向注册类名的指针LPCTSTR lpWindowName, //指向窗口名称的指针DWORD dwStyle, //窗口风格int x, //窗口的水平位置int y, //窗口的垂直位置int nWidth, //窗口的宽度int nHeight, //窗口的高度HWND hWndParent, //父窗口的句柄HMENU hMenu, //菜单的句柄或是子窗口的标识符HINSTANCE hInstance, //应用程序实例的句柄LPVOID lpParam //指向窗口的创建数据);例程:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148include<windows.h>#include<stdio.h>LRESULT CALLBACK WinDouProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter);class CWnd{public: CWnd() { m_hWnd = NULL; } BOOL CreateEx( DWORD dwExStyle, // extended window style LPCTSTR lpClassName, // pointer to registered class name LPCTSTR lpWindowName, // pointer to window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HMENU hMenu, // handle to menu or child-window identifier HANDLE hInstance, // handle to application instance LPVOID lpParam // pointer to window-creation data ); BOOL ShowWindow( int nCmdShow ); BOOL UpdateWindow();public: HWND m_hWnd;};BOOL CWnd::CreateEx( DWORD dwExStyle, // extended window style LPCTSTR lpClassName, // pointer to registered class name LPCTSTR lpWindowName, // pointer to window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HMENU hMenu, // handle to menu or child-window identifier HANDLE hInstance, // handle to application instance LPVOID lpParam // pointer to window-creation data){ m_hWnd = ::CreateWindowEx (dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,(HINSTANCE)hInstance,lpParam); if(m_hWnd != NULL) return TRUE; else return FALSE;}BOOL CWnd::ShowWindow(int nCmdShow){ return ::ShowWindow(m_hWnd,nCmdShow);}BOOL CWnd::UpdateWindow(){ return ::UpdateWindow(m_hWnd);}int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // pointer to command line int nCmdShow // show state of window){ WNDCLASS wndclass; //先设计窗口类 wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH); wndclass.hCursor = LoadCursor(NULL,IDC_HELP); wndclass.hIcon = LoadIcon(NULL,IDI_WARNING); wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WinDouProc; wndclass.lpszClassName = "Magic_Maggie"; wndclass.lpszMenuName = 0; wndclass.style = CS_VREDRAW | CS_HREDRAW; //某一个变量原油几个变量去掉一个特征,可以用取反(~)后再进行与(&) //例如:style上去掉CS_NOCLOSE,可以style&~CS_NOCLOSE; RegisterClass(&wndclass); ///注意先建立再注册昂 CWnd wnd; wnd.CreateEx(NULL,"Magic_Maggie","DouDou",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hInstance,NULL); wnd.ShowWindow(SW_SHOWNORMAL); wnd.UpdateWindow(); MSG msg; //消息循环 while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); //触发WinDouProc } return 0;} LRESULT CALLBACK WinDouProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter){ switch(uMsg) { case WM_LBUTTONDOWN: MessageBox(hwnd,"您按下了鼠标左键昂","豆豆的程序",MB_OK); HDC hdc; hdc = GetDC(hwnd); //The GetDC function retrieves a handle to a display device context for the client area of a specified window or for the entire screen. You can use the returned handle in subsequent GDI functions to draw in the device context. TextOut(hdc,0,0,"感谢您对豆豆程序的支持昂",strlen("感谢您对豆豆程序的支持昂")); ReleaseDC(hwnd,hdc); break; case WM_CHAR: char szChar[20]; sprintf(szChar,"Char is %d",wParam); MessageBox(hwnd,szChar,"豆豆的程序",MB_OK); break; case WM_PAINT: PAINTSTRUCT ps; HDC hDc; hDc = BeginPaint(hwnd,&ps); TextOut(hDc,0,0,"这个是重绘滴哦",strlen("这个是重绘滴哦")); EndPaint(hwnd,&ps); break; case WM_CLOSE: //这个case与下边的destroy这个case不要弄错了,否则窗口不出现,但任务管理器中运行 if(IDYES == MessageBox(hwnd,"您真的要退出么?","豆豆的程序",MB_YESNO)) { DestroyWindow(hwnd); } break; case WM_DESTROY: PostQuitMessage(0); //////////////////////////////////////////????????????????????? break; default: return DefWindowProc(hwnd,uMsg,wParam,lParam); // 别忘记了return } return 0;}