1、引用
#include <stdlib.h>
//#include <stdio.h>
#include<windows.h>
#include<stdio.h>
#include<shellapi.h>
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32.lib")
2.創建類,句柄
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wp,LPARAM lp);
HWND bhwnd;
//程序入口函數
int WINAPI WinMain(
HINSTANCE hInstance, //handle to current instance
HINSTANCE hPrevInstance,//handle to previous instance
LPSTR lpCmdLine, //command line
int nCmdShow //show state
)
{
//設計一個窗口類
WNDCLASS wndcls;
wndcls.cbClsExtra =0;
wndcls.cbWndExtra =0;
//wndcls.hbrBackground =(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor =LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndcls.hInstance =hInstance; //應用程序實例句柄由WinMain函數傳進來
wndcls.lpfnWndProc =WndProc;//WinSunProc; // 傳入回調函數地址
wndcls.lpszClassName="mywindow";
wndcls.lpszMenuName =NULL;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndcls); //注冊窗口類
//創建窗口,定義一個變量用來保存成功創建窗口后返回的句柄
HWND hwnd;
hwnd=CreateWindow("mywindow","my first application",
WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
//顯示及刷新窗口
//bhwnd=CreateWindow("Button","MyButton",WS_CHILDWINDOW,100,100,100,100,hwnd,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
//Add Btn
bhwnd=CreateWindow("Button","MyButton",WS_CHILDWINDOW,100,100,100,100,hwnd,(HMENU)OK,hInstance,NULL);
ShowWindow(bhwnd,SW_SHOWNORMAL);
//ShellExecute((hwnd)::AfxGetMainWnd(),"open", "http://www.baidu.com/",NULL,NULL, SW_NORMAL);
//定義消息結構體,開始消息循環
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg); //將虛擬鍵消息轉換為字符消息
DispatchMessage(&msg); //把消息傳遞給操作系統
}
return msg.wParam;
}
#define BUTTON_ID 10011 //按鈕ID
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wp,LPARAM lp)
{
HDC hdc;
PAINTSTRUCT ps;
static HWND btnWnd;
static bool flag=false;
switch(message)
{
case WM_CREATE:btnWnd =CreateWindow("Button","按鈕",WS_VISIBLE|WS_CHILD,
10,10,150,120,hwnd,(HMENU)BUTTON_ID,0,0);break; //倒數第3個為按鈕子窗口ID
case WM_PAINT:break;
case WM_COMMAND: //按鈕消息WM_COMMAND來處理
switch(LOWORD(wp)) //wParam的低字節為點擊的按鈕的ID
{ //下面隨便寫點什么啦!
case BUTTON_ID:
//SetWindowText(btnWnd,"再點我試試?");
if(flag==true)
{
SendMessage(btnWnd,WM_SETTEXT,0, LPARAM("干嘛點我?"));
}
else
{
SendMessage(btnWnd,WM_SETTEXT,0, LPARAM("再點試試?"));
MessageBox(hwnd,"HHHHHHH","message",0);
//SetWindowText(btnWnd,(LPCSTR)"點點");
}
flag = !flag;
//MessageBox(hwnd,"你點我干什么?", "點我啦!",MB_OK);
break;
default:break;
}
break;
case WM_DESTROY:PostQuitMessage(0);return 0;
default:break;
}
return DefWindowProc(hwnd,message,wp,lp);
}