# include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
HWND hwnd;
    MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="window";
char lpszTitle[]="My_window"; wndclass.style=0;
    wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,"icontest");
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName; if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return false;
} hwnd=CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd); while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
 PostQuitMessage(0);
    default:
 return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
以上代码是我用windowsAPI函数写的一个空白窗口,主要是想实现窗口标题左上角的图标效果。wndclass.hIcon=LoadIcon(NULL,"icontest");中的“icontest”是我定义好的一个图标资源,可运行后只是生成的可执行程序图标变成了定义的图标,而窗口标题左上角的图标未变化,仍为visual c++下默认的图标。在以前的程序里我曾用上边的方法实现了可执行程序和窗口标题栏图标的同时改变,可现在无论怎样测试,都无法再次实现。希望能得到大家的帮助,谢谢!

解决方案 »

  1.   

    wndclass.hIcon=LoadIcon(NULL,"icontest");你的LoadIcon的第一个参数不能是NULL改为wndclass.hIcon=LoadIcon(hInstance,"icontest");
      

  2.   

    不好意思,改.rc不行,.rc中对话框的定义中没有改系统菜单图标这一项资源编辑器的图标只能在mfc程序中可以
      

  3.   

    找到了,这样
    case WM_INITDIALOG:
    HICON hIcon;
    hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_SMALL));
    if(hIcon)
    {
    SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
    }
    return TRUE;