Four files in my project:
main.cpp
Code:
#include "main.h"
int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil){
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
HINSTANCE RichDLL;
hinst=hThisInstance;
RichDLL=LoadLibrary("msftedit.dll");
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
InitCommonControls();
if (!RegisterClassEx (&wincl)){
return 0;
}
hwnd=CreateWindowEx(0,szClassName,"Dictionary",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,544,
375,HWND_DESKTOP,NULL,hThisInstance,NULL);
ShowWindow (hwnd, nFunsterStil);
while (GetMessage (&messages, NULL, 0, 0)){
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch (message){
case WM_CREATE:
controls[0]=CreateWindowEx(WS_EX_CLIENTEDGE,"RichEdit50W",NULL,WS_CHILD|WS_VISIBLE,
3,0,100,100,hwnd,(HMENU)300,hinst,NULL);
list.Init(106,10,400,120,hwnd,300,LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);
list.SetDefaultColumnStyle(LVCF_TEXT|LVCF_SUBITEM|LVCF_WIDTH|LVCF_FMT,LVCFMT_LEFT);
list.AddColumn("First",150);
list.AddColumn("Second",250);
break;
case WM_COMMAND:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
main.h
Code:
#ifndef H_MAIN
#define H_MAIN
#define _WIN32_IE 0x601
#include <windows.h>
#include <richedit.h>
#include <commctrl.h>
#include "listview.h"
#define N_OTSI WM_USER+666
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
extern char szClassName[];
extern HINSTANCE hinst;
extern HWND controls[10];
extern MyLVC list;
#endif
global.cpp
Code:
#include "main.h"
char szClassName[] ="WindowsApp";
HINSTANCE hinst;
HWND controls[10];
HINSTANCE RichDLL;
MyLVC list;
listview.h
Code:
#ifndef H_LIST
#define H_LIST
#include "main.h"
class MyLVC{
public:
MyLVC();
~MyLVC();
void Init(int xpos,int ypos,int xlen,int ylen,HWND owner,int lid,int style=0,int sx=0);
void SetDefaultColumnStyle(int mask,int fmt);
void AddColumn(char* name,int width,int mask=-1,int fmt=-1);
private:
int DefMask,DefFmt;
int colid;
HWND handle;
};
MyLVC::MyLVC(){
colid=DefMask=DefFmt=0;
return;
}
MyLVC::~MyLVC(){
return;
}
void MyLVC::SetDefaultColumnStyle(int mask, int fmt){
DefMask=mask;
DefFmt=fmt;
return;
}
void MyLVC::Init(int xpos,int ypos,int xlen,int ylen,HWND owner,int lid,int style,int sx){
handle=CreateWindowEx(0,WC_LISTVIEW,NULL,WS_CHILD|WS_VISIBLE|LVS_REPORT|sx,xpos,
ypos,xlen,ylen,owner,(HMENU)lid,GetModuleHandle(NULL),0);
SendMessage(handle,LVM_SETEXTENDEDLISTVIEWSTYLE,0,style);
return;
}
void MyLVC::AddColumn(char* name,int width,int mask,int fmt){
LVCOLUMN lvc={0};
if(mask<0){ lvc.mask=DefMask; }
else{ lvc.mask=mask; }
if(fmt<0){ lvc.fmt=DefFmt; }
else{ lvc.fmt=fmt; }
lvc.cx=width;
lvc.pszText=name;
SendMessage(handle,LVM_INSERTCOLUMN,colid,(LPARAM)&lvc);
colid++;
return;
}
#endif