LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect; static HWND hwndLabel[2] , hwndBt[3] , hwndEdit[3] , hwndList;
static char *szLabelText[] = {"服务器IP" , "单词" } , 
        *szBtText[]      = {"连接"     , "查询" , "简明意思"};
int i; static HBRUSH hBrushStatic;
HFONT ghStaticFont;
HINSTANCE hInstance; char ServerAddr[20] , Word[80] , RecBuf[80];
switch( message )
{
case WM_CREATE:
hInstance = (HINSTANCE) GetWindowLong(hwnd , GWL_HINSTANCE);
for(i = 0 ; i < 2 ; i++)
{ hwndLabel[i] = CreateWindow(TEXT("static"),szLabelText[i],
                        WS_CHILD | WS_VISIBLE | SS_CENTER ,
10 , 10 + 30 * i , 70 , 22 , 
hwnd , (HMENU)i,
hInstance , NULL); if(i == 1)
hwndBt[i] = CreateWindow(TEXT("button") , szBtText[i] , 
 WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON ,
 300 , 10 + 30 * i , 70 , 23 ,
 hwnd , (HMENU)(i+1) ,
 hInstance , NULL); hwndEdit[i] = CreateWindow(TEXT("edit") , NULL ,
                       WS_CHILD | WS_BORDER | ES_LEFT   |WS_VISIBLE,
   87 , 10 + 30 * i , 190 , 22 ,
   hwnd , (HMENU)1 , 
   hInstance , NULL);
ghStaticFont =  (HFONT)GetStockObject(SYSTEM_FIXED_FONT);
    SendMessage(hwndLabel[i],WM_SETFONT,(WPARAM)ghStaticFont,MAKELPARAM(TRUE,0));
SendMessage(hwndBt[i],WM_SETFONT,(WPARAM)ghStaticFont,MAKELPARAM(TRUE,0));

                     
} hwndBt[2] = CreateWindow(TEXT("button") , szBtText[2] , 
                     WS_CHILD | WS_VISIBLE | BS_GROUPBOX ,
 10 , 70 , 400 , 200 ,
 hwnd , (HMENU)i ,
 hInstance , NULL); hwndList = CreateWindow(TEXT("edit") , NULL , 
                     WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_READONLY,
 15 , 100 , 350 , 160 ,
 hwnd , (HMENU)i ,
 hInstance , NULL); hBrushStatic = CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT)); ghStaticFont =  (HFONT)GetStockObject(SYSTEM_FIXED_FONT);
SendMessage(hwndBt[2] , WM_SETFONT , (WPARAM)ghStaticFont , MAKELPARAM(TRUE , 0));
 
SendMessage(hwndList , WM_SETFONT , (WPARAM)ghStaticFont , MAKELPARAM(TRUE , 0)); return 0; case WM_SIZE:
return 0;
case WM_SETFOCUS:
SetFocus(hwndEdit[0]);
return 0; case WM_MOUSEMOVE:
return 0;
case WM_COMMAND:
switch(wParam)
{
case ID_CONNECT:
// GetWindowText(hwndEdit[0] , ServerAddr , 20);
// ConnectToServer(ServerAddr , &ClientSocket);
break;
case ID_SEARCH:
GetWindowText(hwndEdit[0] , ServerAddr , 20);
if(!CheckAddr(ServerAddr))
{
MessageBox(hwnd , "IP地址格式错误" , "错误" , MB_OK);
return 0;
}
if(!ConnectToServer(ServerAddr , &ClientSocket))
{
MessageBox(hwnd , "服务器连接失败" , "失败" , MB_OK);
return 0;
}
GetWindowText(hwndEdit[1] , Word , 80);
Trim(Word);
strcat(Word,"\r\n");
if(!SeachWord(ClientSocket , Word , RecBuf))
{
MessageBox(hwnd , "单词查找失败" , "失败" , MB_OK);
return 0;
} SetWindowText(hwndList , RecBuf);
break;
default :
break;
}
return 0; case WM_PAINT:
hdc = BeginPaint( hwnd, &ps ); GetClientRect( hwnd, &rect );
// DrawText( hdc, TEXT("Hello,Windows 98!"), -1, &rect,
//    DT_SINGLELINE | DT_CENTER | DT_VCENTER ); EndPaint( hwnd, &ps ); return 0; case WM_CTLCOLORSTATIC:
SetTextColor((HDC)wParam , RGB(0 , 0 , 0));
SetBkColor((HDC)wParam , GetSysColor(COLOR_BTNHIGHLIGHT));
return (LRESULT)hBrushStatic; case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hwnd, message, wParam, lParam );
}
有关SDK的知识都告诉我,还有SDK\MFC\API这之间到底是什么关系??

解决方案 »

  1.   

    呵呵,这是消息循环的响应函数,也叫消息回调函数。switch( message )是判断到底是什么消息,case WM_CREATE:等这些都是消息宏。具体的建议LZ随便找本C++创建窗口的书都可以解释的很详细。
      

  2.   

    一般win32 sdk开发是指 用c语言加上windows api直接 开发windows应用。
    微软mfc是windows api的c++封装,不过我看windows操作系统上的微软开发的很多上层应用,都是用sdk开发的,他们公司反而不用mfc.
    api就是os提供的系统接口
      

  3.   

    这个函数是窗口消息回调函数,由应用进程提供,操作系统调用,并且在用户的消息循环线程中执行!wm_create消息是用户调用createwindow函数创建第一个窗口时接收到的消息,然后再wm_create消息里边创建 以第一个窗口为父窗口的子窗口(也就是控件)。创建完后设置子窗口的字体另外一个重要的就是wm_commad,其中wParam参数就是用户点击的字窗口资源id,然后根据不同的字窗口编写不同的处理
      

  4.   

    有关SDK的知识都告诉我,还有SDK\MFC\API这之间到底是什么关系??sdk:是一個開發包,里面包括系统api得声明与定义,通过引入sdk开发包,你才可以使用那些系统apimfc:是一个开发框架,实际上也可以理解为用面向对象思想使用c++封装好的sdk。实际上就是sdk得面向对象设计实现。api:应用程序接口,也就是微软 给你提供的用于向系统发送命令的功能函数。
      

  5.   

    text("static")是创建一个什么?
      

  6.   

    TEXT("static")吗?是一个窗口类名,就是一般的静态文本控件,
      

  7.   

    text("static")是创建一个什么?
      

  8.   

    回贴的人真多,以上程序是windows程序设计的基础,建议去读《Windows程序设计》前几章,这样才能真正的搞明白!
      

  9.   

    creatwindow()里面有没有设置弹出窗口的坐标和大小的?
    不好意思,我刚接触sdk,问题比较多,我会加分做为补偿的
    比较初级,不好意思